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/Dataproc.hs b/gen/Network/Google/Dataproc.hs
--- a/gen/Network/Google/Dataproc.hs
+++ b/gen/Network/Google/Dataproc.hs
@@ -600,6 +600,7 @@
     -- ** SoftwareConfig
     , SoftwareConfig
     , softwareConfig
+    , scOptionalComponents
     , scImageVersion
     , scProperties
 
diff --git a/gen/Network/Google/Dataproc/Types.hs b/gen/Network/Google/Dataproc/Types.hs
--- a/gen/Network/Google/Dataproc/Types.hs
+++ b/gen/Network/Google/Dataproc/Types.hs
@@ -456,6 +456,7 @@
     -- * SoftwareConfig
     , SoftwareConfig
     , softwareConfig
+    , scOptionalComponents
     , scImageVersion
     , scProperties
 
@@ -657,4 +658,4 @@
 
 -- | 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/Dataproc/Types/Product.hs b/gen/Network/Google/Dataproc/Types/Product.hs
--- a/gen/Network/Google/Dataproc/Types/Product.hs
+++ b/gen/Network/Google/Dataproc/Types/Product.hs
@@ -23,5507 +23,5720 @@
 -- | Encapsulates the full scoping used to reference a job.
 --
 -- /See:/ 'jobReference' smart constructor.
-data JobReference = JobReference'
-    { _jrJobId     :: !(Maybe Text)
-    , _jrProjectId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jrJobId'
---
--- * 'jrProjectId'
-jobReference
-    :: JobReference
-jobReference =
-    JobReference'
-    { _jrJobId = Nothing
-    , _jrProjectId = Nothing
-    }
-
--- | Optional. The job ID, which must be unique within the project. The job
--- ID is generated by the server upon job submission or provided by the
--- user as a means to perform retries without creating duplicate jobs. The
--- ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),
--- or hyphens (-). The maximum length is 100 characters.
-jrJobId :: Lens' JobReference (Maybe Text)
-jrJobId = lens _jrJobId (\ s a -> s{_jrJobId = a})
-
--- | Required. The ID of the Google Cloud Platform project that the job
--- belongs to.
-jrProjectId :: Lens' JobReference (Maybe Text)
-jrProjectId
-  = lens _jrProjectId (\ s a -> s{_jrProjectId = a})
-
-instance FromJSON JobReference where
-        parseJSON
-          = withObject "JobReference"
-              (\ o ->
-                 JobReference' <$>
-                   (o .:? "jobId") <*> (o .:? "projectId"))
-
-instance ToJSON JobReference where
-        toJSON JobReference'{..}
-          = object
-              (catMaybes
-                 [("jobId" .=) <$> _jrJobId,
-                  ("projectId" .=) <$> _jrProjectId])
-
--- | 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])
-
--- | Optional. A mapping of property names to values, used to configure
--- PySpark. Properties that conflict with values set by the Cloud Dataproc
--- API may be overwritten. Can include properties set in
--- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
---
--- /See:/ 'pySparkJobProperties' smart constructor.
-newtype PySparkJobProperties = PySparkJobProperties'
-    { _psjpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PySparkJobProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psjpAddtional'
-pySparkJobProperties
-    :: HashMap Text Text -- ^ 'psjpAddtional'
-    -> PySparkJobProperties
-pySparkJobProperties pPsjpAddtional_ =
-    PySparkJobProperties'
-    { _psjpAddtional = _Coerce # pPsjpAddtional_
-    }
-
-psjpAddtional :: Lens' PySparkJobProperties (HashMap Text Text)
-psjpAddtional
-  = lens _psjpAddtional
-      (\ s a -> s{_psjpAddtional = a})
-      . _Coerce
-
-instance FromJSON PySparkJobProperties where
-        parseJSON
-          = withObject "PySparkJobProperties"
-              (\ o ->
-                 PySparkJobProperties' <$> (parseJSONObject o))
-
-instance ToJSON PySparkJobProperties where
-        toJSON = toJSON . _psjpAddtional
-
--- | The location of diagnostic output.
---
--- /See:/ 'diagnoseClusterResults' smart constructor.
-newtype DiagnoseClusterResults = DiagnoseClusterResults'
-    { _dcrOutputURI :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiagnoseClusterResults' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcrOutputURI'
-diagnoseClusterResults
-    :: DiagnoseClusterResults
-diagnoseClusterResults =
-    DiagnoseClusterResults'
-    { _dcrOutputURI = Nothing
-    }
-
--- | Output only. The Cloud Storage URI of the diagnostic output. The output
--- report is a plain text file with a summary of collected diagnostics.
-dcrOutputURI :: Lens' DiagnoseClusterResults (Maybe Text)
-dcrOutputURI
-  = lens _dcrOutputURI (\ s a -> s{_dcrOutputURI = a})
-
-instance FromJSON DiagnoseClusterResults where
-        parseJSON
-          = withObject "DiagnoseClusterResults"
-              (\ o ->
-                 DiagnoseClusterResults' <$> (o .:? "outputUri"))
-
-instance ToJSON DiagnoseClusterResults where
-        toJSON DiagnoseClusterResults'{..}
-          = object
-              (catMaybes [("outputUri" .=) <$> _dcrOutputURI])
-
--- | Optional. The config settings for Compute Engine resources in an
--- instance group, such as a master or worker group.
---
--- /See:/ 'instanceGroupConfig' smart constructor.
-data InstanceGroupConfig = InstanceGroupConfig'
-    { _igcNumInstances       :: !(Maybe (Textual Int32))
-    , _igcDiskConfig         :: !(Maybe DiskConfig)
-    , _igcIsPreemptible      :: !(Maybe Bool)
-    , _igcImageURI           :: !(Maybe Text)
-    , _igcAccelerators       :: !(Maybe [AcceleratorConfig])
-    , _igcInstanceNames      :: !(Maybe [Text])
-    , _igcManagedGroupConfig :: !(Maybe ManagedGroupConfig)
-    , _igcMachineTypeURI     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceGroupConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'igcNumInstances'
---
--- * 'igcDiskConfig'
---
--- * 'igcIsPreemptible'
---
--- * 'igcImageURI'
---
--- * 'igcAccelerators'
---
--- * 'igcInstanceNames'
---
--- * 'igcManagedGroupConfig'
---
--- * 'igcMachineTypeURI'
-instanceGroupConfig
-    :: InstanceGroupConfig
-instanceGroupConfig =
-    InstanceGroupConfig'
-    { _igcNumInstances = Nothing
-    , _igcDiskConfig = Nothing
-    , _igcIsPreemptible = Nothing
-    , _igcImageURI = Nothing
-    , _igcAccelerators = Nothing
-    , _igcInstanceNames = Nothing
-    , _igcManagedGroupConfig = Nothing
-    , _igcMachineTypeURI = Nothing
-    }
-
--- | Optional. The number of VM instances in the instance group. For master
--- instance groups, must be set to 1.
-igcNumInstances :: Lens' InstanceGroupConfig (Maybe Int32)
-igcNumInstances
-  = lens _igcNumInstances
-      (\ s a -> s{_igcNumInstances = a})
-      . mapping _Coerce
-
--- | Optional. Disk option config settings.
-igcDiskConfig :: Lens' InstanceGroupConfig (Maybe DiskConfig)
-igcDiskConfig
-  = lens _igcDiskConfig
-      (\ s a -> s{_igcDiskConfig = a})
-
--- | Optional. Specifies that this instance group contains preemptible
--- instances.
-igcIsPreemptible :: Lens' InstanceGroupConfig (Maybe Bool)
-igcIsPreemptible
-  = lens _igcIsPreemptible
-      (\ s a -> s{_igcIsPreemptible = a})
-
--- | Optional. The Compute Engine image resource used for cluster instances.
--- It can be specified or may be inferred from
--- SoftwareConfig.image_version.
-igcImageURI :: Lens' InstanceGroupConfig (Maybe Text)
-igcImageURI
-  = lens _igcImageURI (\ s a -> s{_igcImageURI = a})
-
--- | Optional. The Compute Engine accelerator configuration for these
--- instances.Beta Feature: This feature is still under development. It may
--- be changed before final release.
-igcAccelerators :: Lens' InstanceGroupConfig [AcceleratorConfig]
-igcAccelerators
-  = lens _igcAccelerators
-      (\ s a -> s{_igcAccelerators = a})
-      . _Default
-      . _Coerce
-
--- | Output only. The list of instance names. Cloud Dataproc derives the
--- names from cluster_name, num_instances, and the instance group.
-igcInstanceNames :: Lens' InstanceGroupConfig [Text]
-igcInstanceNames
-  = lens _igcInstanceNames
-      (\ s a -> s{_igcInstanceNames = a})
-      . _Default
-      . _Coerce
-
--- | Output only. The config for Compute Engine Instance Group Manager that
--- manages this group. This is only used for preemptible instance groups.
-igcManagedGroupConfig :: Lens' InstanceGroupConfig (Maybe ManagedGroupConfig)
-igcManagedGroupConfig
-  = lens _igcManagedGroupConfig
-      (\ s a -> s{_igcManagedGroupConfig = a})
-
--- | Optional. The Compute Engine machine type used for cluster instances.A
--- full URL, partial URI, or short name are valid. Examples:
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/zones\/us-east1-a\/machineTypes\/n1-standard-2
--- projects\/[project_id]\/zones\/us-east1-a\/machineTypes\/n1-standard-2
--- n1-standard-2Auto Zone Exception: If you are using the Cloud Dataproc
--- Auto Zone Placement feature, you must use the short name of the machine
--- type resource, for example, n1-standard-2.
-igcMachineTypeURI :: Lens' InstanceGroupConfig (Maybe Text)
-igcMachineTypeURI
-  = lens _igcMachineTypeURI
-      (\ s a -> s{_igcMachineTypeURI = a})
-
-instance FromJSON InstanceGroupConfig where
-        parseJSON
-          = withObject "InstanceGroupConfig"
-              (\ o ->
-                 InstanceGroupConfig' <$>
-                   (o .:? "numInstances") <*> (o .:? "diskConfig") <*>
-                     (o .:? "isPreemptible")
-                     <*> (o .:? "imageUri")
-                     <*> (o .:? "accelerators" .!= mempty)
-                     <*> (o .:? "instanceNames" .!= mempty)
-                     <*> (o .:? "managedGroupConfig")
-                     <*> (o .:? "machineTypeUri"))
-
-instance ToJSON InstanceGroupConfig where
-        toJSON InstanceGroupConfig'{..}
-          = object
-              (catMaybes
-                 [("numInstances" .=) <$> _igcNumInstances,
-                  ("diskConfig" .=) <$> _igcDiskConfig,
-                  ("isPreemptible" .=) <$> _igcIsPreemptible,
-                  ("imageUri" .=) <$> _igcImageURI,
-                  ("accelerators" .=) <$> _igcAccelerators,
-                  ("instanceNames" .=) <$> _igcInstanceNames,
-                  ("managedGroupConfig" .=) <$> _igcManagedGroupConfig,
-                  ("machineTypeUri" .=) <$> _igcMachineTypeURI])
-
--- | A Cloud Dataproc job for running Apache Spark
--- (http:\/\/spark.apache.org\/) applications on YARN.
---
--- /See:/ 'sparkJob' smart constructor.
-data SparkJob = SparkJob'
-    { _sjArgs           :: !(Maybe [Text])
-    , _sjMainJarFileURI :: !(Maybe Text)
-    , _sjJarFileURIs    :: !(Maybe [Text])
-    , _sjFileURIs       :: !(Maybe [Text])
-    , _sjArchiveURIs    :: !(Maybe [Text])
-    , _sjMainClass      :: !(Maybe Text)
-    , _sjLoggingConfig  :: !(Maybe LoggingConfig)
-    , _sjProperties     :: !(Maybe SparkJobProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SparkJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sjArgs'
---
--- * 'sjMainJarFileURI'
---
--- * 'sjJarFileURIs'
---
--- * 'sjFileURIs'
---
--- * 'sjArchiveURIs'
---
--- * 'sjMainClass'
---
--- * 'sjLoggingConfig'
---
--- * 'sjProperties'
-sparkJob
-    :: SparkJob
-sparkJob =
-    SparkJob'
-    { _sjArgs = Nothing
-    , _sjMainJarFileURI = Nothing
-    , _sjJarFileURIs = Nothing
-    , _sjFileURIs = Nothing
-    , _sjArchiveURIs = Nothing
-    , _sjMainClass = Nothing
-    , _sjLoggingConfig = Nothing
-    , _sjProperties = Nothing
-    }
-
--- | Optional. The arguments to pass to the driver. Do not include arguments,
--- such as --conf, that can be set as job properties, since a collision may
--- occur that causes an incorrect job submission.
-sjArgs :: Lens' SparkJob [Text]
-sjArgs
-  = lens _sjArgs (\ s a -> s{_sjArgs = a}) . _Default .
-      _Coerce
-
--- | The HCFS URI of the jar file that contains the main class.
-sjMainJarFileURI :: Lens' SparkJob (Maybe Text)
-sjMainJarFileURI
-  = lens _sjMainJarFileURI
-      (\ s a -> s{_sjMainJarFileURI = a})
-
--- | Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark
--- driver and tasks.
-sjJarFileURIs :: Lens' SparkJob [Text]
-sjJarFileURIs
-  = lens _sjJarFileURIs
-      (\ s a -> s{_sjJarFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. HCFS URIs of files to be copied to the working directory of
--- Spark drivers and distributed tasks. Useful for naively parallel tasks.
-sjFileURIs :: Lens' SparkJob [Text]
-sjFileURIs
-  = lens _sjFileURIs (\ s a -> s{_sjFileURIs = a}) .
-      _Default
-      . _Coerce
-
--- | Optional. HCFS URIs of archives to be extracted in the working directory
--- of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz,
--- .tgz, and .zip.
-sjArchiveURIs :: Lens' SparkJob [Text]
-sjArchiveURIs
-  = lens _sjArchiveURIs
-      (\ s a -> s{_sjArchiveURIs = a})
-      . _Default
-      . _Coerce
-
--- | The name of the driver\'s main class. The jar file that contains the
--- class must be in the default CLASSPATH or specified in jar_file_uris.
-sjMainClass :: Lens' SparkJob (Maybe Text)
-sjMainClass
-  = lens _sjMainClass (\ s a -> s{_sjMainClass = a})
-
--- | Optional. The runtime log config for job execution.
-sjLoggingConfig :: Lens' SparkJob (Maybe LoggingConfig)
-sjLoggingConfig
-  = lens _sjLoggingConfig
-      (\ s a -> s{_sjLoggingConfig = a})
-
--- | Optional. A mapping of property names to values, used to configure
--- Spark. Properties that conflict with values set by the Cloud Dataproc
--- API may be overwritten. Can include properties set in
--- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
-sjProperties :: Lens' SparkJob (Maybe SparkJobProperties)
-sjProperties
-  = lens _sjProperties (\ s a -> s{_sjProperties = a})
-
-instance FromJSON SparkJob where
-        parseJSON
-          = withObject "SparkJob"
-              (\ o ->
-                 SparkJob' <$>
-                   (o .:? "args" .!= mempty) <*>
-                     (o .:? "mainJarFileUri")
-                     <*> (o .:? "jarFileUris" .!= mempty)
-                     <*> (o .:? "fileUris" .!= mempty)
-                     <*> (o .:? "archiveUris" .!= mempty)
-                     <*> (o .:? "mainClass")
-                     <*> (o .:? "loggingConfig")
-                     <*> (o .:? "properties"))
-
-instance ToJSON SparkJob where
-        toJSON SparkJob'{..}
-          = object
-              (catMaybes
-                 [("args" .=) <$> _sjArgs,
-                  ("mainJarFileUri" .=) <$> _sjMainJarFileURI,
-                  ("jarFileUris" .=) <$> _sjJarFileURIs,
-                  ("fileUris" .=) <$> _sjFileURIs,
-                  ("archiveUris" .=) <$> _sjArchiveURIs,
-                  ("mainClass" .=) <$> _sjMainClass,
-                  ("loggingConfig" .=) <$> _sjLoggingConfig,
-                  ("properties" .=) <$> _sjProperties])
-
--- | Optional. The properties to set on daemon config files.Property keys are
--- specified in prefix:property format, such as core:fs.defaultFS. The
--- following are supported prefixes and their mappings: capacity-scheduler:
--- capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml
--- hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig:
--- pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more
--- information, see Cluster properties.
---
--- /See:/ 'softwareConfigProperties' smart constructor.
-newtype SoftwareConfigProperties = SoftwareConfigProperties'
-    { _scpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SoftwareConfigProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scpAddtional'
-softwareConfigProperties
-    :: HashMap Text Text -- ^ 'scpAddtional'
-    -> SoftwareConfigProperties
-softwareConfigProperties pScpAddtional_ =
-    SoftwareConfigProperties'
-    { _scpAddtional = _Coerce # pScpAddtional_
-    }
-
-scpAddtional :: Lens' SoftwareConfigProperties (HashMap Text Text)
-scpAddtional
-  = lens _scpAddtional (\ s a -> s{_scpAddtional = a})
-      . _Coerce
-
-instance FromJSON SoftwareConfigProperties where
-        parseJSON
-          = withObject "SoftwareConfigProperties"
-              (\ o ->
-                 SoftwareConfigProperties' <$> (parseJSONObject o))
-
-instance ToJSON SoftwareConfigProperties where
-        toJSON = toJSON . _scpAddtional
-
--- | The workflow graph.
---
--- /See:/ 'workflowGraph' smart constructor.
-newtype WorkflowGraph = WorkflowGraph'
-    { _wgNodes :: Maybe [WorkflowNode]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowGraph' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wgNodes'
-workflowGraph
-    :: WorkflowGraph
-workflowGraph =
-    WorkflowGraph'
-    { _wgNodes = Nothing
-    }
-
--- | Output only. The workflow nodes.
-wgNodes :: Lens' WorkflowGraph [WorkflowNode]
-wgNodes
-  = lens _wgNodes (\ s a -> s{_wgNodes = a}) . _Default
-      . _Coerce
-
-instance FromJSON WorkflowGraph where
-        parseJSON
-          = withObject "WorkflowGraph"
-              (\ o ->
-                 WorkflowGraph' <$> (o .:? "nodes" .!= mempty))
-
-instance ToJSON WorkflowGraph where
-        toJSON WorkflowGraph'{..}
-          = object (catMaybes [("nodes" .=) <$> _wgNodes])
-
--- | The cluster operation triggered by a workflow.
---
--- /See:/ 'clusterOperation' smart constructor.
-data ClusterOperation = ClusterOperation'
-    { _coDone        :: !(Maybe Bool)
-    , _coError       :: !(Maybe Text)
-    , _coOperationId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterOperation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'coDone'
---
--- * 'coError'
---
--- * 'coOperationId'
-clusterOperation
-    :: ClusterOperation
-clusterOperation =
-    ClusterOperation'
-    { _coDone = Nothing
-    , _coError = Nothing
-    , _coOperationId = Nothing
-    }
-
--- | Output only. Indicates the operation is done.
-coDone :: Lens' ClusterOperation (Maybe Bool)
-coDone = lens _coDone (\ s a -> s{_coDone = a})
-
--- | Output only. Error, if operation failed.
-coError :: Lens' ClusterOperation (Maybe Text)
-coError = lens _coError (\ s a -> s{_coError = a})
-
--- | Output only. The id of the cluster operation.
-coOperationId :: Lens' ClusterOperation (Maybe Text)
-coOperationId
-  = lens _coOperationId
-      (\ s a -> s{_coOperationId = a})
-
-instance FromJSON ClusterOperation where
-        parseJSON
-          = withObject "ClusterOperation"
-              (\ o ->
-                 ClusterOperation' <$>
-                   (o .:? "done") <*> (o .:? "error") <*>
-                     (o .:? "operationId"))
-
-instance ToJSON ClusterOperation where
-        toJSON ClusterOperation'{..}
-          = object
-              (catMaybes
-                 [("done" .=) <$> _coDone, ("error" .=) <$> _coError,
-                  ("operationId" .=) <$> _coOperationId])
-
--- | A selector that chooses target cluster for jobs based on metadata.
---
--- /See:/ 'clusterSelector' smart constructor.
-data ClusterSelector = ClusterSelector'
-    { _csZone          :: !(Maybe Text)
-    , _csClusterLabels :: !(Maybe ClusterSelectorClusterLabels)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterSelector' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csZone'
---
--- * 'csClusterLabels'
-clusterSelector
-    :: ClusterSelector
-clusterSelector =
-    ClusterSelector'
-    { _csZone = Nothing
-    , _csClusterLabels = Nothing
-    }
-
--- | Optional. The zone where workflow process executes. This parameter does
--- not affect the selection of the cluster.If unspecified, the zone of the
--- first cluster matching the selector is used.
-csZone :: Lens' ClusterSelector (Maybe Text)
-csZone = lens _csZone (\ s a -> s{_csZone = a})
-
--- | Required. The cluster labels. Cluster must have all labels to match.
-csClusterLabels :: Lens' ClusterSelector (Maybe ClusterSelectorClusterLabels)
-csClusterLabels
-  = lens _csClusterLabels
-      (\ s a -> s{_csClusterLabels = a})
-
-instance FromJSON ClusterSelector where
-        parseJSON
-          = withObject "ClusterSelector"
-              (\ o ->
-                 ClusterSelector' <$>
-                   (o .:? "zone") <*> (o .:? "clusterLabels"))
-
-instance ToJSON ClusterSelector where
-        toJSON ClusterSelector'{..}
-          = object
-              (catMaybes
-                 [("zone" .=) <$> _csZone,
-                  ("clusterLabels" .=) <$> _csClusterLabels])
-
--- | Job scheduling options.
---
--- /See:/ 'jobScheduling' smart constructor.
-newtype JobScheduling = JobScheduling'
-    { _jsMaxFailuresPerHour :: Maybe (Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobScheduling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jsMaxFailuresPerHour'
-jobScheduling
-    :: JobScheduling
-jobScheduling =
-    JobScheduling'
-    { _jsMaxFailuresPerHour = Nothing
-    }
-
--- | Optional. Maximum number of times per hour a driver may be restarted as
--- a result of driver terminating with non-zero code before job is reported
--- failed.A job may be reported as thrashing if driver exits with non-zero
--- code 4 times within 10 minute window.Maximum value is 10.
-jsMaxFailuresPerHour :: Lens' JobScheduling (Maybe Int32)
-jsMaxFailuresPerHour
-  = lens _jsMaxFailuresPerHour
-      (\ s a -> s{_jsMaxFailuresPerHour = a})
-      . mapping _Coerce
-
-instance FromJSON JobScheduling where
-        parseJSON
-          = withObject "JobScheduling"
-              (\ o ->
-                 JobScheduling' <$> (o .:? "maxFailuresPerHour"))
-
-instance ToJSON JobScheduling where
-        toJSON JobScheduling'{..}
-          = object
-              (catMaybes
-                 [("maxFailuresPerHour" .=) <$>
-                    _jsMaxFailuresPerHour])
-
--- | Specifies the config of disk options for a group of VM instances.
---
--- /See:/ 'diskConfig' smart constructor.
-data DiskConfig = DiskConfig'
-    { _dcNumLocalSsds   :: !(Maybe (Textual Int32))
-    , _dcBootDiskType   :: !(Maybe Text)
-    , _dcBootDiskSizeGb :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiskConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcNumLocalSsds'
---
--- * 'dcBootDiskType'
---
--- * 'dcBootDiskSizeGb'
-diskConfig
-    :: DiskConfig
-diskConfig =
-    DiskConfig'
-    { _dcNumLocalSsds = Nothing
-    , _dcBootDiskType = Nothing
-    , _dcBootDiskSizeGb = Nothing
-    }
-
--- | Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs
--- are not attached, the boot disk is used to store runtime logs and HDFS
--- (https:\/\/hadoop.apache.org\/docs\/r1.2.1\/hdfs_user_guide.html) data.
--- If one or more SSDs are attached, this runtime bulk data is spread
--- across them, and the boot disk contains only basic config and installed
--- binaries.
-dcNumLocalSsds :: Lens' DiskConfig (Maybe Int32)
-dcNumLocalSsds
-  = lens _dcNumLocalSsds
-      (\ s a -> s{_dcNumLocalSsds = a})
-      . mapping _Coerce
-
--- | Optional. Type of the boot disk (default is \"pd-standard\"). Valid
--- values: \"pd-ssd\" (Persistent Disk Solid State Drive) or
--- \"pd-standard\" (Persistent Disk Hard Disk Drive).
-dcBootDiskType :: Lens' DiskConfig (Maybe Text)
-dcBootDiskType
-  = lens _dcBootDiskType
-      (\ s a -> s{_dcBootDiskType = a})
-
--- | Optional. Size in GB of the boot disk (default is 500GB).
-dcBootDiskSizeGb :: Lens' DiskConfig (Maybe Int32)
-dcBootDiskSizeGb
-  = lens _dcBootDiskSizeGb
-      (\ s a -> s{_dcBootDiskSizeGb = a})
-      . mapping _Coerce
-
-instance FromJSON DiskConfig where
-        parseJSON
-          = withObject "DiskConfig"
-              (\ o ->
-                 DiskConfig' <$>
-                   (o .:? "numLocalSsds") <*> (o .:? "bootDiskType") <*>
-                     (o .:? "bootDiskSizeGb"))
-
-instance ToJSON DiskConfig where
-        toJSON DiskConfig'{..}
-          = object
-              (catMaybes
-                 [("numLocalSsds" .=) <$> _dcNumLocalSsds,
-                  ("bootDiskType" .=) <$> _dcBootDiskType,
-                  ("bootDiskSizeGb" .=) <$> _dcBootDiskSizeGb])
-
--- | Output only. Labels associated with the operation
---
--- /See:/ 'clusterOperationMetadataLabels' smart constructor.
-newtype ClusterOperationMetadataLabels = ClusterOperationMetadataLabels'
-    { _comlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterOperationMetadataLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'comlAddtional'
-clusterOperationMetadataLabels
-    :: HashMap Text Text -- ^ 'comlAddtional'
-    -> ClusterOperationMetadataLabels
-clusterOperationMetadataLabels pComlAddtional_ =
-    ClusterOperationMetadataLabels'
-    { _comlAddtional = _Coerce # pComlAddtional_
-    }
-
-comlAddtional :: Lens' ClusterOperationMetadataLabels (HashMap Text Text)
-comlAddtional
-  = lens _comlAddtional
-      (\ s a -> s{_comlAddtional = a})
-      . _Coerce
-
-instance FromJSON ClusterOperationMetadataLabels
-         where
-        parseJSON
-          = withObject "ClusterOperationMetadataLabels"
-              (\ o ->
-                 ClusterOperationMetadataLabels' <$>
-                   (parseJSONObject o))
-
-instance ToJSON ClusterOperationMetadataLabels where
-        toJSON = toJSON . _comlAddtional
-
--- | Represents an expression text. Example: title: \"User account presence\"
--- description: \"Determines whether the request has a user account\"
--- expression: \"size(request.user) > 0\"
---
--- /See:/ 'expr' smart constructor.
-data Expr = Expr'
-    { _eLocation    :: !(Maybe Text)
-    , _eExpression  :: !(Maybe Text)
-    , _eTitle       :: !(Maybe Text)
-    , _eDescription :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Expr' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eLocation'
---
--- * 'eExpression'
---
--- * 'eTitle'
---
--- * 'eDescription'
-expr
-    :: Expr
-expr =
-    Expr'
-    { _eLocation = Nothing
-    , _eExpression = Nothing
-    , _eTitle = Nothing
-    , _eDescription = Nothing
-    }
-
--- | An optional string indicating the location of the expression for error
--- reporting, e.g. a file name and a position in the file.
-eLocation :: Lens' Expr (Maybe Text)
-eLocation
-  = lens _eLocation (\ s a -> s{_eLocation = a})
-
--- | Textual representation of an expression in Common Expression Language
--- syntax.The application context of the containing message determines
--- which well-known feature set of CEL is supported.
-eExpression :: Lens' Expr (Maybe Text)
-eExpression
-  = lens _eExpression (\ s a -> s{_eExpression = a})
-
--- | An optional title for the expression, i.e. a short string describing its
--- purpose. This can be used e.g. in UIs which allow to enter the
--- expression.
-eTitle :: Lens' Expr (Maybe Text)
-eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
-
--- | An optional description of the expression. This is a longer text which
--- describes the expression, e.g. when hovered over it in a UI.
-eDescription :: Lens' Expr (Maybe Text)
-eDescription
-  = lens _eDescription (\ s a -> s{_eDescription = a})
-
-instance FromJSON Expr where
-        parseJSON
-          = withObject "Expr"
-              (\ o ->
-                 Expr' <$>
-                   (o .:? "location") <*> (o .:? "expression") <*>
-                     (o .:? "title")
-                     <*> (o .:? "description"))
-
-instance ToJSON Expr where
-        toJSON Expr'{..}
-          = object
-              (catMaybes
-                 [("location" .=) <$> _eLocation,
-                  ("expression" .=) <$> _eExpression,
-                  ("title" .=) <$> _eTitle,
-                  ("description" .=) <$> _eDescription])
-
--- | 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])
-
--- | Optional. Mapping of query variable names to values (equivalent to the
--- Hive command: SET name=\"value\";).
---
--- /See:/ 'hiveJobScriptVariables' smart constructor.
-newtype HiveJobScriptVariables = HiveJobScriptVariables'
-    { _hjsvAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HiveJobScriptVariables' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hjsvAddtional'
-hiveJobScriptVariables
-    :: HashMap Text Text -- ^ 'hjsvAddtional'
-    -> HiveJobScriptVariables
-hiveJobScriptVariables pHjsvAddtional_ =
-    HiveJobScriptVariables'
-    { _hjsvAddtional = _Coerce # pHjsvAddtional_
-    }
-
-hjsvAddtional :: Lens' HiveJobScriptVariables (HashMap Text Text)
-hjsvAddtional
-  = lens _hjsvAddtional
-      (\ s a -> s{_hjsvAddtional = a})
-      . _Coerce
-
-instance FromJSON HiveJobScriptVariables where
-        parseJSON
-          = withObject "HiveJobScriptVariables"
-              (\ o ->
-                 HiveJobScriptVariables' <$> (parseJSONObject o))
-
-instance ToJSON HiveJobScriptVariables where
-        toJSON = toJSON . _hjsvAddtional
-
--- | Request message for GetIamPolicy method.
---
--- /See:/ 'getIAMPolicyRequest' smart constructor.
-data GetIAMPolicyRequest =
-    GetIAMPolicyRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GetIAMPolicyRequest' with the minimum fields required to make a request.
---
-getIAMPolicyRequest
-    :: GetIAMPolicyRequest
-getIAMPolicyRequest = GetIAMPolicyRequest'
-
-instance FromJSON GetIAMPolicyRequest where
-        parseJSON
-          = withObject "GetIAMPolicyRequest"
-              (\ o -> pure GetIAMPolicyRequest')
-
-instance ToJSON GetIAMPolicyRequest where
-        toJSON = const emptyObject
-
--- | Specifies workflow execution target.Either managed_cluster or
--- cluster_selector is required.
---
--- /See:/ 'workflowTemplatePlacement' smart constructor.
-data WorkflowTemplatePlacement = WorkflowTemplatePlacement'
-    { _wtpClusterSelector :: !(Maybe ClusterSelector)
-    , _wtpManagedCluster  :: !(Maybe ManagedCluster)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowTemplatePlacement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wtpClusterSelector'
---
--- * 'wtpManagedCluster'
-workflowTemplatePlacement
-    :: WorkflowTemplatePlacement
-workflowTemplatePlacement =
-    WorkflowTemplatePlacement'
-    { _wtpClusterSelector = Nothing
-    , _wtpManagedCluster = Nothing
-    }
-
--- | Optional. A selector that chooses target cluster for jobs based on
--- metadata.The selector is evaluated at the time each job is submitted.
-wtpClusterSelector :: Lens' WorkflowTemplatePlacement (Maybe ClusterSelector)
-wtpClusterSelector
-  = lens _wtpClusterSelector
-      (\ s a -> s{_wtpClusterSelector = a})
-
--- | Optional. A cluster that is managed by the workflow.
-wtpManagedCluster :: Lens' WorkflowTemplatePlacement (Maybe ManagedCluster)
-wtpManagedCluster
-  = lens _wtpManagedCluster
-      (\ s a -> s{_wtpManagedCluster = a})
-
-instance FromJSON WorkflowTemplatePlacement where
-        parseJSON
-          = withObject "WorkflowTemplatePlacement"
-              (\ o ->
-                 WorkflowTemplatePlacement' <$>
-                   (o .:? "clusterSelector") <*>
-                     (o .:? "managedCluster"))
-
-instance ToJSON WorkflowTemplatePlacement where
-        toJSON WorkflowTemplatePlacement'{..}
-          = object
-              (catMaybes
-                 [("clusterSelector" .=) <$> _wtpClusterSelector,
-                  ("managedCluster" .=) <$> _wtpManagedCluster])
-
--- | Describes the identifying information, config, and status of a cluster
--- of Compute Engine instances.
---
--- /See:/ 'cluster' smart constructor.
-data Cluster = Cluster'
-    { _cStatus        :: !(Maybe ClusterStatus)
-    , _cMetrics       :: !(Maybe ClusterMetrics)
-    , _cClusterUuid   :: !(Maybe Text)
-    , _cConfig        :: !(Maybe ClusterConfig)
-    , _cClusterName   :: !(Maybe Text)
-    , _cLabels        :: !(Maybe ClusterLabels)
-    , _cProjectId     :: !(Maybe Text)
-    , _cStatusHistory :: !(Maybe [ClusterStatus])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Cluster' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cStatus'
---
--- * 'cMetrics'
---
--- * 'cClusterUuid'
---
--- * 'cConfig'
---
--- * 'cClusterName'
---
--- * 'cLabels'
---
--- * 'cProjectId'
---
--- * 'cStatusHistory'
-cluster
-    :: Cluster
-cluster =
-    Cluster'
-    { _cStatus = Nothing
-    , _cMetrics = Nothing
-    , _cClusterUuid = Nothing
-    , _cConfig = Nothing
-    , _cClusterName = Nothing
-    , _cLabels = Nothing
-    , _cProjectId = Nothing
-    , _cStatusHistory = Nothing
-    }
-
--- | Output only. Cluster status.
-cStatus :: Lens' Cluster (Maybe ClusterStatus)
-cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
-
--- | Contains cluster daemon metrics such as HDFS and YARN stats.Beta
--- Feature: This report is available for testing purposes only. It may be
--- changed before final release.
-cMetrics :: Lens' Cluster (Maybe ClusterMetrics)
-cMetrics = lens _cMetrics (\ s a -> s{_cMetrics = a})
-
--- | Output only. A cluster UUID (Unique Universal Identifier). Cloud
--- Dataproc generates this value when it creates the cluster.
-cClusterUuid :: Lens' Cluster (Maybe Text)
-cClusterUuid
-  = lens _cClusterUuid (\ s a -> s{_cClusterUuid = a})
-
--- | Required. The cluster config. Note that Cloud Dataproc may set default
--- values, and values may change when clusters are updated.
-cConfig :: Lens' Cluster (Maybe ClusterConfig)
-cConfig = lens _cConfig (\ s a -> s{_cConfig = a})
-
--- | Required. The cluster name. Cluster names within a project must be
--- unique. Names of deleted clusters can be reused.
-cClusterName :: Lens' Cluster (Maybe Text)
-cClusterName
-  = lens _cClusterName (\ s a -> s{_cClusterName = a})
-
--- | Optional. The labels to associate with this cluster. Label keys must
--- contain 1 to 63 characters, and must conform to RFC 1035
--- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
--- but, if present, must contain 1 to 63 characters, and must conform to
--- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
--- labels can be associated with a cluster.
-cLabels :: Lens' Cluster (Maybe ClusterLabels)
-cLabels = lens _cLabels (\ s a -> s{_cLabels = a})
-
--- | Required. The Google Cloud Platform project ID that the cluster belongs
--- to.
-cProjectId :: Lens' Cluster (Maybe Text)
-cProjectId
-  = lens _cProjectId (\ s a -> s{_cProjectId = a})
-
--- | Output only. The previous cluster status.
-cStatusHistory :: Lens' Cluster [ClusterStatus]
-cStatusHistory
-  = lens _cStatusHistory
-      (\ s a -> s{_cStatusHistory = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON Cluster where
-        parseJSON
-          = withObject "Cluster"
-              (\ o ->
-                 Cluster' <$>
-                   (o .:? "status") <*> (o .:? "metrics") <*>
-                     (o .:? "clusterUuid")
-                     <*> (o .:? "config")
-                     <*> (o .:? "clusterName")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "projectId")
-                     <*> (o .:? "statusHistory" .!= mempty))
-
-instance ToJSON Cluster where
-        toJSON Cluster'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _cStatus,
-                  ("metrics" .=) <$> _cMetrics,
-                  ("clusterUuid" .=) <$> _cClusterUuid,
-                  ("config" .=) <$> _cConfig,
-                  ("clusterName" .=) <$> _cClusterName,
-                  ("labels" .=) <$> _cLabels,
-                  ("projectId" .=) <$> _cProjectId,
-                  ("statusHistory" .=) <$> _cStatusHistory])
-
--- | Optional. The labels to associate with this cluster.Label keys must be
--- between 1 and 63 characters long, and must conform to the following PCRE
--- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
--- and 63 characters long, and must conform to the following PCRE regular
--- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
--- associated with a given cluster.
---
--- /See:/ 'managedClusterLabels' smart constructor.
-newtype ManagedClusterLabels = ManagedClusterLabels'
-    { _mclAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedClusterLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mclAddtional'
-managedClusterLabels
-    :: HashMap Text Text -- ^ 'mclAddtional'
-    -> ManagedClusterLabels
-managedClusterLabels pMclAddtional_ =
-    ManagedClusterLabels'
-    { _mclAddtional = _Coerce # pMclAddtional_
-    }
-
-mclAddtional :: Lens' ManagedClusterLabels (HashMap Text Text)
-mclAddtional
-  = lens _mclAddtional (\ s a -> s{_mclAddtional = a})
-      . _Coerce
-
-instance FromJSON ManagedClusterLabels where
-        parseJSON
-          = withObject "ManagedClusterLabels"
-              (\ o ->
-                 ManagedClusterLabels' <$> (parseJSONObject o))
-
-instance ToJSON ManagedClusterLabels where
-        toJSON = toJSON . _mclAddtional
-
--- | Configuration for parameter validation.
---
--- /See:/ 'parameterValidation' smart constructor.
-data ParameterValidation = ParameterValidation'
-    { _pvRegex  :: !(Maybe RegexValidation)
-    , _pvValues :: !(Maybe ValueValidation)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParameterValidation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvRegex'
---
--- * 'pvValues'
-parameterValidation
-    :: ParameterValidation
-parameterValidation =
-    ParameterValidation'
-    { _pvRegex = Nothing
-    , _pvValues = Nothing
-    }
-
--- | Validation based on regular expressions.
-pvRegex :: Lens' ParameterValidation (Maybe RegexValidation)
-pvRegex = lens _pvRegex (\ s a -> s{_pvRegex = a})
-
--- | Validation based on a list of allowed values.
-pvValues :: Lens' ParameterValidation (Maybe ValueValidation)
-pvValues = lens _pvValues (\ s a -> s{_pvValues = a})
-
-instance FromJSON ParameterValidation where
-        parseJSON
-          = withObject "ParameterValidation"
-              (\ o ->
-                 ParameterValidation' <$>
-                   (o .:? "regex") <*> (o .:? "values"))
-
-instance ToJSON ParameterValidation where
-        toJSON ParameterValidation'{..}
-          = object
-              (catMaybes
-                 [("regex" .=) <$> _pvRegex,
-                  ("values" .=) <$> _pvValues])
-
--- | Optional. The labels to associate with this job. Label keys must contain
--- 1 to 63 characters, and must conform to RFC 1035
--- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
--- but, if present, must contain 1 to 63 characters, and must conform to
--- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
--- labels can be associated with a job.
---
--- /See:/ 'jobLabels' smart constructor.
-newtype JobLabels = JobLabels'
-    { _jlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jlAddtional'
-jobLabels
-    :: HashMap Text Text -- ^ 'jlAddtional'
-    -> JobLabels
-jobLabels pJlAddtional_ =
-    JobLabels'
-    { _jlAddtional = _Coerce # pJlAddtional_
-    }
-
-jlAddtional :: Lens' JobLabels (HashMap Text Text)
-jlAddtional
-  = lens _jlAddtional (\ s a -> s{_jlAddtional = a}) .
-      _Coerce
-
-instance FromJSON JobLabels where
-        parseJSON
-          = withObject "JobLabels"
-              (\ o -> JobLabels' <$> (parseJSONObject o))
-
-instance ToJSON JobLabels where
-        toJSON = toJSON . _jlAddtional
-
--- | A request to submit a job.
---
--- /See:/ 'submitJobRequest' smart constructor.
-data SubmitJobRequest = SubmitJobRequest'
-    { _sjrRequestId :: !(Maybe Text)
-    , _sjrJob       :: !(Maybe Job)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SubmitJobRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sjrRequestId'
---
--- * 'sjrJob'
-submitJobRequest
-    :: SubmitJobRequest
-submitJobRequest =
-    SubmitJobRequest'
-    { _sjrRequestId = Nothing
-    , _sjrJob = Nothing
-    }
-
--- | Optional. A unique id used to identify the request. If the server
--- receives two SubmitJobRequest requests with the same id, then the second
--- request will be ignored and the first Job created and stored in the
--- backend is returned.It is recommended to always set this value to a UUID
--- (https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier).The id
--- must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),
--- and hyphens (-). The maximum length is 40 characters.
-sjrRequestId :: Lens' SubmitJobRequest (Maybe Text)
-sjrRequestId
-  = lens _sjrRequestId (\ s a -> s{_sjrRequestId = a})
-
--- | Required. The job resource.
-sjrJob :: Lens' SubmitJobRequest (Maybe Job)
-sjrJob = lens _sjrJob (\ s a -> s{_sjrJob = a})
-
-instance FromJSON SubmitJobRequest where
-        parseJSON
-          = withObject "SubmitJobRequest"
-              (\ o ->
-                 SubmitJobRequest' <$>
-                   (o .:? "requestId") <*> (o .:? "job"))
-
-instance ToJSON SubmitJobRequest where
-        toJSON SubmitJobRequest'{..}
-          = object
-              (catMaybes
-                 [("requestId" .=) <$> _sjrRequestId,
-                  ("job" .=) <$> _sjrJob])
-
--- | Contains cluster daemon metrics, such as HDFS and YARN stats.Beta
--- Feature: This report is available for testing purposes only. It may be
--- changed before final release.
---
--- /See:/ 'clusterMetrics' smart constructor.
-data ClusterMetrics = ClusterMetrics'
-    { _cmYarnMetrics :: !(Maybe ClusterMetricsYarnMetrics)
-    , _cmHdfsMetrics :: !(Maybe ClusterMetricsHdfsMetrics)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterMetrics' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmYarnMetrics'
---
--- * 'cmHdfsMetrics'
-clusterMetrics
-    :: ClusterMetrics
-clusterMetrics =
-    ClusterMetrics'
-    { _cmYarnMetrics = Nothing
-    , _cmHdfsMetrics = Nothing
-    }
-
--- | The YARN metrics.
-cmYarnMetrics :: Lens' ClusterMetrics (Maybe ClusterMetricsYarnMetrics)
-cmYarnMetrics
-  = lens _cmYarnMetrics
-      (\ s a -> s{_cmYarnMetrics = a})
-
--- | The HDFS metrics.
-cmHdfsMetrics :: Lens' ClusterMetrics (Maybe ClusterMetricsHdfsMetrics)
-cmHdfsMetrics
-  = lens _cmHdfsMetrics
-      (\ s a -> s{_cmHdfsMetrics = a})
-
-instance FromJSON ClusterMetrics where
-        parseJSON
-          = withObject "ClusterMetrics"
-              (\ o ->
-                 ClusterMetrics' <$>
-                   (o .:? "yarnMetrics") <*> (o .:? "hdfsMetrics"))
-
-instance ToJSON ClusterMetrics where
-        toJSON ClusterMetrics'{..}
-          = object
-              (catMaybes
-                 [("yarnMetrics" .=) <$> _cmYarnMetrics,
-                  ("hdfsMetrics" .=) <$> _cmHdfsMetrics])
-
--- | 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])
-
--- | 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
-
--- | A Cloud Dataproc job for running Apache Hive
--- (https:\/\/hive.apache.org\/) queries on YARN.
---
--- /See:/ 'hiveJob' smart constructor.
-data HiveJob = HiveJob'
-    { _hjQueryFileURI      :: !(Maybe Text)
-    , _hjJarFileURIs       :: !(Maybe [Text])
-    , _hjScriptVariables   :: !(Maybe HiveJobScriptVariables)
-    , _hjQueryList         :: !(Maybe QueryList)
-    , _hjContinueOnFailure :: !(Maybe Bool)
-    , _hjProperties        :: !(Maybe HiveJobProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HiveJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hjQueryFileURI'
---
--- * 'hjJarFileURIs'
---
--- * 'hjScriptVariables'
---
--- * 'hjQueryList'
---
--- * 'hjContinueOnFailure'
---
--- * 'hjProperties'
-hiveJob
-    :: HiveJob
-hiveJob =
-    HiveJob'
-    { _hjQueryFileURI = Nothing
-    , _hjJarFileURIs = Nothing
-    , _hjScriptVariables = Nothing
-    , _hjQueryList = Nothing
-    , _hjContinueOnFailure = Nothing
-    , _hjProperties = Nothing
-    }
-
--- | The HCFS URI of the script that contains Hive queries.
-hjQueryFileURI :: Lens' HiveJob (Maybe Text)
-hjQueryFileURI
-  = lens _hjQueryFileURI
-      (\ s a -> s{_hjQueryFileURI = a})
-
--- | Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive
--- server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and
--- UDFs.
-hjJarFileURIs :: Lens' HiveJob [Text]
-hjJarFileURIs
-  = lens _hjJarFileURIs
-      (\ s a -> s{_hjJarFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. Mapping of query variable names to values (equivalent to the
--- Hive command: SET name=\"value\";).
-hjScriptVariables :: Lens' HiveJob (Maybe HiveJobScriptVariables)
-hjScriptVariables
-  = lens _hjScriptVariables
-      (\ s a -> s{_hjScriptVariables = a})
-
--- | A list of queries.
-hjQueryList :: Lens' HiveJob (Maybe QueryList)
-hjQueryList
-  = lens _hjQueryList (\ s a -> s{_hjQueryList = a})
-
--- | Optional. Whether to continue executing queries if a query fails. The
--- default value is false. Setting to true can be useful when executing
--- independent parallel queries.
-hjContinueOnFailure :: Lens' HiveJob (Maybe Bool)
-hjContinueOnFailure
-  = lens _hjContinueOnFailure
-      (\ s a -> s{_hjContinueOnFailure = a})
-
--- | Optional. A mapping of property names and values, used to configure
--- Hive. Properties that conflict with values set by the Cloud Dataproc API
--- may be overwritten. Can include properties set in
--- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/hive\/conf\/hive-site.xml, and
--- classes in user code.
-hjProperties :: Lens' HiveJob (Maybe HiveJobProperties)
-hjProperties
-  = lens _hjProperties (\ s a -> s{_hjProperties = a})
-
-instance FromJSON HiveJob where
-        parseJSON
-          = withObject "HiveJob"
-              (\ o ->
-                 HiveJob' <$>
-                   (o .:? "queryFileUri") <*>
-                     (o .:? "jarFileUris" .!= mempty)
-                     <*> (o .:? "scriptVariables")
-                     <*> (o .:? "queryList")
-                     <*> (o .:? "continueOnFailure")
-                     <*> (o .:? "properties"))
-
-instance ToJSON HiveJob where
-        toJSON HiveJob'{..}
-          = object
-              (catMaybes
-                 [("queryFileUri" .=) <$> _hjQueryFileURI,
-                  ("jarFileUris" .=) <$> _hjJarFileURIs,
-                  ("scriptVariables" .=) <$> _hjScriptVariables,
-                  ("queryList" .=) <$> _hjQueryList,
-                  ("continueOnFailure" .=) <$> _hjContinueOnFailure,
-                  ("properties" .=) <$> _hjProperties])
-
--- | Optional. The labels to associate with this job.Label keys must be
--- between 1 and 63 characters long, and must conform to the following
--- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
--- and 63 characters long, and must conform to the following regular
--- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
--- associated with a given job.
---
--- /See:/ 'orderedJobLabels' smart constructor.
-newtype OrderedJobLabels = OrderedJobLabels'
-    { _ojlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OrderedJobLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ojlAddtional'
-orderedJobLabels
-    :: HashMap Text Text -- ^ 'ojlAddtional'
-    -> OrderedJobLabels
-orderedJobLabels pOjlAddtional_ =
-    OrderedJobLabels'
-    { _ojlAddtional = _Coerce # pOjlAddtional_
-    }
-
-ojlAddtional :: Lens' OrderedJobLabels (HashMap Text Text)
-ojlAddtional
-  = lens _ojlAddtional (\ s a -> s{_ojlAddtional = a})
-      . _Coerce
-
-instance FromJSON OrderedJobLabels where
-        parseJSON
-          = withObject "OrderedJobLabels"
-              (\ o -> OrderedJobLabels' <$> (parseJSONObject o))
-
-instance ToJSON OrderedJobLabels where
-        toJSON = toJSON . _ojlAddtional
-
--- | Required. The cluster labels. Cluster must have all labels to match.
---
--- /See:/ 'clusterSelectorClusterLabels' smart constructor.
-newtype ClusterSelectorClusterLabels = ClusterSelectorClusterLabels'
-    { _csclAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterSelectorClusterLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csclAddtional'
-clusterSelectorClusterLabels
-    :: HashMap Text Text -- ^ 'csclAddtional'
-    -> ClusterSelectorClusterLabels
-clusterSelectorClusterLabels pCsclAddtional_ =
-    ClusterSelectorClusterLabels'
-    { _csclAddtional = _Coerce # pCsclAddtional_
-    }
-
-csclAddtional :: Lens' ClusterSelectorClusterLabels (HashMap Text Text)
-csclAddtional
-  = lens _csclAddtional
-      (\ s a -> s{_csclAddtional = a})
-      . _Coerce
-
-instance FromJSON ClusterSelectorClusterLabels where
-        parseJSON
-          = withObject "ClusterSelectorClusterLabels"
-              (\ o ->
-                 ClusterSelectorClusterLabels' <$>
-                   (parseJSONObject o))
-
-instance ToJSON ClusterSelectorClusterLabels where
-        toJSON = toJSON . _csclAddtional
-
--- | Optional. Mapping of query variable names to values (equivalent to the
--- Spark SQL command: SET name=\"value\";).
---
--- /See:/ 'sparkSQLJobScriptVariables' smart constructor.
-newtype SparkSQLJobScriptVariables = SparkSQLJobScriptVariables'
-    { _ssqljsvAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SparkSQLJobScriptVariables' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssqljsvAddtional'
-sparkSQLJobScriptVariables
-    :: HashMap Text Text -- ^ 'ssqljsvAddtional'
-    -> SparkSQLJobScriptVariables
-sparkSQLJobScriptVariables pSsqljsvAddtional_ =
-    SparkSQLJobScriptVariables'
-    { _ssqljsvAddtional = _Coerce # pSsqljsvAddtional_
-    }
-
-ssqljsvAddtional :: Lens' SparkSQLJobScriptVariables (HashMap Text Text)
-ssqljsvAddtional
-  = lens _ssqljsvAddtional
-      (\ s a -> s{_ssqljsvAddtional = a})
-      . _Coerce
-
-instance FromJSON SparkSQLJobScriptVariables where
-        parseJSON
-          = withObject "SparkSQLJobScriptVariables"
-              (\ o ->
-                 SparkSQLJobScriptVariables' <$> (parseJSONObject o))
-
-instance ToJSON SparkSQLJobScriptVariables where
-        toJSON = toJSON . _ssqljsvAddtional
-
--- | Optional. A mapping of property names to values, used to configure Pig.
--- Properties that conflict with values set by the Cloud Dataproc API may
--- be overwritten. Can include properties set in
--- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/pig\/conf\/pig.properties, and
--- classes in user code.
---
--- /See:/ 'pigJobProperties' smart constructor.
-newtype PigJobProperties = PigJobProperties'
-    { _pjpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PigJobProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pjpAddtional'
-pigJobProperties
-    :: HashMap Text Text -- ^ 'pjpAddtional'
-    -> PigJobProperties
-pigJobProperties pPjpAddtional_ =
-    PigJobProperties'
-    { _pjpAddtional = _Coerce # pPjpAddtional_
-    }
-
-pjpAddtional :: Lens' PigJobProperties (HashMap Text Text)
-pjpAddtional
-  = lens _pjpAddtional (\ s a -> s{_pjpAddtional = a})
-      . _Coerce
-
-instance FromJSON PigJobProperties where
-        parseJSON
-          = withObject "PigJobProperties"
-              (\ o -> PigJobProperties' <$> (parseJSONObject o))
-
-instance ToJSON PigJobProperties where
-        toJSON = toJSON . _pjpAddtional
-
--- | The cluster config.
---
--- /See:/ 'clusterConfig' smart constructor.
-data ClusterConfig = ClusterConfig'
-    { _ccWorkerConfig          :: !(Maybe InstanceGroupConfig)
-    , _ccInitializationActions :: !(Maybe [NodeInitializationAction])
-    , _ccMasterConfig          :: !(Maybe InstanceGroupConfig)
-    , _ccGceClusterConfig      :: !(Maybe GceClusterConfig)
-    , _ccConfigBucket          :: !(Maybe Text)
-    , _ccEncryptionConfig      :: !(Maybe EncryptionConfig)
-    , _ccSoftwareConfig        :: !(Maybe SoftwareConfig)
-    , _ccSecondaryWorkerConfig :: !(Maybe InstanceGroupConfig)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccWorkerConfig'
---
--- * 'ccInitializationActions'
---
--- * 'ccMasterConfig'
---
--- * 'ccGceClusterConfig'
---
--- * 'ccConfigBucket'
---
--- * 'ccEncryptionConfig'
---
--- * 'ccSoftwareConfig'
---
--- * 'ccSecondaryWorkerConfig'
-clusterConfig
-    :: ClusterConfig
-clusterConfig =
-    ClusterConfig'
-    { _ccWorkerConfig = Nothing
-    , _ccInitializationActions = Nothing
-    , _ccMasterConfig = Nothing
-    , _ccGceClusterConfig = Nothing
-    , _ccConfigBucket = Nothing
-    , _ccEncryptionConfig = Nothing
-    , _ccSoftwareConfig = Nothing
-    , _ccSecondaryWorkerConfig = Nothing
-    }
-
--- | Optional. The Compute Engine config settings for worker instances in a
--- cluster.
-ccWorkerConfig :: Lens' ClusterConfig (Maybe InstanceGroupConfig)
-ccWorkerConfig
-  = lens _ccWorkerConfig
-      (\ s a -> s{_ccWorkerConfig = a})
-
--- | Optional. Commands to execute on each node after config is completed. By
--- default, executables are run on master and all worker nodes. You can
--- test a node\'s role metadata to run an executable on a master or worker
--- node, as shown below using curl (you can also use wget):
--- ROLE=$(curl -H Metadata-Flavor:Google http:\/\/metadata\/computeMetadata\/v1\/instance\/attributes\/dataproc-role) if [[ \"${ROLE}\"
--- == \'Master\' ]]; then ... master specific actions ... else ... worker
--- specific actions ... fi
-ccInitializationActions :: Lens' ClusterConfig [NodeInitializationAction]
-ccInitializationActions
-  = lens _ccInitializationActions
-      (\ s a -> s{_ccInitializationActions = a})
-      . _Default
-      . _Coerce
-
--- | Optional. The Compute Engine config settings for the master instance in
--- a cluster.
-ccMasterConfig :: Lens' ClusterConfig (Maybe InstanceGroupConfig)
-ccMasterConfig
-  = lens _ccMasterConfig
-      (\ s a -> s{_ccMasterConfig = a})
-
--- | Required. The shared Compute Engine config settings for all instances in
--- a cluster.
-ccGceClusterConfig :: Lens' ClusterConfig (Maybe GceClusterConfig)
-ccGceClusterConfig
-  = lens _ccGceClusterConfig
-      (\ s a -> s{_ccGceClusterConfig = a})
-
--- | Optional. A Cloud Storage staging bucket used for sharing generated SSH
--- keys and config. If you do not specify a staging bucket, Cloud Dataproc
--- will determine an appropriate Cloud Storage location (US, ASIA, or EU)
--- for your cluster\'s staging bucket according to the Google Compute
--- Engine zone where your cluster is deployed, and then it will create and
--- manage this project-level, per-location bucket for you.
-ccConfigBucket :: Lens' ClusterConfig (Maybe Text)
-ccConfigBucket
-  = lens _ccConfigBucket
-      (\ s a -> s{_ccConfigBucket = a})
-
--- | Optional. Encryption settings for the cluster.
-ccEncryptionConfig :: Lens' ClusterConfig (Maybe EncryptionConfig)
-ccEncryptionConfig
-  = lens _ccEncryptionConfig
-      (\ s a -> s{_ccEncryptionConfig = a})
-
--- | Optional. The config settings for software inside the cluster.
-ccSoftwareConfig :: Lens' ClusterConfig (Maybe SoftwareConfig)
-ccSoftwareConfig
-  = lens _ccSoftwareConfig
-      (\ s a -> s{_ccSoftwareConfig = a})
-
--- | Optional. The Compute Engine config settings for additional worker
--- instances in a cluster.
-ccSecondaryWorkerConfig :: Lens' ClusterConfig (Maybe InstanceGroupConfig)
-ccSecondaryWorkerConfig
-  = lens _ccSecondaryWorkerConfig
-      (\ s a -> s{_ccSecondaryWorkerConfig = a})
-
-instance FromJSON ClusterConfig where
-        parseJSON
-          = withObject "ClusterConfig"
-              (\ o ->
-                 ClusterConfig' <$>
-                   (o .:? "workerConfig") <*>
-                     (o .:? "initializationActions" .!= mempty)
-                     <*> (o .:? "masterConfig")
-                     <*> (o .:? "gceClusterConfig")
-                     <*> (o .:? "configBucket")
-                     <*> (o .:? "encryptionConfig")
-                     <*> (o .:? "softwareConfig")
-                     <*> (o .:? "secondaryWorkerConfig"))
-
-instance ToJSON ClusterConfig where
-        toJSON ClusterConfig'{..}
-          = object
-              (catMaybes
-                 [("workerConfig" .=) <$> _ccWorkerConfig,
-                  ("initializationActions" .=) <$>
-                    _ccInitializationActions,
-                  ("masterConfig" .=) <$> _ccMasterConfig,
-                  ("gceClusterConfig" .=) <$> _ccGceClusterConfig,
-                  ("configBucket" .=) <$> _ccConfigBucket,
-                  ("encryptionConfig" .=) <$> _ccEncryptionConfig,
-                  ("softwareConfig" .=) <$> _ccSoftwareConfig,
-                  ("secondaryWorkerConfig" .=) <$>
-                    _ccSecondaryWorkerConfig])
-
--- | A request to instantiate a workflow template.
---
--- /See:/ 'instantiateWorkflowTemplateRequest' smart constructor.
-data InstantiateWorkflowTemplateRequest = InstantiateWorkflowTemplateRequest'
-    { _iwtrRequestId  :: !(Maybe Text)
-    , _iwtrVersion    :: !(Maybe (Textual Int32))
-    , _iwtrParameters :: !(Maybe InstantiateWorkflowTemplateRequestParameters)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstantiateWorkflowTemplateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iwtrRequestId'
---
--- * 'iwtrVersion'
---
--- * 'iwtrParameters'
-instantiateWorkflowTemplateRequest
-    :: InstantiateWorkflowTemplateRequest
-instantiateWorkflowTemplateRequest =
-    InstantiateWorkflowTemplateRequest'
-    { _iwtrRequestId = Nothing
-    , _iwtrVersion = Nothing
-    , _iwtrParameters = Nothing
-    }
-
--- | Optional. A tag that prevents multiple concurrent workflow instances
--- with the same tag from running. This mitigates risk of concurrent
--- instances started due to retries.It is recommended to always set this
--- value to a UUID
--- (https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier).The
--- tag must contain only letters (a-z, A-Z), numbers (0-9), underscores
--- (_), and hyphens (-). The maximum length is 40 characters.
-iwtrRequestId :: Lens' InstantiateWorkflowTemplateRequest (Maybe Text)
-iwtrRequestId
-  = lens _iwtrRequestId
-      (\ s a -> s{_iwtrRequestId = a})
-
--- | Optional. The version of workflow template to instantiate. If specified,
--- the workflow will be instantiated only if the current version of the
--- workflow template has the supplied version.This option cannot be used to
--- instantiate a previous version of workflow template.
-iwtrVersion :: Lens' InstantiateWorkflowTemplateRequest (Maybe Int32)
-iwtrVersion
-  = lens _iwtrVersion (\ s a -> s{_iwtrVersion = a}) .
-      mapping _Coerce
-
--- | Optional. Map from parameter names to values that should be used for
--- those parameters. Values may not exceed 100 characters.
-iwtrParameters :: Lens' InstantiateWorkflowTemplateRequest (Maybe InstantiateWorkflowTemplateRequestParameters)
-iwtrParameters
-  = lens _iwtrParameters
-      (\ s a -> s{_iwtrParameters = a})
-
-instance FromJSON InstantiateWorkflowTemplateRequest
-         where
-        parseJSON
-          = withObject "InstantiateWorkflowTemplateRequest"
-              (\ o ->
-                 InstantiateWorkflowTemplateRequest' <$>
-                   (o .:? "requestId") <*> (o .:? "version") <*>
-                     (o .:? "parameters"))
-
-instance ToJSON InstantiateWorkflowTemplateRequest
-         where
-        toJSON InstantiateWorkflowTemplateRequest'{..}
-          = object
-              (catMaybes
-                 [("requestId" .=) <$> _iwtrRequestId,
-                  ("version" .=) <$> _iwtrVersion,
-                  ("parameters" .=) <$> _iwtrParameters])
-
--- | Optional. A mapping of property names to values, used to configure
--- Hadoop. Properties that conflict with values set by the Cloud Dataproc
--- API may be overwritten. Can include properties set in
--- \/etc\/hadoop\/conf\/*-site and classes in user code.
---
--- /See:/ 'hadoopJobProperties' smart constructor.
-newtype HadoopJobProperties = HadoopJobProperties'
-    { _hjpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HadoopJobProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hjpAddtional'
-hadoopJobProperties
-    :: HashMap Text Text -- ^ 'hjpAddtional'
-    -> HadoopJobProperties
-hadoopJobProperties pHjpAddtional_ =
-    HadoopJobProperties'
-    { _hjpAddtional = _Coerce # pHjpAddtional_
-    }
-
-hjpAddtional :: Lens' HadoopJobProperties (HashMap Text Text)
-hjpAddtional
-  = lens _hjpAddtional (\ s a -> s{_hjpAddtional = a})
-      . _Coerce
-
-instance FromJSON HadoopJobProperties where
-        parseJSON
-          = withObject "HadoopJobProperties"
-              (\ o -> HadoopJobProperties' <$> (parseJSONObject o))
-
-instance ToJSON HadoopJobProperties where
-        toJSON = toJSON . _hjpAddtional
-
--- | A Cloud Dataproc workflow template resource.
---
--- /See:/ 'workflowTemplate' smart constructor.
-data WorkflowTemplate = WorkflowTemplate'
-    { _wtJobs       :: !(Maybe [OrderedJob])
-    , _wtUpdateTime :: !(Maybe DateTime')
-    , _wtName       :: !(Maybe Text)
-    , _wtVersion    :: !(Maybe (Textual Int32))
-    , _wtParameters :: !(Maybe [TemplateParameter])
-    , _wtId         :: !(Maybe Text)
-    , _wtLabels     :: !(Maybe WorkflowTemplateLabels)
-    , _wtCreateTime :: !(Maybe DateTime')
-    , _wtPlacement  :: !(Maybe WorkflowTemplatePlacement)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wtJobs'
---
--- * 'wtUpdateTime'
---
--- * 'wtName'
---
--- * 'wtVersion'
---
--- * 'wtParameters'
---
--- * 'wtId'
---
--- * 'wtLabels'
---
--- * 'wtCreateTime'
---
--- * 'wtPlacement'
-workflowTemplate
-    :: WorkflowTemplate
-workflowTemplate =
-    WorkflowTemplate'
-    { _wtJobs = Nothing
-    , _wtUpdateTime = Nothing
-    , _wtName = Nothing
-    , _wtVersion = Nothing
-    , _wtParameters = Nothing
-    , _wtId = Nothing
-    , _wtLabels = Nothing
-    , _wtCreateTime = Nothing
-    , _wtPlacement = Nothing
-    }
-
--- | Required. The Directed Acyclic Graph of Jobs to submit.
-wtJobs :: Lens' WorkflowTemplate [OrderedJob]
-wtJobs
-  = lens _wtJobs (\ s a -> s{_wtJobs = a}) . _Default .
-      _Coerce
-
--- | Output only. The time template was last updated.
-wtUpdateTime :: Lens' WorkflowTemplate (Maybe UTCTime)
-wtUpdateTime
-  = lens _wtUpdateTime (\ s a -> s{_wtUpdateTime = a})
-      . mapping _DateTime
-
--- | Output only. The \"resource name\" of the template, as described in
--- https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
--- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
-wtName :: Lens' WorkflowTemplate (Maybe Text)
-wtName = lens _wtName (\ s a -> s{_wtName = a})
-
--- | Optional. Used to perform a consistent read-modify-write.This field
--- should be left blank for a CreateWorkflowTemplate request. It is
--- required for an UpdateWorkflowTemplate request, and must match the
--- current server version. A typical update template flow would fetch the
--- current template with a GetWorkflowTemplate request, which will return
--- the current template with the version field filled in with the current
--- server version. The user updates other fields in the template, then
--- returns it as part of the UpdateWorkflowTemplate request.
-wtVersion :: Lens' WorkflowTemplate (Maybe Int32)
-wtVersion
-  = lens _wtVersion (\ s a -> s{_wtVersion = a}) .
-      mapping _Coerce
-
--- | Optional. Template parameters whose values are substituted into the
--- template. Values for parameters must be provided when the template is
--- instantiated.
-wtParameters :: Lens' WorkflowTemplate [TemplateParameter]
-wtParameters
-  = lens _wtParameters (\ s a -> s{_wtParameters = a})
-      . _Default
-      . _Coerce
-
--- | Required. The template id.The id must contain only letters (a-z, A-Z),
--- numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end
--- with underscore or hyphen. Must consist of between 3 and 50 characters.
-wtId :: Lens' WorkflowTemplate (Maybe Text)
-wtId = lens _wtId (\ s a -> s{_wtId = a})
-
--- | Optional. The labels to associate with this template. These labels will
--- be propagated to all jobs and clusters created by the workflow
--- instance.Label keys must contain 1 to 63 characters, and must conform to
--- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).Label values may be
--- empty, but, if present, must contain 1 to 63 characters, and must
--- conform to RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).No more
--- than 32 labels can be associated with a template.
-wtLabels :: Lens' WorkflowTemplate (Maybe WorkflowTemplateLabels)
-wtLabels = lens _wtLabels (\ s a -> s{_wtLabels = a})
-
--- | Output only. The time template was created.
-wtCreateTime :: Lens' WorkflowTemplate (Maybe UTCTime)
-wtCreateTime
-  = lens _wtCreateTime (\ s a -> s{_wtCreateTime = a})
-      . mapping _DateTime
-
--- | Required. WorkflowTemplate scheduling information.
-wtPlacement :: Lens' WorkflowTemplate (Maybe WorkflowTemplatePlacement)
-wtPlacement
-  = lens _wtPlacement (\ s a -> s{_wtPlacement = a})
-
-instance FromJSON WorkflowTemplate where
-        parseJSON
-          = withObject "WorkflowTemplate"
-              (\ o ->
-                 WorkflowTemplate' <$>
-                   (o .:? "jobs" .!= mempty) <*> (o .:? "updateTime")
-                     <*> (o .:? "name")
-                     <*> (o .:? "version")
-                     <*> (o .:? "parameters" .!= mempty)
-                     <*> (o .:? "id")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "createTime")
-                     <*> (o .:? "placement"))
-
-instance ToJSON WorkflowTemplate where
-        toJSON WorkflowTemplate'{..}
-          = object
-              (catMaybes
-                 [("jobs" .=) <$> _wtJobs,
-                  ("updateTime" .=) <$> _wtUpdateTime,
-                  ("name" .=) <$> _wtName,
-                  ("version" .=) <$> _wtVersion,
-                  ("parameters" .=) <$> _wtParameters,
-                  ("id" .=) <$> _wtId, ("labels" .=) <$> _wtLabels,
-                  ("createTime" .=) <$> _wtCreateTime,
-                  ("placement" .=) <$> _wtPlacement])
-
--- | The status of the operation.
---
--- /See:/ 'clusterOperationStatus' smart constructor.
-data ClusterOperationStatus = ClusterOperationStatus'
-    { _cosState          :: !(Maybe ClusterOperationStatusState)
-    , _cosInnerState     :: !(Maybe Text)
-    , _cosStateStartTime :: !(Maybe DateTime')
-    , _cosDetails        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterOperationStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cosState'
---
--- * 'cosInnerState'
---
--- * 'cosStateStartTime'
---
--- * 'cosDetails'
-clusterOperationStatus
-    :: ClusterOperationStatus
-clusterOperationStatus =
-    ClusterOperationStatus'
-    { _cosState = Nothing
-    , _cosInnerState = Nothing
-    , _cosStateStartTime = Nothing
-    , _cosDetails = Nothing
-    }
-
--- | Output only. A message containing the operation state.
-cosState :: Lens' ClusterOperationStatus (Maybe ClusterOperationStatusState)
-cosState = lens _cosState (\ s a -> s{_cosState = a})
-
--- | Output only. A message containing the detailed operation state.
-cosInnerState :: Lens' ClusterOperationStatus (Maybe Text)
-cosInnerState
-  = lens _cosInnerState
-      (\ s a -> s{_cosInnerState = a})
-
--- | Output only. The time this state was entered.
-cosStateStartTime :: Lens' ClusterOperationStatus (Maybe UTCTime)
-cosStateStartTime
-  = lens _cosStateStartTime
-      (\ s a -> s{_cosStateStartTime = a})
-      . mapping _DateTime
-
--- | Output only. A message containing any operation metadata details.
-cosDetails :: Lens' ClusterOperationStatus (Maybe Text)
-cosDetails
-  = lens _cosDetails (\ s a -> s{_cosDetails = a})
-
-instance FromJSON ClusterOperationStatus where
-        parseJSON
-          = withObject "ClusterOperationStatus"
-              (\ o ->
-                 ClusterOperationStatus' <$>
-                   (o .:? "state") <*> (o .:? "innerState") <*>
-                     (o .:? "stateStartTime")
-                     <*> (o .:? "details"))
-
-instance ToJSON ClusterOperationStatus where
-        toJSON ClusterOperationStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _cosState,
-                  ("innerState" .=) <$> _cosInnerState,
-                  ("stateStartTime" .=) <$> _cosStateStartTime,
-                  ("details" .=) <$> _cosDetails])
-
---
--- /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
-
--- | Optional. A mapping of property names to values, used to configure Spark
--- SQL\'s SparkConf. Properties that conflict with values set by the Cloud
--- Dataproc API may be overwritten.
---
--- /See:/ 'sparkSQLJobProperties' smart constructor.
-newtype SparkSQLJobProperties = SparkSQLJobProperties'
-    { _ssqljpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SparkSQLJobProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssqljpAddtional'
-sparkSQLJobProperties
-    :: HashMap Text Text -- ^ 'ssqljpAddtional'
-    -> SparkSQLJobProperties
-sparkSQLJobProperties pSsqljpAddtional_ =
-    SparkSQLJobProperties'
-    { _ssqljpAddtional = _Coerce # pSsqljpAddtional_
-    }
-
-ssqljpAddtional :: Lens' SparkSQLJobProperties (HashMap Text Text)
-ssqljpAddtional
-  = lens _ssqljpAddtional
-      (\ s a -> s{_ssqljpAddtional = a})
-      . _Coerce
-
-instance FromJSON SparkSQLJobProperties where
-        parseJSON
-          = withObject "SparkSQLJobProperties"
-              (\ o ->
-                 SparkSQLJobProperties' <$> (parseJSONObject o))
-
-instance ToJSON SparkSQLJobProperties where
-        toJSON = toJSON . _ssqljpAddtional
-
--- | Optional. The labels to associate with this template. These labels will
--- be propagated to all jobs and clusters created by the workflow
--- instance.Label keys must contain 1 to 63 characters, and must conform to
--- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).Label values may be
--- empty, but, if present, must contain 1 to 63 characters, and must
--- conform to RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).No more
--- than 32 labels can be associated with a template.
---
--- /See:/ 'workflowTemplateLabels' smart constructor.
-newtype WorkflowTemplateLabels = WorkflowTemplateLabels'
-    { _wtlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowTemplateLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wtlAddtional'
-workflowTemplateLabels
-    :: HashMap Text Text -- ^ 'wtlAddtional'
-    -> WorkflowTemplateLabels
-workflowTemplateLabels pWtlAddtional_ =
-    WorkflowTemplateLabels'
-    { _wtlAddtional = _Coerce # pWtlAddtional_
-    }
-
-wtlAddtional :: Lens' WorkflowTemplateLabels (HashMap Text Text)
-wtlAddtional
-  = lens _wtlAddtional (\ s a -> s{_wtlAddtional = a})
-      . _Coerce
-
-instance FromJSON WorkflowTemplateLabels where
-        parseJSON
-          = withObject "WorkflowTemplateLabels"
-              (\ o ->
-                 WorkflowTemplateLabels' <$> (parseJSONObject o))
-
-instance ToJSON WorkflowTemplateLabels where
-        toJSON = toJSON . _wtlAddtional
-
--- | Specifies an executable to run on a fully configured node and a timeout
--- period for executable completion.
---
--- /See:/ 'nodeInitializationAction' smart constructor.
-data NodeInitializationAction = NodeInitializationAction'
-    { _niaExecutionTimeout :: !(Maybe GDuration)
-    , _niaExecutableFile   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodeInitializationAction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'niaExecutionTimeout'
---
--- * 'niaExecutableFile'
-nodeInitializationAction
-    :: NodeInitializationAction
-nodeInitializationAction =
-    NodeInitializationAction'
-    { _niaExecutionTimeout = Nothing
-    , _niaExecutableFile = Nothing
-    }
-
--- | Optional. Amount of time executable has to complete. Default is 10
--- minutes. Cluster creation fails with an explanatory error message (the
--- name of the executable that caused the error and the exceeded timeout
--- period) if the executable is not completed at end of the timeout period.
-niaExecutionTimeout :: Lens' NodeInitializationAction (Maybe Scientific)
-niaExecutionTimeout
-  = lens _niaExecutionTimeout
-      (\ s a -> s{_niaExecutionTimeout = a})
-      . mapping _GDuration
-
--- | Required. Cloud Storage URI of executable file.
-niaExecutableFile :: Lens' NodeInitializationAction (Maybe Text)
-niaExecutableFile
-  = lens _niaExecutableFile
-      (\ s a -> s{_niaExecutableFile = a})
-
-instance FromJSON NodeInitializationAction where
-        parseJSON
-          = withObject "NodeInitializationAction"
-              (\ o ->
-                 NodeInitializationAction' <$>
-                   (o .:? "executionTimeout") <*>
-                     (o .:? "executableFile"))
-
-instance ToJSON NodeInitializationAction where
-        toJSON NodeInitializationAction'{..}
-          = object
-              (catMaybes
-                 [("executionTimeout" .=) <$> _niaExecutionTimeout,
-                  ("executableFile" .=) <$> _niaExecutableFile])
-
--- | The YARN metrics.
---
--- /See:/ 'clusterMetricsYarnMetrics' smart constructor.
-newtype ClusterMetricsYarnMetrics = ClusterMetricsYarnMetrics'
-    { _cmymAddtional :: HashMap Text (Textual Int64)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterMetricsYarnMetrics' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmymAddtional'
-clusterMetricsYarnMetrics
-    :: HashMap Text Int64 -- ^ 'cmymAddtional'
-    -> ClusterMetricsYarnMetrics
-clusterMetricsYarnMetrics pCmymAddtional_ =
-    ClusterMetricsYarnMetrics'
-    { _cmymAddtional = _Coerce # pCmymAddtional_
-    }
-
-cmymAddtional :: Lens' ClusterMetricsYarnMetrics (HashMap Text Int64)
-cmymAddtional
-  = lens _cmymAddtional
-      (\ s a -> s{_cmymAddtional = a})
-      . _Coerce
-
-instance FromJSON ClusterMetricsYarnMetrics where
-        parseJSON
-          = withObject "ClusterMetricsYarnMetrics"
-              (\ o ->
-                 ClusterMetricsYarnMetrics' <$> (parseJSONObject o))
-
-instance ToJSON ClusterMetricsYarnMetrics where
-        toJSON = toJSON . _cmymAddtional
-
--- | Validation based on regular expressions.
---
--- /See:/ 'regexValidation' smart constructor.
-newtype RegexValidation = RegexValidation'
-    { _rvRegexes :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RegexValidation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rvRegexes'
-regexValidation
-    :: RegexValidation
-regexValidation =
-    RegexValidation'
-    { _rvRegexes = Nothing
-    }
-
--- | Required. RE2 regular expressions used to validate the parameter\'s
--- value. The value must match the regex in its entirety (substring matches
--- are not sufficient).
-rvRegexes :: Lens' RegexValidation [Text]
-rvRegexes
-  = lens _rvRegexes (\ s a -> s{_rvRegexes = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON RegexValidation where
-        parseJSON
-          = withObject "RegexValidation"
-              (\ o ->
-                 RegexValidation' <$> (o .:? "regexes" .!= mempty))
-
-instance ToJSON RegexValidation where
-        toJSON RegexValidation'{..}
-          = object (catMaybes [("regexes" .=) <$> _rvRegexes])
-
--- | Cloud Dataproc job config.
---
--- /See:/ 'jobPlacement' smart constructor.
-data JobPlacement = JobPlacement'
-    { _jpClusterUuid :: !(Maybe Text)
-    , _jpClusterName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobPlacement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jpClusterUuid'
---
--- * 'jpClusterName'
-jobPlacement
-    :: JobPlacement
-jobPlacement =
-    JobPlacement'
-    { _jpClusterUuid = Nothing
-    , _jpClusterName = Nothing
-    }
-
--- | Output only. A cluster UUID generated by the Cloud Dataproc service when
--- the job is submitted.
-jpClusterUuid :: Lens' JobPlacement (Maybe Text)
-jpClusterUuid
-  = lens _jpClusterUuid
-      (\ s a -> s{_jpClusterUuid = a})
-
--- | Required. The name of the cluster where the job will be submitted.
-jpClusterName :: Lens' JobPlacement (Maybe Text)
-jpClusterName
-  = lens _jpClusterName
-      (\ s a -> s{_jpClusterName = a})
-
-instance FromJSON JobPlacement where
-        parseJSON
-          = withObject "JobPlacement"
-              (\ o ->
-                 JobPlacement' <$>
-                   (o .:? "clusterUuid") <*> (o .:? "clusterName"))
-
-instance ToJSON JobPlacement where
-        toJSON JobPlacement'{..}
-          = object
-              (catMaybes
-                 [("clusterUuid" .=) <$> _jpClusterUuid,
-                  ("clusterName" .=) <$> _jpClusterName])
-
--- | Request message for SetIamPolicy method.
---
--- /See:/ 'setIAMPolicyRequest' smart constructor.
-newtype SetIAMPolicyRequest = SetIAMPolicyRequest'
-    { _siprPolicy :: Maybe Policy
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetIAMPolicyRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'siprPolicy'
-setIAMPolicyRequest
-    :: SetIAMPolicyRequest
-setIAMPolicyRequest =
-    SetIAMPolicyRequest'
-    { _siprPolicy = Nothing
-    }
-
--- | REQUIRED: The complete policy to be applied to the resource. The size of
--- the policy is limited to a few 10s of KB. An empty policy is a valid
--- policy but certain Cloud Platform services (such as Projects) might
--- reject them.
-siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)
-siprPolicy
-  = lens _siprPolicy (\ s a -> s{_siprPolicy = a})
-
-instance FromJSON SetIAMPolicyRequest where
-        parseJSON
-          = withObject "SetIAMPolicyRequest"
-              (\ o -> SetIAMPolicyRequest' <$> (o .:? "policy"))
-
-instance ToJSON SetIAMPolicyRequest where
-        toJSON SetIAMPolicyRequest'{..}
-          = object (catMaybes [("policy" .=) <$> _siprPolicy])
-
--- | A configurable parameter that replaces one or more fields in the
--- template. Parameterizable fields: - Labels - File uris - Job properties
--- - Job arguments - Script variables - Main class (in HadoopJob and
--- SparkJob) - Zone (in ClusterSelector)
---
--- /See:/ 'templateParameter' smart constructor.
-data TemplateParameter = TemplateParameter'
-    { _tpName        :: !(Maybe Text)
-    , _tpValidation  :: !(Maybe ParameterValidation)
-    , _tpDescription :: !(Maybe Text)
-    , _tpFields      :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TemplateParameter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpName'
---
--- * 'tpValidation'
---
--- * 'tpDescription'
---
--- * 'tpFields'
-templateParameter
-    :: TemplateParameter
-templateParameter =
-    TemplateParameter'
-    { _tpName = Nothing
-    , _tpValidation = Nothing
-    , _tpDescription = Nothing
-    , _tpFields = Nothing
-    }
-
--- | Required. Parameter name. The parameter name is used as the key, and
--- paired with the parameter value, which are passed to the template when
--- the template is instantiated. The name must contain only capital letters
--- (A-Z), numbers (0-9), and underscores (_), and must not start with a
--- number. The maximum length is 40 characters.
-tpName :: Lens' TemplateParameter (Maybe Text)
-tpName = lens _tpName (\ s a -> s{_tpName = a})
-
--- | Optional. Validation rules to be applied to this parameter\'s value.
-tpValidation :: Lens' TemplateParameter (Maybe ParameterValidation)
-tpValidation
-  = lens _tpValidation (\ s a -> s{_tpValidation = a})
-
--- | Optional. Brief description of the parameter. Must not exceed 1024
--- characters.
-tpDescription :: Lens' TemplateParameter (Maybe Text)
-tpDescription
-  = lens _tpDescription
-      (\ s a -> s{_tpDescription = a})
-
--- | Required. Paths to all fields that the parameter replaces. A field is
--- allowed to appear in at most one parameter\'s list of field paths.A
--- field path is similar in syntax to a google.protobuf.FieldMask. For
--- example, a field path that references the zone field of a workflow
--- template\'s cluster selector would be specified as
--- placement.clusterSelector.zone.Also, field paths can reference fields
--- using the following syntax: Values in maps can be referenced by key:
--- labels\'key\' placement.clusterSelector.clusterLabels\'key\'
--- placement.managedCluster.labels\'key\'
--- placement.clusterSelector.clusterLabels\'key\'
--- jobs\'step-id\'.labels\'key\' Jobs in the jobs list can be referenced by
--- step-id: jobs\'step-id\'.hadoopJob.mainJarFileUri
--- jobs\'step-id\'.hiveJob.queryFileUri
--- jobs\'step-id\'.pySparkJob.mainPythonFileUri
--- jobs\'step-id\'.hadoopJob.jarFileUris0
--- jobs\'step-id\'.hadoopJob.archiveUris0
--- jobs\'step-id\'.hadoopJob.fileUris0
--- jobs\'step-id\'.pySparkJob.pythonFileUris0 Items in repeated fields can
--- be referenced by a zero-based index: jobs\'step-id\'.sparkJob.args0
--- Other examples: jobs\'step-id\'.hadoopJob.properties\'key\'
--- jobs\'step-id\'.hadoopJob.args0
--- jobs\'step-id\'.hiveJob.scriptVariables\'key\'
--- jobs\'step-id\'.hadoopJob.mainJarFileUri
--- placement.clusterSelector.zoneIt may not be possible to parameterize
--- maps and repeated fields in their entirety since only individual map
--- values and individual items in repeated fields can be referenced. For
--- example, the following field paths are invalid:
--- placement.clusterSelector.clusterLabels jobs\'step-id\'.sparkJob.args
-tpFields :: Lens' TemplateParameter [Text]
-tpFields
-  = lens _tpFields (\ s a -> s{_tpFields = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON TemplateParameter where
-        parseJSON
-          = withObject "TemplateParameter"
-              (\ o ->
-                 TemplateParameter' <$>
-                   (o .:? "name") <*> (o .:? "validation") <*>
-                     (o .:? "description")
-                     <*> (o .:? "fields" .!= mempty))
-
-instance ToJSON TemplateParameter where
-        toJSON TemplateParameter'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _tpName,
-                  ("validation" .=) <$> _tpValidation,
-                  ("description" .=) <$> _tpDescription,
-                  ("fields" .=) <$> _tpFields])
-
--- | Common config settings for resources of Compute Engine cluster
--- instances, applicable to all instances in the cluster.
---
--- /See:/ 'gceClusterConfig' smart constructor.
-data GceClusterConfig = GceClusterConfig'
-    { _gccSubnetworkURI        :: !(Maybe Text)
-    , _gccInternalIPOnly       :: !(Maybe Bool)
-    , _gccNetworkURI           :: !(Maybe Text)
-    , _gccZoneURI              :: !(Maybe Text)
-    , _gccServiceAccount       :: !(Maybe Text)
-    , _gccMetadata             :: !(Maybe GceClusterConfigMetadata)
-    , _gccServiceAccountScopes :: !(Maybe [Text])
-    , _gccTags                 :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GceClusterConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gccSubnetworkURI'
---
--- * 'gccInternalIPOnly'
---
--- * 'gccNetworkURI'
---
--- * 'gccZoneURI'
---
--- * 'gccServiceAccount'
---
--- * 'gccMetadata'
---
--- * 'gccServiceAccountScopes'
---
--- * 'gccTags'
-gceClusterConfig
-    :: GceClusterConfig
-gceClusterConfig =
-    GceClusterConfig'
-    { _gccSubnetworkURI = Nothing
-    , _gccInternalIPOnly = Nothing
-    , _gccNetworkURI = Nothing
-    , _gccZoneURI = Nothing
-    , _gccServiceAccount = Nothing
-    , _gccMetadata = Nothing
-    , _gccServiceAccountScopes = Nothing
-    , _gccTags = Nothing
-    }
-
--- | Optional. The Compute Engine subnetwork to be used for machine
--- communications. Cannot be specified with network_uri.A full URL, partial
--- URI, or short name are valid. Examples:
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/regions\/us-east1\/sub0
--- projects\/[project_id]\/regions\/us-east1\/sub0 sub0
-gccSubnetworkURI :: Lens' GceClusterConfig (Maybe Text)
-gccSubnetworkURI
-  = lens _gccSubnetworkURI
-      (\ s a -> s{_gccSubnetworkURI = a})
-
--- | Optional. If true, all instances in the cluster will only have internal
--- IP addresses. By default, clusters are not restricted to internal IP
--- addresses, and will have ephemeral external IP addresses assigned to
--- each instance. This internal_ip_only restriction can only be enabled for
--- subnetwork enabled networks, and all off-cluster dependencies must be
--- configured to be accessible without external IP addresses.
-gccInternalIPOnly :: Lens' GceClusterConfig (Maybe Bool)
-gccInternalIPOnly
-  = lens _gccInternalIPOnly
-      (\ s a -> s{_gccInternalIPOnly = a})
-
--- | Optional. The Compute Engine network to be used for machine
--- communications. Cannot be specified with subnetwork_uri. If neither
--- network_uri nor subnetwork_uri is specified, the \"default\" network of
--- the project is used, if it exists. Cannot be a \"Custom Subnet Network\"
--- (see Using Subnetworks for more information).A full URL, partial URI, or
--- short name are valid. Examples:
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/regions\/global\/default
--- projects\/[project_id]\/regions\/global\/default default
-gccNetworkURI :: Lens' GceClusterConfig (Maybe Text)
-gccNetworkURI
-  = lens _gccNetworkURI
-      (\ s a -> s{_gccNetworkURI = a})
-
--- | Optional. The zone where the Compute Engine cluster will be located. On
--- a create request, it is required in the \"global\" region. If omitted in
--- a non-global Cloud Dataproc region, the service will pick a zone in the
--- corresponding Compute Engine region. On a get request, zone will always
--- be present.A full URL, partial URI, or short name are valid. Examples:
--- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/zones\/[zone]
--- projects\/[project_id]\/zones\/[zone] us-central1-f
-gccZoneURI :: Lens' GceClusterConfig (Maybe Text)
-gccZoneURI
-  = lens _gccZoneURI (\ s a -> s{_gccZoneURI = a})
-
--- | Optional. The service account of the instances. Defaults to the default
--- Compute Engine service account. Custom service accounts need permissions
--- equivalent to the following IAM roles: roles\/logging.logWriter
--- roles\/storage.objectAdmin(see
--- https:\/\/cloud.google.com\/compute\/docs\/access\/service-accounts#custom_service_accounts
--- for more information). Example:
--- [account_id]\'[project_id].iam.gserviceaccount.com
-gccServiceAccount :: Lens' GceClusterConfig (Maybe Text)
-gccServiceAccount
-  = lens _gccServiceAccount
-      (\ s a -> s{_gccServiceAccount = a})
-
--- | The Compute Engine metadata entries to add to all instances (see Project
--- and instance metadata
--- (https:\/\/cloud.google.com\/compute\/docs\/storing-retrieving-metadata#project_and_instance_metadata)).
-gccMetadata :: Lens' GceClusterConfig (Maybe GceClusterConfigMetadata)
-gccMetadata
-  = lens _gccMetadata (\ s a -> s{_gccMetadata = a})
-
--- | Optional. The URIs of service account scopes to be included in Compute
--- Engine instances. The following base set of scopes is always included:
--- https:\/\/www.googleapis.com\/auth\/cloud.useraccounts.readonly
--- https:\/\/www.googleapis.com\/auth\/devstorage.read_write
--- https:\/\/www.googleapis.com\/auth\/logging.writeIf no scopes are
--- specified, the following defaults are also provided:
--- https:\/\/www.googleapis.com\/auth\/bigquery
--- https:\/\/www.googleapis.com\/auth\/bigtable.admin.table
--- https:\/\/www.googleapis.com\/auth\/bigtable.data
--- https:\/\/www.googleapis.com\/auth\/devstorage.full_control
-gccServiceAccountScopes :: Lens' GceClusterConfig [Text]
-gccServiceAccountScopes
-  = lens _gccServiceAccountScopes
-      (\ s a -> s{_gccServiceAccountScopes = a})
-      . _Default
-      . _Coerce
-
--- | The Compute Engine tags to add to all instances (see Tagging instances).
-gccTags :: Lens' GceClusterConfig [Text]
-gccTags
-  = lens _gccTags (\ s a -> s{_gccTags = a}) . _Default
-      . _Coerce
-
-instance FromJSON GceClusterConfig where
-        parseJSON
-          = withObject "GceClusterConfig"
-              (\ o ->
-                 GceClusterConfig' <$>
-                   (o .:? "subnetworkUri") <*> (o .:? "internalIpOnly")
-                     <*> (o .:? "networkUri")
-                     <*> (o .:? "zoneUri")
-                     <*> (o .:? "serviceAccount")
-                     <*> (o .:? "metadata")
-                     <*> (o .:? "serviceAccountScopes" .!= mempty)
-                     <*> (o .:? "tags" .!= mempty))
-
-instance ToJSON GceClusterConfig where
-        toJSON GceClusterConfig'{..}
-          = object
-              (catMaybes
-                 [("subnetworkUri" .=) <$> _gccSubnetworkURI,
-                  ("internalIpOnly" .=) <$> _gccInternalIPOnly,
-                  ("networkUri" .=) <$> _gccNetworkURI,
-                  ("zoneUri" .=) <$> _gccZoneURI,
-                  ("serviceAccount" .=) <$> _gccServiceAccount,
-                  ("metadata" .=) <$> _gccMetadata,
-                  ("serviceAccountScopes" .=) <$>
-                    _gccServiceAccountScopes,
-                  ("tags" .=) <$> _gccTags])
-
--- | A response to a request to list workflow templates in a project.
---
--- /See:/ 'listWorkflowTemplatesResponse' smart constructor.
-data ListWorkflowTemplatesResponse = ListWorkflowTemplatesResponse'
-    { _lwtrNextPageToken :: !(Maybe Text)
-    , _lwtrTemplates     :: !(Maybe [WorkflowTemplate])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListWorkflowTemplatesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lwtrNextPageToken'
---
--- * 'lwtrTemplates'
-listWorkflowTemplatesResponse
-    :: ListWorkflowTemplatesResponse
-listWorkflowTemplatesResponse =
-    ListWorkflowTemplatesResponse'
-    { _lwtrNextPageToken = Nothing
-    , _lwtrTemplates = Nothing
-    }
-
--- | Output only. This token is included in the response if there are more
--- results to fetch. To fetch additional results, provide this value as the
--- page_token in a subsequent 'ListWorkflowTemplatesRequest'.
-lwtrNextPageToken :: Lens' ListWorkflowTemplatesResponse (Maybe Text)
-lwtrNextPageToken
-  = lens _lwtrNextPageToken
-      (\ s a -> s{_lwtrNextPageToken = a})
-
--- | Output only. WorkflowTemplates list.
-lwtrTemplates :: Lens' ListWorkflowTemplatesResponse [WorkflowTemplate]
-lwtrTemplates
-  = lens _lwtrTemplates
-      (\ s a -> s{_lwtrTemplates = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListWorkflowTemplatesResponse where
-        parseJSON
-          = withObject "ListWorkflowTemplatesResponse"
-              (\ o ->
-                 ListWorkflowTemplatesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "templates" .!= mempty))
-
-instance ToJSON ListWorkflowTemplatesResponse where
-        toJSON ListWorkflowTemplatesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lwtrNextPageToken,
-                  ("templates" .=) <$> _lwtrTemplates])
-
--- | The Compute Engine metadata entries to add to all instances (see Project
--- and instance metadata
--- (https:\/\/cloud.google.com\/compute\/docs\/storing-retrieving-metadata#project_and_instance_metadata)).
---
--- /See:/ 'gceClusterConfigMetadata' smart constructor.
-newtype GceClusterConfigMetadata = GceClusterConfigMetadata'
-    { _gccmAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GceClusterConfigMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gccmAddtional'
-gceClusterConfigMetadata
-    :: HashMap Text Text -- ^ 'gccmAddtional'
-    -> GceClusterConfigMetadata
-gceClusterConfigMetadata pGccmAddtional_ =
-    GceClusterConfigMetadata'
-    { _gccmAddtional = _Coerce # pGccmAddtional_
-    }
-
-gccmAddtional :: Lens' GceClusterConfigMetadata (HashMap Text Text)
-gccmAddtional
-  = lens _gccmAddtional
-      (\ s a -> s{_gccmAddtional = a})
-      . _Coerce
-
-instance FromJSON GceClusterConfigMetadata where
-        parseJSON
-          = withObject "GceClusterConfigMetadata"
-              (\ o ->
-                 GceClusterConfigMetadata' <$> (parseJSONObject o))
-
-instance ToJSON GceClusterConfigMetadata where
-        toJSON = toJSON . _gccmAddtional
-
--- | Optional. A mapping of property names and values, used to configure
--- Hive. Properties that conflict with values set by the Cloud Dataproc API
--- may be overwritten. Can include properties set in
--- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/hive\/conf\/hive-site.xml, and
--- classes in user code.
---
--- /See:/ 'hiveJobProperties' smart constructor.
-newtype HiveJobProperties = HiveJobProperties'
-    { _hAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HiveJobProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hAddtional'
-hiveJobProperties
-    :: HashMap Text Text -- ^ 'hAddtional'
-    -> HiveJobProperties
-hiveJobProperties pHAddtional_ =
-    HiveJobProperties'
-    { _hAddtional = _Coerce # pHAddtional_
-    }
-
-hAddtional :: Lens' HiveJobProperties (HashMap Text Text)
-hAddtional
-  = lens _hAddtional (\ s a -> s{_hAddtional = a}) .
-      _Coerce
-
-instance FromJSON HiveJobProperties where
-        parseJSON
-          = withObject "HiveJobProperties"
-              (\ o -> HiveJobProperties' <$> (parseJSONObject o))
-
-instance ToJSON HiveJobProperties where
-        toJSON = toJSON . _hAddtional
-
--- | Map from parameter names to values that were used for those parameters.
---
--- /See:/ 'workflowMetadataParameters' smart constructor.
-newtype WorkflowMetadataParameters = WorkflowMetadataParameters'
-    { _wmpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowMetadataParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wmpAddtional'
-workflowMetadataParameters
-    :: HashMap Text Text -- ^ 'wmpAddtional'
-    -> WorkflowMetadataParameters
-workflowMetadataParameters pWmpAddtional_ =
-    WorkflowMetadataParameters'
-    { _wmpAddtional = _Coerce # pWmpAddtional_
-    }
-
-wmpAddtional :: Lens' WorkflowMetadataParameters (HashMap Text Text)
-wmpAddtional
-  = lens _wmpAddtional (\ s a -> s{_wmpAddtional = a})
-      . _Coerce
-
-instance FromJSON WorkflowMetadataParameters where
-        parseJSON
-          = withObject "WorkflowMetadataParameters"
-              (\ o ->
-                 WorkflowMetadataParameters' <$> (parseJSONObject o))
-
-instance ToJSON WorkflowMetadataParameters where
-        toJSON = toJSON . _wmpAddtional
-
--- | Cluster that is managed by the workflow.
---
--- /See:/ 'managedCluster' smart constructor.
-data ManagedCluster = ManagedCluster'
-    { _mcConfig      :: !(Maybe ClusterConfig)
-    , _mcClusterName :: !(Maybe Text)
-    , _mcLabels      :: !(Maybe ManagedClusterLabels)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedCluster' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcConfig'
---
--- * 'mcClusterName'
---
--- * 'mcLabels'
-managedCluster
-    :: ManagedCluster
-managedCluster =
-    ManagedCluster'
-    { _mcConfig = Nothing
-    , _mcClusterName = Nothing
-    , _mcLabels = Nothing
-    }
-
--- | Required. The cluster configuration.
-mcConfig :: Lens' ManagedCluster (Maybe ClusterConfig)
-mcConfig = lens _mcConfig (\ s a -> s{_mcConfig = a})
-
--- | Required. The cluster name prefix. A unique cluster name will be formed
--- by appending a random suffix.The name must contain only lower-case
--- letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter.
--- Cannot begin or end with hyphen. Must consist of between 2 and 35
--- characters.
-mcClusterName :: Lens' ManagedCluster (Maybe Text)
-mcClusterName
-  = lens _mcClusterName
-      (\ s a -> s{_mcClusterName = a})
-
--- | Optional. The labels to associate with this cluster.Label keys must be
--- between 1 and 63 characters long, and must conform to the following PCRE
--- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
--- and 63 characters long, and must conform to the following PCRE regular
--- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
--- associated with a given cluster.
-mcLabels :: Lens' ManagedCluster (Maybe ManagedClusterLabels)
-mcLabels = lens _mcLabels (\ s a -> s{_mcLabels = a})
-
-instance FromJSON ManagedCluster where
-        parseJSON
-          = withObject "ManagedCluster"
-              (\ o ->
-                 ManagedCluster' <$>
-                   (o .:? "config") <*> (o .:? "clusterName") <*>
-                     (o .:? "labels"))
-
-instance ToJSON ManagedCluster where
-        toJSON ManagedCluster'{..}
-          = object
-              (catMaybes
-                 [("config" .=) <$> _mcConfig,
-                  ("clusterName" .=) <$> _mcClusterName,
-                  ("labels" .=) <$> _mcLabels])
-
--- | Optional. The labels to associate with this cluster. Label keys must
--- contain 1 to 63 characters, and must conform to RFC 1035
--- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
--- but, if present, must contain 1 to 63 characters, and must conform to
--- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
--- labels can be associated with a cluster.
---
--- /See:/ 'clusterLabels' smart constructor.
-newtype ClusterLabels = ClusterLabels'
-    { _clAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'clAddtional'
-clusterLabels
-    :: HashMap Text Text -- ^ 'clAddtional'
-    -> ClusterLabels
-clusterLabels pClAddtional_ =
-    ClusterLabels'
-    { _clAddtional = _Coerce # pClAddtional_
-    }
-
-clAddtional :: Lens' ClusterLabels (HashMap Text Text)
-clAddtional
-  = lens _clAddtional (\ s a -> s{_clAddtional = a}) .
-      _Coerce
-
-instance FromJSON ClusterLabels where
-        parseJSON
-          = withObject "ClusterLabels"
-              (\ o -> ClusterLabels' <$> (parseJSONObject o))
-
-instance ToJSON ClusterLabels where
-        toJSON = toJSON . _clAddtional
-
--- | A Cloud Dataproc job resource.
---
--- /See:/ 'job' smart constructor.
-data Job = Job'
-    { _jSparkJob                :: !(Maybe SparkJob)
-    , _jStatus                  :: !(Maybe JobStatus)
-    , _jDriverControlFilesURI   :: !(Maybe Text)
-    , _jHiveJob                 :: !(Maybe HiveJob)
-    , _jReference               :: !(Maybe JobReference)
-    , _jSparkSQLJob             :: !(Maybe SparkSQLJob)
-    , _jHadoopJob               :: !(Maybe HadoopJob)
-    , _jJobUuid                 :: !(Maybe Text)
-    , _jYarnApplications        :: !(Maybe [YarnApplication])
-    , _jLabels                  :: !(Maybe JobLabels)
-    , _jPysparkJob              :: !(Maybe PySparkJob)
-    , _jDriverOutputResourceURI :: !(Maybe Text)
-    , _jScheduling              :: !(Maybe JobScheduling)
-    , _jStatusHistory           :: !(Maybe [JobStatus])
-    , _jPlacement               :: !(Maybe JobPlacement)
-    , _jPigJob                  :: !(Maybe PigJob)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Job' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jSparkJob'
---
--- * 'jStatus'
---
--- * 'jDriverControlFilesURI'
---
--- * 'jHiveJob'
---
--- * 'jReference'
---
--- * 'jSparkSQLJob'
---
--- * 'jHadoopJob'
---
--- * 'jJobUuid'
---
--- * 'jYarnApplications'
---
--- * 'jLabels'
---
--- * 'jPysparkJob'
---
--- * 'jDriverOutputResourceURI'
---
--- * 'jScheduling'
---
--- * 'jStatusHistory'
---
--- * 'jPlacement'
---
--- * 'jPigJob'
-job
-    :: Job
-job =
-    Job'
-    { _jSparkJob = Nothing
-    , _jStatus = Nothing
-    , _jDriverControlFilesURI = Nothing
-    , _jHiveJob = Nothing
-    , _jReference = Nothing
-    , _jSparkSQLJob = Nothing
-    , _jHadoopJob = Nothing
-    , _jJobUuid = Nothing
-    , _jYarnApplications = Nothing
-    , _jLabels = Nothing
-    , _jPysparkJob = Nothing
-    , _jDriverOutputResourceURI = Nothing
-    , _jScheduling = Nothing
-    , _jStatusHistory = Nothing
-    , _jPlacement = Nothing
-    , _jPigJob = Nothing
-    }
-
--- | Job is a Spark job.
-jSparkJob :: Lens' Job (Maybe SparkJob)
-jSparkJob
-  = lens _jSparkJob (\ s a -> s{_jSparkJob = a})
-
--- | Output only. The job status. Additional application-specific status
--- information may be contained in the 'type_job' and 'yarn_applications'
--- fields.
-jStatus :: Lens' Job (Maybe JobStatus)
-jStatus = lens _jStatus (\ s a -> s{_jStatus = a})
-
--- | Output only. If present, the location of miscellaneous control files
--- which may be used as part of job setup and handling. If not present,
--- control files may be placed in the same location as driver_output_uri.
-jDriverControlFilesURI :: Lens' Job (Maybe Text)
-jDriverControlFilesURI
-  = lens _jDriverControlFilesURI
-      (\ s a -> s{_jDriverControlFilesURI = a})
-
--- | Job is a Hive job.
-jHiveJob :: Lens' Job (Maybe HiveJob)
-jHiveJob = lens _jHiveJob (\ s a -> s{_jHiveJob = a})
-
--- | Optional. The fully qualified reference to the job, which can be used to
--- obtain the equivalent REST path of the job resource. If this property is
--- not specified when a job is created, the server generates a 'job_id'.
-jReference :: Lens' Job (Maybe JobReference)
-jReference
-  = lens _jReference (\ s a -> s{_jReference = a})
-
--- | Job is a SparkSql job.
-jSparkSQLJob :: Lens' Job (Maybe SparkSQLJob)
-jSparkSQLJob
-  = lens _jSparkSQLJob (\ s a -> s{_jSparkSQLJob = a})
-
--- | Job is a Hadoop job.
-jHadoopJob :: Lens' Job (Maybe HadoopJob)
-jHadoopJob
-  = lens _jHadoopJob (\ s a -> s{_jHadoopJob = a})
-
--- | Output only. A UUID that uniquely identifies a job within the project
--- over time. This is in contrast to a user-settable reference.job_id that
--- may be reused over time.
-jJobUuid :: Lens' Job (Maybe Text)
-jJobUuid = lens _jJobUuid (\ s a -> s{_jJobUuid = a})
-
--- | Output only. The collection of YARN applications spun up by this
--- job.Beta Feature: This report is available for testing purposes only. It
--- may be changed before final release.
-jYarnApplications :: Lens' Job [YarnApplication]
-jYarnApplications
-  = lens _jYarnApplications
-      (\ s a -> s{_jYarnApplications = a})
-      . _Default
-      . _Coerce
-
--- | Optional. The labels to associate with this job. Label keys must contain
--- 1 to 63 characters, and must conform to RFC 1035
--- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
--- but, if present, must contain 1 to 63 characters, and must conform to
--- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
--- labels can be associated with a job.
-jLabels :: Lens' Job (Maybe JobLabels)
-jLabels = lens _jLabels (\ s a -> s{_jLabels = a})
-
--- | Job is a Pyspark job.
-jPysparkJob :: Lens' Job (Maybe PySparkJob)
-jPysparkJob
-  = lens _jPysparkJob (\ s a -> s{_jPysparkJob = a})
-
--- | Output only. A URI pointing to the location of the stdout of the job\'s
--- driver program.
-jDriverOutputResourceURI :: Lens' Job (Maybe Text)
-jDriverOutputResourceURI
-  = lens _jDriverOutputResourceURI
-      (\ s a -> s{_jDriverOutputResourceURI = a})
-
--- | Optional. Job scheduling configuration.
-jScheduling :: Lens' Job (Maybe JobScheduling)
-jScheduling
-  = lens _jScheduling (\ s a -> s{_jScheduling = a})
-
--- | Output only. The previous job status.
-jStatusHistory :: Lens' Job [JobStatus]
-jStatusHistory
-  = lens _jStatusHistory
-      (\ s a -> s{_jStatusHistory = a})
-      . _Default
-      . _Coerce
-
--- | Required. Job information, including how, when, and where to run the
--- job.
-jPlacement :: Lens' Job (Maybe JobPlacement)
-jPlacement
-  = lens _jPlacement (\ s a -> s{_jPlacement = a})
-
--- | Job is a Pig job.
-jPigJob :: Lens' Job (Maybe PigJob)
-jPigJob = lens _jPigJob (\ s a -> s{_jPigJob = a})
-
-instance FromJSON Job where
-        parseJSON
-          = withObject "Job"
-              (\ o ->
-                 Job' <$>
-                   (o .:? "sparkJob") <*> (o .:? "status") <*>
-                     (o .:? "driverControlFilesUri")
-                     <*> (o .:? "hiveJob")
-                     <*> (o .:? "reference")
-                     <*> (o .:? "sparkSqlJob")
-                     <*> (o .:? "hadoopJob")
-                     <*> (o .:? "jobUuid")
-                     <*> (o .:? "yarnApplications" .!= mempty)
-                     <*> (o .:? "labels")
-                     <*> (o .:? "pysparkJob")
-                     <*> (o .:? "driverOutputResourceUri")
-                     <*> (o .:? "scheduling")
-                     <*> (o .:? "statusHistory" .!= mempty)
-                     <*> (o .:? "placement")
-                     <*> (o .:? "pigJob"))
-
-instance ToJSON Job where
-        toJSON Job'{..}
-          = object
-              (catMaybes
-                 [("sparkJob" .=) <$> _jSparkJob,
-                  ("status" .=) <$> _jStatus,
-                  ("driverControlFilesUri" .=) <$>
-                    _jDriverControlFilesURI,
-                  ("hiveJob" .=) <$> _jHiveJob,
-                  ("reference" .=) <$> _jReference,
-                  ("sparkSqlJob" .=) <$> _jSparkSQLJob,
-                  ("hadoopJob" .=) <$> _jHadoopJob,
-                  ("jobUuid" .=) <$> _jJobUuid,
-                  ("yarnApplications" .=) <$> _jYarnApplications,
-                  ("labels" .=) <$> _jLabels,
-                  ("pysparkJob" .=) <$> _jPysparkJob,
-                  ("driverOutputResourceUri" .=) <$>
-                    _jDriverOutputResourceURI,
-                  ("scheduling" .=) <$> _jScheduling,
-                  ("statusHistory" .=) <$> _jStatusHistory,
-                  ("placement" .=) <$> _jPlacement,
-                  ("pigJob" .=) <$> _jPigJob])
-
--- | A request to collect cluster diagnostic information.
---
--- /See:/ 'diagnoseClusterRequest' smart constructor.
-data DiagnoseClusterRequest =
-    DiagnoseClusterRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiagnoseClusterRequest' with the minimum fields required to make a request.
---
-diagnoseClusterRequest
-    :: DiagnoseClusterRequest
-diagnoseClusterRequest = DiagnoseClusterRequest'
-
-instance FromJSON DiagnoseClusterRequest where
-        parseJSON
-          = withObject "DiagnoseClusterRequest"
-              (\ o -> pure DiagnoseClusterRequest')
-
-instance ToJSON DiagnoseClusterRequest where
-        toJSON = const emptyObject
-
--- | A Cloud Dataproc job for running Apache Hadoop MapReduce
--- (https:\/\/hadoop.apache.org\/docs\/current\/hadoop-mapreduce-client\/hadoop-mapreduce-client-core\/MapReduceTutorial.html)
--- jobs on Apache Hadoop YARN
--- (https:\/\/hadoop.apache.org\/docs\/r2.7.1\/hadoop-yarn\/hadoop-yarn-site\/YARN.html).
---
--- /See:/ 'hadoopJob' smart constructor.
-data HadoopJob = HadoopJob'
-    { _hArgs           :: !(Maybe [Text])
-    , _hMainJarFileURI :: !(Maybe Text)
-    , _hJarFileURIs    :: !(Maybe [Text])
-    , _hFileURIs       :: !(Maybe [Text])
-    , _hArchiveURIs    :: !(Maybe [Text])
-    , _hMainClass      :: !(Maybe Text)
-    , _hLoggingConfig  :: !(Maybe LoggingConfig)
-    , _hProperties     :: !(Maybe HadoopJobProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'HadoopJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'hArgs'
---
--- * 'hMainJarFileURI'
---
--- * 'hJarFileURIs'
---
--- * 'hFileURIs'
---
--- * 'hArchiveURIs'
---
--- * 'hMainClass'
---
--- * 'hLoggingConfig'
---
--- * 'hProperties'
-hadoopJob
-    :: HadoopJob
-hadoopJob =
-    HadoopJob'
-    { _hArgs = Nothing
-    , _hMainJarFileURI = Nothing
-    , _hJarFileURIs = Nothing
-    , _hFileURIs = Nothing
-    , _hArchiveURIs = Nothing
-    , _hMainClass = Nothing
-    , _hLoggingConfig = Nothing
-    , _hProperties = Nothing
-    }
-
--- | Optional. The arguments to pass to the driver. Do not include arguments,
--- such as -libjars or -Dfoo=bar, that can be set as job properties, since
--- a collision may occur that causes an incorrect job submission.
-hArgs :: Lens' HadoopJob [Text]
-hArgs
-  = lens _hArgs (\ s a -> s{_hArgs = a}) . _Default .
-      _Coerce
-
--- | The HCFS URI of the jar file containing the main class. Examples:
--- \'gs:\/\/foo-bucket\/analytics-binaries\/extract-useful-metrics-mr.jar\'
--- \'hdfs:\/tmp\/test-samples\/custom-wordcount.jar\'
--- \'file:\/\/\/home\/usr\/lib\/hadoop-mapreduce\/hadoop-mapreduce-examples.jar\'
-hMainJarFileURI :: Lens' HadoopJob (Maybe Text)
-hMainJarFileURI
-  = lens _hMainJarFileURI
-      (\ s a -> s{_hMainJarFileURI = a})
-
--- | Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver
--- and tasks.
-hJarFileURIs :: Lens' HadoopJob [Text]
-hJarFileURIs
-  = lens _hJarFileURIs (\ s a -> s{_hJarFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied
--- to the working directory of Hadoop drivers and distributed tasks. Useful
--- for naively parallel tasks.
-hFileURIs :: Lens' HadoopJob [Text]
-hFileURIs
-  = lens _hFileURIs (\ s a -> s{_hFileURIs = a}) .
-      _Default
-      . _Coerce
-
--- | Optional. HCFS URIs of archives to be extracted in the working directory
--- of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz,
--- .tgz, or .zip.
-hArchiveURIs :: Lens' HadoopJob [Text]
-hArchiveURIs
-  = lens _hArchiveURIs (\ s a -> s{_hArchiveURIs = a})
-      . _Default
-      . _Coerce
-
--- | The name of the driver\'s main class. The jar file containing the class
--- must be in the default CLASSPATH or specified in jar_file_uris.
-hMainClass :: Lens' HadoopJob (Maybe Text)
-hMainClass
-  = lens _hMainClass (\ s a -> s{_hMainClass = a})
-
--- | Optional. The runtime log config for job execution.
-hLoggingConfig :: Lens' HadoopJob (Maybe LoggingConfig)
-hLoggingConfig
-  = lens _hLoggingConfig
-      (\ s a -> s{_hLoggingConfig = a})
-
--- | Optional. A mapping of property names to values, used to configure
--- Hadoop. Properties that conflict with values set by the Cloud Dataproc
--- API may be overwritten. Can include properties set in
--- \/etc\/hadoop\/conf\/*-site and classes in user code.
-hProperties :: Lens' HadoopJob (Maybe HadoopJobProperties)
-hProperties
-  = lens _hProperties (\ s a -> s{_hProperties = a})
-
-instance FromJSON HadoopJob where
-        parseJSON
-          = withObject "HadoopJob"
-              (\ o ->
-                 HadoopJob' <$>
-                   (o .:? "args" .!= mempty) <*>
-                     (o .:? "mainJarFileUri")
-                     <*> (o .:? "jarFileUris" .!= mempty)
-                     <*> (o .:? "fileUris" .!= mempty)
-                     <*> (o .:? "archiveUris" .!= mempty)
-                     <*> (o .:? "mainClass")
-                     <*> (o .:? "loggingConfig")
-                     <*> (o .:? "properties"))
-
-instance ToJSON HadoopJob where
-        toJSON HadoopJob'{..}
-          = object
-              (catMaybes
-                 [("args" .=) <$> _hArgs,
-                  ("mainJarFileUri" .=) <$> _hMainJarFileURI,
-                  ("jarFileUris" .=) <$> _hJarFileURIs,
-                  ("fileUris" .=) <$> _hFileURIs,
-                  ("archiveUris" .=) <$> _hArchiveURIs,
-                  ("mainClass" .=) <$> _hMainClass,
-                  ("loggingConfig" .=) <$> _hLoggingConfig,
-                  ("properties" .=) <$> _hProperties])
-
--- | Optional. Map from parameter names to values that should be used for
--- those parameters. Values may not exceed 100 characters.
---
--- /See:/ 'instantiateWorkflowTemplateRequestParameters' smart constructor.
-newtype InstantiateWorkflowTemplateRequestParameters = InstantiateWorkflowTemplateRequestParameters'
-    { _iwtrpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstantiateWorkflowTemplateRequestParameters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iwtrpAddtional'
-instantiateWorkflowTemplateRequestParameters
-    :: HashMap Text Text -- ^ 'iwtrpAddtional'
-    -> InstantiateWorkflowTemplateRequestParameters
-instantiateWorkflowTemplateRequestParameters pIwtrpAddtional_ =
-    InstantiateWorkflowTemplateRequestParameters'
-    { _iwtrpAddtional = _Coerce # pIwtrpAddtional_
-    }
-
-iwtrpAddtional :: Lens' InstantiateWorkflowTemplateRequestParameters (HashMap Text Text)
-iwtrpAddtional
-  = lens _iwtrpAddtional
-      (\ s a -> s{_iwtrpAddtional = a})
-      . _Coerce
-
-instance FromJSON
-         InstantiateWorkflowTemplateRequestParameters where
-        parseJSON
-          = withObject
-              "InstantiateWorkflowTemplateRequestParameters"
-              (\ o ->
-                 InstantiateWorkflowTemplateRequestParameters' <$>
-                   (parseJSONObject o))
-
-instance ToJSON
-         InstantiateWorkflowTemplateRequestParameters where
-        toJSON = toJSON . _iwtrpAddtional
-
--- | Metadata describing the operation.
---
--- /See:/ 'clusterOperationMetadata' smart constructor.
-data ClusterOperationMetadata = ClusterOperationMetadata'
-    { _comStatus        :: !(Maybe ClusterOperationStatus)
-    , _comClusterUuid   :: !(Maybe Text)
-    , _comWarnings      :: !(Maybe [Text])
-    , _comClusterName   :: !(Maybe Text)
-    , _comLabels        :: !(Maybe ClusterOperationMetadataLabels)
-    , _comOperationType :: !(Maybe Text)
-    , _comStatusHistory :: !(Maybe [ClusterOperationStatus])
-    , _comDescription   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterOperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'comStatus'
---
--- * 'comClusterUuid'
---
--- * 'comWarnings'
---
--- * 'comClusterName'
---
--- * 'comLabels'
---
--- * 'comOperationType'
---
--- * 'comStatusHistory'
---
--- * 'comDescription'
-clusterOperationMetadata
-    :: ClusterOperationMetadata
-clusterOperationMetadata =
-    ClusterOperationMetadata'
-    { _comStatus = Nothing
-    , _comClusterUuid = Nothing
-    , _comWarnings = Nothing
-    , _comClusterName = Nothing
-    , _comLabels = Nothing
-    , _comOperationType = Nothing
-    , _comStatusHistory = Nothing
-    , _comDescription = Nothing
-    }
-
--- | Output only. Current operation status.
-comStatus :: Lens' ClusterOperationMetadata (Maybe ClusterOperationStatus)
-comStatus
-  = lens _comStatus (\ s a -> s{_comStatus = a})
-
--- | Output only. Cluster UUID for the operation.
-comClusterUuid :: Lens' ClusterOperationMetadata (Maybe Text)
-comClusterUuid
-  = lens _comClusterUuid
-      (\ s a -> s{_comClusterUuid = a})
-
--- | Output only. Errors encountered during operation execution.
-comWarnings :: Lens' ClusterOperationMetadata [Text]
-comWarnings
-  = lens _comWarnings (\ s a -> s{_comWarnings = a}) .
-      _Default
-      . _Coerce
-
--- | Output only. Name of the cluster for the operation.
-comClusterName :: Lens' ClusterOperationMetadata (Maybe Text)
-comClusterName
-  = lens _comClusterName
-      (\ s a -> s{_comClusterName = a})
-
--- | Output only. Labels associated with the operation
-comLabels :: Lens' ClusterOperationMetadata (Maybe ClusterOperationMetadataLabels)
-comLabels
-  = lens _comLabels (\ s a -> s{_comLabels = a})
-
--- | Output only. The operation type.
-comOperationType :: Lens' ClusterOperationMetadata (Maybe Text)
-comOperationType
-  = lens _comOperationType
-      (\ s a -> s{_comOperationType = a})
-
--- | Output only. The previous operation status.
-comStatusHistory :: Lens' ClusterOperationMetadata [ClusterOperationStatus]
-comStatusHistory
-  = lens _comStatusHistory
-      (\ s a -> s{_comStatusHistory = a})
-      . _Default
-      . _Coerce
-
--- | Output only. Short description of operation.
-comDescription :: Lens' ClusterOperationMetadata (Maybe Text)
-comDescription
-  = lens _comDescription
-      (\ s a -> s{_comDescription = a})
-
-instance FromJSON ClusterOperationMetadata where
-        parseJSON
-          = withObject "ClusterOperationMetadata"
-              (\ o ->
-                 ClusterOperationMetadata' <$>
-                   (o .:? "status") <*> (o .:? "clusterUuid") <*>
-                     (o .:? "warnings" .!= mempty)
-                     <*> (o .:? "clusterName")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "statusHistory" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON ClusterOperationMetadata where
-        toJSON ClusterOperationMetadata'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _comStatus,
-                  ("clusterUuid" .=) <$> _comClusterUuid,
-                  ("warnings" .=) <$> _comWarnings,
-                  ("clusterName" .=) <$> _comClusterName,
-                  ("labels" .=) <$> _comLabels,
-                  ("operationType" .=) <$> _comOperationType,
-                  ("statusHistory" .=) <$> _comStatusHistory,
-                  ("description" .=) <$> _comDescription])
-
--- | Request message for TestIamPermissions method.
---
--- /See:/ 'testIAMPermissionsRequest' smart constructor.
-newtype TestIAMPermissionsRequest = TestIAMPermissionsRequest'
-    { _tiprPermissions :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TestIAMPermissionsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tiprPermissions'
-testIAMPermissionsRequest
-    :: TestIAMPermissionsRequest
-testIAMPermissionsRequest =
-    TestIAMPermissionsRequest'
-    { _tiprPermissions = Nothing
-    }
-
--- | The set of permissions to check for the resource. Permissions with
--- wildcards (such as \'*\' or \'storage.*\') are not allowed. For more
--- information see IAM Overview
--- (https:\/\/cloud.google.com\/iam\/docs\/overview#permissions).
-tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]
-tiprPermissions
-  = lens _tiprPermissions
-      (\ s a -> s{_tiprPermissions = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TestIAMPermissionsRequest where
-        parseJSON
-          = withObject "TestIAMPermissionsRequest"
-              (\ o ->
-                 TestIAMPermissionsRequest' <$>
-                   (o .:? "permissions" .!= mempty))
-
-instance ToJSON TestIAMPermissionsRequest where
-        toJSON TestIAMPermissionsRequest'{..}
-          = object
-              (catMaybes [("permissions" .=) <$> _tiprPermissions])
-
--- | A Cloud Dataproc job for running Apache Spark SQL
--- (http:\/\/spark.apache.org\/sql\/) queries.
---
--- /See:/ 'sparkSQLJob' smart constructor.
-data SparkSQLJob = SparkSQLJob'
-    { _ssqljQueryFileURI    :: !(Maybe Text)
-    , _ssqljJarFileURIs     :: !(Maybe [Text])
-    , _ssqljScriptVariables :: !(Maybe SparkSQLJobScriptVariables)
-    , _ssqljQueryList       :: !(Maybe QueryList)
-    , _ssqljLoggingConfig   :: !(Maybe LoggingConfig)
-    , _ssqljProperties      :: !(Maybe SparkSQLJobProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SparkSQLJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssqljQueryFileURI'
---
--- * 'ssqljJarFileURIs'
---
--- * 'ssqljScriptVariables'
---
--- * 'ssqljQueryList'
---
--- * 'ssqljLoggingConfig'
---
--- * 'ssqljProperties'
-sparkSQLJob
-    :: SparkSQLJob
-sparkSQLJob =
-    SparkSQLJob'
-    { _ssqljQueryFileURI = Nothing
-    , _ssqljJarFileURIs = Nothing
-    , _ssqljScriptVariables = Nothing
-    , _ssqljQueryList = Nothing
-    , _ssqljLoggingConfig = Nothing
-    , _ssqljProperties = Nothing
-    }
-
--- | The HCFS URI of the script that contains SQL queries.
-ssqljQueryFileURI :: Lens' SparkSQLJob (Maybe Text)
-ssqljQueryFileURI
-  = lens _ssqljQueryFileURI
-      (\ s a -> s{_ssqljQueryFileURI = a})
-
--- | Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
-ssqljJarFileURIs :: Lens' SparkSQLJob [Text]
-ssqljJarFileURIs
-  = lens _ssqljJarFileURIs
-      (\ s a -> s{_ssqljJarFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. Mapping of query variable names to values (equivalent to the
--- Spark SQL command: SET name=\"value\";).
-ssqljScriptVariables :: Lens' SparkSQLJob (Maybe SparkSQLJobScriptVariables)
-ssqljScriptVariables
-  = lens _ssqljScriptVariables
-      (\ s a -> s{_ssqljScriptVariables = a})
-
--- | A list of queries.
-ssqljQueryList :: Lens' SparkSQLJob (Maybe QueryList)
-ssqljQueryList
-  = lens _ssqljQueryList
-      (\ s a -> s{_ssqljQueryList = a})
-
--- | Optional. The runtime log config for job execution.
-ssqljLoggingConfig :: Lens' SparkSQLJob (Maybe LoggingConfig)
-ssqljLoggingConfig
-  = lens _ssqljLoggingConfig
-      (\ s a -> s{_ssqljLoggingConfig = a})
-
--- | Optional. A mapping of property names to values, used to configure Spark
--- SQL\'s SparkConf. Properties that conflict with values set by the Cloud
--- Dataproc API may be overwritten.
-ssqljProperties :: Lens' SparkSQLJob (Maybe SparkSQLJobProperties)
-ssqljProperties
-  = lens _ssqljProperties
-      (\ s a -> s{_ssqljProperties = a})
-
-instance FromJSON SparkSQLJob where
-        parseJSON
-          = withObject "SparkSQLJob"
-              (\ o ->
-                 SparkSQLJob' <$>
-                   (o .:? "queryFileUri") <*>
-                     (o .:? "jarFileUris" .!= mempty)
-                     <*> (o .:? "scriptVariables")
-                     <*> (o .:? "queryList")
-                     <*> (o .:? "loggingConfig")
-                     <*> (o .:? "properties"))
-
-instance ToJSON SparkSQLJob where
-        toJSON SparkSQLJob'{..}
-          = object
-              (catMaybes
-                 [("queryFileUri" .=) <$> _ssqljQueryFileURI,
-                  ("jarFileUris" .=) <$> _ssqljJarFileURIs,
-                  ("scriptVariables" .=) <$> _ssqljScriptVariables,
-                  ("queryList" .=) <$> _ssqljQueryList,
-                  ("loggingConfig" .=) <$> _ssqljLoggingConfig,
-                  ("properties" .=) <$> _ssqljProperties])
-
--- | Specifies the selection and config of software inside the cluster.
---
--- /See:/ 'softwareConfig' smart constructor.
-data SoftwareConfig = SoftwareConfig'
-    { _scImageVersion :: !(Maybe Text)
-    , _scProperties   :: !(Maybe SoftwareConfigProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SoftwareConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scImageVersion'
---
--- * 'scProperties'
-softwareConfig
-    :: SoftwareConfig
-softwareConfig =
-    SoftwareConfig'
-    { _scImageVersion = Nothing
-    , _scProperties = Nothing
-    }
-
--- | Optional. The version of software inside the cluster. It must be one of
--- the supported Cloud Dataproc Versions, such as \"1.2\" (including a
--- subminor version, such as \"1.2.29\"), or the \"preview\" version. If
--- unspecified, it defaults to the latest version.
-scImageVersion :: Lens' SoftwareConfig (Maybe Text)
-scImageVersion
-  = lens _scImageVersion
-      (\ s a -> s{_scImageVersion = a})
-
--- | Optional. The properties to set on daemon config files.Property keys are
--- specified in prefix:property format, such as core:fs.defaultFS. The
--- following are supported prefixes and their mappings: capacity-scheduler:
--- capacity-scheduler.xml core: core-site.xml distcp: distcp-default.xml
--- hdfs: hdfs-site.xml hive: hive-site.xml mapred: mapred-site.xml pig:
--- pig.properties spark: spark-defaults.conf yarn: yarn-site.xmlFor more
--- information, see Cluster properties.
-scProperties :: Lens' SoftwareConfig (Maybe SoftwareConfigProperties)
-scProperties
-  = lens _scProperties (\ s a -> s{_scProperties = a})
-
-instance FromJSON SoftwareConfig where
-        parseJSON
-          = withObject "SoftwareConfig"
-              (\ o ->
-                 SoftwareConfig' <$>
-                   (o .:? "imageVersion") <*> (o .:? "properties"))
-
-instance ToJSON SoftwareConfig where
-        toJSON SoftwareConfig'{..}
-          = object
-              (catMaybes
-                 [("imageVersion" .=) <$> _scImageVersion,
-                  ("properties" .=) <$> _scProperties])
-
--- | A list of jobs in a project.
---
--- /See:/ 'listJobsResponse' smart constructor.
-data ListJobsResponse = ListJobsResponse'
-    { _ljrNextPageToken :: !(Maybe Text)
-    , _ljrJobs          :: !(Maybe [Job])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListJobsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ljrNextPageToken'
---
--- * 'ljrJobs'
-listJobsResponse
-    :: ListJobsResponse
-listJobsResponse =
-    ListJobsResponse'
-    { _ljrNextPageToken = Nothing
-    , _ljrJobs = Nothing
-    }
-
--- | Optional. This token is included in the response if there are more
--- results to fetch. To fetch additional results, provide this value as the
--- page_token in a subsequent 'ListJobsRequest'.
-ljrNextPageToken :: Lens' ListJobsResponse (Maybe Text)
-ljrNextPageToken
-  = lens _ljrNextPageToken
-      (\ s a -> s{_ljrNextPageToken = a})
-
--- | Output only. Jobs list.
-ljrJobs :: Lens' ListJobsResponse [Job]
-ljrJobs
-  = lens _ljrJobs (\ s a -> s{_ljrJobs = a}) . _Default
-      . _Coerce
-
-instance FromJSON ListJobsResponse where
-        parseJSON
-          = withObject "ListJobsResponse"
-              (\ o ->
-                 ListJobsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "jobs" .!= mempty))
-
-instance ToJSON ListJobsResponse where
-        toJSON ListJobsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ljrNextPageToken,
-                  ("jobs" .=) <$> _ljrJobs])
-
--- | Specifies the type and number of accelerator cards attached to the
--- instances of an instance. See GPUs on Compute Engine.
---
--- /See:/ 'acceleratorConfig' smart constructor.
-data AcceleratorConfig = AcceleratorConfig'
-    { _acAcceleratorCount   :: !(Maybe (Textual Int32))
-    , _acAcceleratorTypeURI :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AcceleratorConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acAcceleratorCount'
---
--- * 'acAcceleratorTypeURI'
-acceleratorConfig
-    :: AcceleratorConfig
-acceleratorConfig =
-    AcceleratorConfig'
-    { _acAcceleratorCount = Nothing
-    , _acAcceleratorTypeURI = Nothing
-    }
-
--- | The number of the accelerator cards of this type exposed to this
--- instance.
-acAcceleratorCount :: Lens' AcceleratorConfig (Maybe Int32)
-acAcceleratorCount
-  = lens _acAcceleratorCount
-      (\ s a -> s{_acAcceleratorCount = a})
-      . mapping _Coerce
-
--- | Full URL, partial URI, or short name of the accelerator type resource to
--- expose to this instance. See Compute Engine AcceleratorTypes.Examples:
--- https:\/\/www.googleapis.com\/compute\/beta\/projects\/[project_id]\/zones\/us-east1-a\/acceleratorTypes\/nvidia-tesla-k80
--- projects\/[project_id]\/zones\/us-east1-a\/acceleratorTypes\/nvidia-tesla-k80
--- nvidia-tesla-k80Auto Zone Exception: If you are using the Cloud Dataproc
--- Auto Zone Placement feature, you must use the short name of the
--- accelerator type resource, for example, nvidia-tesla-k80.
-acAcceleratorTypeURI :: Lens' AcceleratorConfig (Maybe Text)
-acAcceleratorTypeURI
-  = lens _acAcceleratorTypeURI
-      (\ s a -> s{_acAcceleratorTypeURI = a})
-
-instance FromJSON AcceleratorConfig where
-        parseJSON
-          = withObject "AcceleratorConfig"
-              (\ o ->
-                 AcceleratorConfig' <$>
-                   (o .:? "acceleratorCount") <*>
-                     (o .:? "acceleratorTypeUri"))
-
-instance ToJSON AcceleratorConfig where
-        toJSON AcceleratorConfig'{..}
-          = object
-              (catMaybes
-                 [("acceleratorCount" .=) <$> _acAcceleratorCount,
-                  ("acceleratorTypeUri" .=) <$> _acAcceleratorTypeURI])
-
--- | Optional. A mapping of property names to values, used to configure
--- Spark. Properties that conflict with values set by the Cloud Dataproc
--- API may be overwritten. Can include properties set in
--- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
---
--- /See:/ 'sparkJobProperties' smart constructor.
-newtype SparkJobProperties = SparkJobProperties'
-    { _sjpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SparkJobProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sjpAddtional'
-sparkJobProperties
-    :: HashMap Text Text -- ^ 'sjpAddtional'
-    -> SparkJobProperties
-sparkJobProperties pSjpAddtional_ =
-    SparkJobProperties'
-    { _sjpAddtional = _Coerce # pSjpAddtional_
-    }
-
-sjpAddtional :: Lens' SparkJobProperties (HashMap Text Text)
-sjpAddtional
-  = lens _sjpAddtional (\ s a -> s{_sjpAddtional = a})
-      . _Coerce
-
-instance FromJSON SparkJobProperties where
-        parseJSON
-          = withObject "SparkJobProperties"
-              (\ o -> SparkJobProperties' <$> (parseJSONObject o))
-
-instance ToJSON SparkJobProperties where
-        toJSON = toJSON . _sjpAddtional
-
--- | Encryption settings for the cluster.
---
--- /See:/ 'encryptionConfig' smart constructor.
-newtype EncryptionConfig = EncryptionConfig'
-    { _ecGcePdKmsKeyName :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EncryptionConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ecGcePdKmsKeyName'
-encryptionConfig
-    :: EncryptionConfig
-encryptionConfig =
-    EncryptionConfig'
-    { _ecGcePdKmsKeyName = Nothing
-    }
-
--- | Optional. The Cloud KMS key name to use for PD disk encryption for all
--- instances in the cluster.
-ecGcePdKmsKeyName :: Lens' EncryptionConfig (Maybe Text)
-ecGcePdKmsKeyName
-  = lens _ecGcePdKmsKeyName
-      (\ s a -> s{_ecGcePdKmsKeyName = a})
-
-instance FromJSON EncryptionConfig where
-        parseJSON
-          = withObject "EncryptionConfig"
-              (\ o ->
-                 EncryptionConfig' <$> (o .:? "gcePdKmsKeyName"))
-
-instance ToJSON EncryptionConfig where
-        toJSON EncryptionConfig'{..}
-          = object
-              (catMaybes
-                 [("gcePdKmsKeyName" .=) <$> _ecGcePdKmsKeyName])
-
--- | A Cloud Dataproc job for running Apache PySpark
--- (https:\/\/spark.apache.org\/docs\/0.9.0\/python-programming-guide.html)
--- applications on YARN.
---
--- /See:/ 'pySparkJob' smart constructor.
-data PySparkJob = PySparkJob'
-    { _psjPythonFileURIs    :: !(Maybe [Text])
-    , _psjMainPythonFileURI :: !(Maybe Text)
-    , _psjArgs              :: !(Maybe [Text])
-    , _psjJarFileURIs       :: !(Maybe [Text])
-    , _psjFileURIs          :: !(Maybe [Text])
-    , _psjArchiveURIs       :: !(Maybe [Text])
-    , _psjLoggingConfig     :: !(Maybe LoggingConfig)
-    , _psjProperties        :: !(Maybe PySparkJobProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PySparkJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psjPythonFileURIs'
---
--- * 'psjMainPythonFileURI'
---
--- * 'psjArgs'
---
--- * 'psjJarFileURIs'
---
--- * 'psjFileURIs'
---
--- * 'psjArchiveURIs'
---
--- * 'psjLoggingConfig'
---
--- * 'psjProperties'
-pySparkJob
-    :: PySparkJob
-pySparkJob =
-    PySparkJob'
-    { _psjPythonFileURIs = Nothing
-    , _psjMainPythonFileURI = Nothing
-    , _psjArgs = Nothing
-    , _psjJarFileURIs = Nothing
-    , _psjFileURIs = Nothing
-    , _psjArchiveURIs = Nothing
-    , _psjLoggingConfig = Nothing
-    , _psjProperties = Nothing
-    }
-
--- | Optional. HCFS file URIs of Python files to pass to the PySpark
--- framework. Supported file types: .py, .egg, and .zip.
-psjPythonFileURIs :: Lens' PySparkJob [Text]
-psjPythonFileURIs
-  = lens _psjPythonFileURIs
-      (\ s a -> s{_psjPythonFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Required. The HCFS URI of the main Python file to use as the driver.
--- Must be a .py file.
-psjMainPythonFileURI :: Lens' PySparkJob (Maybe Text)
-psjMainPythonFileURI
-  = lens _psjMainPythonFileURI
-      (\ s a -> s{_psjMainPythonFileURI = a})
-
--- | Optional. The arguments to pass to the driver. Do not include arguments,
--- such as --conf, that can be set as job properties, since a collision may
--- occur that causes an incorrect job submission.
-psjArgs :: Lens' PySparkJob [Text]
-psjArgs
-  = lens _psjArgs (\ s a -> s{_psjArgs = a}) . _Default
-      . _Coerce
-
--- | Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python
--- driver and tasks.
-psjJarFileURIs :: Lens' PySparkJob [Text]
-psjJarFileURIs
-  = lens _psjJarFileURIs
-      (\ s a -> s{_psjJarFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. HCFS URIs of files to be copied to the working directory of
--- Python drivers and distributed tasks. Useful for naively parallel tasks.
-psjFileURIs :: Lens' PySparkJob [Text]
-psjFileURIs
-  = lens _psjFileURIs (\ s a -> s{_psjFileURIs = a}) .
-      _Default
-      . _Coerce
-
--- | Optional. HCFS URIs of archives to be extracted in the working directory
--- of .jar, .tar, .tar.gz, .tgz, and .zip.
-psjArchiveURIs :: Lens' PySparkJob [Text]
-psjArchiveURIs
-  = lens _psjArchiveURIs
-      (\ s a -> s{_psjArchiveURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. The runtime log config for job execution.
-psjLoggingConfig :: Lens' PySparkJob (Maybe LoggingConfig)
-psjLoggingConfig
-  = lens _psjLoggingConfig
-      (\ s a -> s{_psjLoggingConfig = a})
-
--- | Optional. A mapping of property names to values, used to configure
--- PySpark. Properties that conflict with values set by the Cloud Dataproc
--- API may be overwritten. Can include properties set in
--- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
-psjProperties :: Lens' PySparkJob (Maybe PySparkJobProperties)
-psjProperties
-  = lens _psjProperties
-      (\ s a -> s{_psjProperties = a})
-
-instance FromJSON PySparkJob where
-        parseJSON
-          = withObject "PySparkJob"
-              (\ o ->
-                 PySparkJob' <$>
-                   (o .:? "pythonFileUris" .!= mempty) <*>
-                     (o .:? "mainPythonFileUri")
-                     <*> (o .:? "args" .!= mempty)
-                     <*> (o .:? "jarFileUris" .!= mempty)
-                     <*> (o .:? "fileUris" .!= mempty)
-                     <*> (o .:? "archiveUris" .!= mempty)
-                     <*> (o .:? "loggingConfig")
-                     <*> (o .:? "properties"))
-
-instance ToJSON PySparkJob where
-        toJSON PySparkJob'{..}
-          = object
-              (catMaybes
-                 [("pythonFileUris" .=) <$> _psjPythonFileURIs,
-                  ("mainPythonFileUri" .=) <$> _psjMainPythonFileURI,
-                  ("args" .=) <$> _psjArgs,
-                  ("jarFileUris" .=) <$> _psjJarFileURIs,
-                  ("fileUris" .=) <$> _psjFileURIs,
-                  ("archiveUris" .=) <$> _psjArchiveURIs,
-                  ("loggingConfig" .=) <$> _psjLoggingConfig,
-                  ("properties" .=) <$> _psjProperties])
-
--- | Specifies the resources used to actively manage an instance group.
---
--- /See:/ 'managedGroupConfig' smart constructor.
-data ManagedGroupConfig = ManagedGroupConfig'
-    { _mgcInstanceTemplateName     :: !(Maybe Text)
-    , _mgcInstanceGroupManagerName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedGroupConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mgcInstanceTemplateName'
---
--- * 'mgcInstanceGroupManagerName'
-managedGroupConfig
-    :: ManagedGroupConfig
-managedGroupConfig =
-    ManagedGroupConfig'
-    { _mgcInstanceTemplateName = Nothing
-    , _mgcInstanceGroupManagerName = Nothing
-    }
-
--- | Output only. The name of the Instance Template used for the Managed
--- Instance Group.
-mgcInstanceTemplateName :: Lens' ManagedGroupConfig (Maybe Text)
-mgcInstanceTemplateName
-  = lens _mgcInstanceTemplateName
-      (\ s a -> s{_mgcInstanceTemplateName = a})
-
--- | Output only. The name of the Instance Group Manager for this group.
-mgcInstanceGroupManagerName :: Lens' ManagedGroupConfig (Maybe Text)
-mgcInstanceGroupManagerName
-  = lens _mgcInstanceGroupManagerName
-      (\ s a -> s{_mgcInstanceGroupManagerName = a})
-
-instance FromJSON ManagedGroupConfig where
-        parseJSON
-          = withObject "ManagedGroupConfig"
-              (\ o ->
-                 ManagedGroupConfig' <$>
-                   (o .:? "instanceTemplateName") <*>
-                     (o .:? "instanceGroupManagerName"))
-
-instance ToJSON ManagedGroupConfig where
-        toJSON ManagedGroupConfig'{..}
-          = object
-              (catMaybes
-                 [("instanceTemplateName" .=) <$>
-                    _mgcInstanceTemplateName,
-                  ("instanceGroupManagerName" .=) <$>
-                    _mgcInstanceGroupManagerName])
-
--- | Response message for TestIamPermissions method.
---
--- /See:/ 'testIAMPermissionsResponse' smart constructor.
-newtype TestIAMPermissionsResponse = TestIAMPermissionsResponse'
-    { _tiamprPermissions :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TestIAMPermissionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tiamprPermissions'
-testIAMPermissionsResponse
-    :: TestIAMPermissionsResponse
-testIAMPermissionsResponse =
-    TestIAMPermissionsResponse'
-    { _tiamprPermissions = Nothing
-    }
-
--- | A subset of TestPermissionsRequest.permissions that the caller is
--- allowed.
-tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]
-tiamprPermissions
-  = lens _tiamprPermissions
-      (\ s a -> s{_tiamprPermissions = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TestIAMPermissionsResponse where
-        parseJSON
-          = withObject "TestIAMPermissionsResponse"
-              (\ o ->
-                 TestIAMPermissionsResponse' <$>
-                   (o .:? "permissions" .!= mempty))
-
-instance ToJSON TestIAMPermissionsResponse where
-        toJSON TestIAMPermissionsResponse'{..}
-          = object
-              (catMaybes
-                 [("permissions" .=) <$> _tiamprPermissions])
-
--- | The list of all clusters in a project.
---
--- /See:/ 'listClustersResponse' smart constructor.
-data ListClustersResponse = ListClustersResponse'
-    { _lcrNextPageToken :: !(Maybe Text)
-    , _lcrClusters      :: !(Maybe [Cluster])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcrNextPageToken'
---
--- * 'lcrClusters'
-listClustersResponse
-    :: ListClustersResponse
-listClustersResponse =
-    ListClustersResponse'
-    { _lcrNextPageToken = Nothing
-    , _lcrClusters = Nothing
-    }
-
--- | Output only. This token is included in the response if there are more
--- results to fetch. To fetch additional results, provide this value as the
--- page_token in a subsequent ListClustersRequest.
-lcrNextPageToken :: Lens' ListClustersResponse (Maybe Text)
-lcrNextPageToken
-  = lens _lcrNextPageToken
-      (\ s a -> s{_lcrNextPageToken = a})
-
--- | Output only. The clusters in the project.
-lcrClusters :: Lens' ListClustersResponse [Cluster]
-lcrClusters
-  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListClustersResponse where
-        parseJSON
-          = withObject "ListClustersResponse"
-              (\ o ->
-                 ListClustersResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "clusters" .!= mempty))
-
-instance ToJSON ListClustersResponse where
-        toJSON ListClustersResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lcrNextPageToken,
-                  ("clusters" .=) <$> _lcrClusters])
-
--- | Validation based on a list of allowed values.
---
--- /See:/ 'valueValidation' smart constructor.
-newtype ValueValidation = ValueValidation'
-    { _vvValues :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ValueValidation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vvValues'
-valueValidation
-    :: ValueValidation
-valueValidation =
-    ValueValidation'
-    { _vvValues = Nothing
-    }
-
--- | Required. List of allowed values for the parameter.
-vvValues :: Lens' ValueValidation [Text]
-vvValues
-  = lens _vvValues (\ s a -> s{_vvValues = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ValueValidation where
-        parseJSON
-          = withObject "ValueValidation"
-              (\ o ->
-                 ValueValidation' <$> (o .:? "values" .!= mempty))
-
-instance ToJSON ValueValidation where
-        toJSON ValueValidation'{..}
-          = object (catMaybes [("values" .=) <$> _vvValues])
-
--- | Defines an Identity and Access Management (IAM) policy. It is used to
--- specify access control policies for Cloud Platform resources.A Policy
--- consists of a list of bindings. A binding binds a list of members to a
--- role, where the members can be user accounts, Google groups, Google
--- domains, and service accounts. A role is a named list of permissions
--- defined by IAM.JSON Example { \"bindings\": [ { \"role\":
--- \"roles\/owner\", \"members\": [ \"user:mike\'example.com\",
--- \"group:admins\'example.com\", \"domain:google.com\",
--- \"serviceAccount:my-other-app\'appspot.gserviceaccount.com\" ] }, {
--- \"role\": \"roles\/viewer\", \"members\": [\"user:sean\'example.com\"] }
--- ] } YAML Example bindings: - members: - user:mike\'example.com -
--- group:admins\'example.com - domain:google.com -
--- serviceAccount:my-other-app\'appspot.gserviceaccount.com role:
--- roles\/owner - members: - user:sean\'example.com role: roles\/viewer For
--- a description of IAM and its features, see the IAM developer\'s guide
--- (https:\/\/cloud.google.com\/iam\/docs).
---
--- /See:/ 'policy' smart constructor.
-data Policy = Policy'
-    { _pEtag     :: !(Maybe Bytes)
-    , _pVersion  :: !(Maybe (Textual Int32))
-    , _pBindings :: !(Maybe [Binding])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Policy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pEtag'
---
--- * 'pVersion'
---
--- * 'pBindings'
-policy
-    :: Policy
-policy =
-    Policy'
-    { _pEtag = Nothing
-    , _pVersion = Nothing
-    , _pBindings = Nothing
-    }
-
--- | etag is used for optimistic concurrency control as a way to help prevent
--- simultaneous updates of a policy from overwriting each other. It is
--- strongly suggested that systems make use of the etag in the
--- read-modify-write cycle to perform policy updates in order to avoid race
--- conditions: An etag is returned in the response to getIamPolicy, and
--- systems are expected to put that etag in the request to setIamPolicy to
--- ensure that their change will be applied to the same version of the
--- policy.If no etag is provided in the call to setIamPolicy, then the
--- existing policy is overwritten blindly.
-pEtag :: Lens' Policy (Maybe ByteString)
-pEtag
-  = lens _pEtag (\ s a -> s{_pEtag = a}) .
-      mapping _Bytes
-
--- | Deprecated.
-pVersion :: Lens' Policy (Maybe Int32)
-pVersion
-  = lens _pVersion (\ s a -> s{_pVersion = a}) .
-      mapping _Coerce
-
--- | Associates a list of members to a role. bindings with no members will
--- result in an error.
-pBindings :: Lens' Policy [Binding]
-pBindings
-  = lens _pBindings (\ s a -> s{_pBindings = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON Policy where
-        parseJSON
-          = withObject "Policy"
-              (\ o ->
-                 Policy' <$>
-                   (o .:? "etag") <*> (o .:? "version") <*>
-                     (o .:? "bindings" .!= mempty))
-
-instance ToJSON Policy where
-        toJSON Policy'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _pEtag,
-                  ("version" .=) <$> _pVersion,
-                  ("bindings" .=) <$> _pBindings])
-
--- | A job executed by the workflow.
---
--- /See:/ 'orderedJob' smart constructor.
-data OrderedJob = OrderedJob'
-    { _ojSparkJob            :: !(Maybe SparkJob)
-    , _ojStepId              :: !(Maybe Text)
-    , _ojPrerequisiteStepIds :: !(Maybe [Text])
-    , _ojHiveJob             :: !(Maybe HiveJob)
-    , _ojSparkSQLJob         :: !(Maybe SparkSQLJob)
-    , _ojHadoopJob           :: !(Maybe HadoopJob)
-    , _ojLabels              :: !(Maybe OrderedJobLabels)
-    , _ojPysparkJob          :: !(Maybe PySparkJob)
-    , _ojScheduling          :: !(Maybe JobScheduling)
-    , _ojPigJob              :: !(Maybe PigJob)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OrderedJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ojSparkJob'
---
--- * 'ojStepId'
---
--- * 'ojPrerequisiteStepIds'
---
--- * 'ojHiveJob'
---
--- * 'ojSparkSQLJob'
---
--- * 'ojHadoopJob'
---
--- * 'ojLabels'
---
--- * 'ojPysparkJob'
---
--- * 'ojScheduling'
---
--- * 'ojPigJob'
-orderedJob
-    :: OrderedJob
-orderedJob =
-    OrderedJob'
-    { _ojSparkJob = Nothing
-    , _ojStepId = Nothing
-    , _ojPrerequisiteStepIds = Nothing
-    , _ojHiveJob = Nothing
-    , _ojSparkSQLJob = Nothing
-    , _ojHadoopJob = Nothing
-    , _ojLabels = Nothing
-    , _ojPysparkJob = Nothing
-    , _ojScheduling = Nothing
-    , _ojPigJob = Nothing
-    }
-
--- | Job is a Spark job.
-ojSparkJob :: Lens' OrderedJob (Maybe SparkJob)
-ojSparkJob
-  = lens _ojSparkJob (\ s a -> s{_ojSparkJob = a})
-
--- | Required. The step id. The id must be unique among all jobs within the
--- template.The step id is used as prefix for job id, as job
--- goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field
--- from other steps.The id must contain only letters (a-z, A-Z), numbers
--- (0-9), underscores (_), and hyphens (-). Cannot begin or end with
--- underscore or hyphen. Must consist of between 3 and 50 characters.
-ojStepId :: Lens' OrderedJob (Maybe Text)
-ojStepId = lens _ojStepId (\ s a -> s{_ojStepId = a})
-
--- | Optional. The optional list of prerequisite job step_ids. If not
--- specified, the job will start at the beginning of workflow.
-ojPrerequisiteStepIds :: Lens' OrderedJob [Text]
-ojPrerequisiteStepIds
-  = lens _ojPrerequisiteStepIds
-      (\ s a -> s{_ojPrerequisiteStepIds = a})
-      . _Default
-      . _Coerce
-
--- | Job is a Hive job.
-ojHiveJob :: Lens' OrderedJob (Maybe HiveJob)
-ojHiveJob
-  = lens _ojHiveJob (\ s a -> s{_ojHiveJob = a})
-
--- | Job is a SparkSql job.
-ojSparkSQLJob :: Lens' OrderedJob (Maybe SparkSQLJob)
-ojSparkSQLJob
-  = lens _ojSparkSQLJob
-      (\ s a -> s{_ojSparkSQLJob = a})
-
--- | Job is a Hadoop job.
-ojHadoopJob :: Lens' OrderedJob (Maybe HadoopJob)
-ojHadoopJob
-  = lens _ojHadoopJob (\ s a -> s{_ojHadoopJob = a})
-
--- | Optional. The labels to associate with this job.Label keys must be
--- between 1 and 63 characters long, and must conform to the following
--- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
--- and 63 characters long, and must conform to the following regular
--- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
--- associated with a given job.
-ojLabels :: Lens' OrderedJob (Maybe OrderedJobLabels)
-ojLabels = lens _ojLabels (\ s a -> s{_ojLabels = a})
-
--- | Job is a Pyspark job.
-ojPysparkJob :: Lens' OrderedJob (Maybe PySparkJob)
-ojPysparkJob
-  = lens _ojPysparkJob (\ s a -> s{_ojPysparkJob = a})
-
--- | Optional. Job scheduling configuration.
-ojScheduling :: Lens' OrderedJob (Maybe JobScheduling)
-ojScheduling
-  = lens _ojScheduling (\ s a -> s{_ojScheduling = a})
-
--- | Job is a Pig job.
-ojPigJob :: Lens' OrderedJob (Maybe PigJob)
-ojPigJob = lens _ojPigJob (\ s a -> s{_ojPigJob = a})
-
-instance FromJSON OrderedJob where
-        parseJSON
-          = withObject "OrderedJob"
-              (\ o ->
-                 OrderedJob' <$>
-                   (o .:? "sparkJob") <*> (o .:? "stepId") <*>
-                     (o .:? "prerequisiteStepIds" .!= mempty)
-                     <*> (o .:? "hiveJob")
-                     <*> (o .:? "sparkSqlJob")
-                     <*> (o .:? "hadoopJob")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "pysparkJob")
-                     <*> (o .:? "scheduling")
-                     <*> (o .:? "pigJob"))
-
-instance ToJSON OrderedJob where
-        toJSON OrderedJob'{..}
-          = object
-              (catMaybes
-                 [("sparkJob" .=) <$> _ojSparkJob,
-                  ("stepId" .=) <$> _ojStepId,
-                  ("prerequisiteStepIds" .=) <$>
-                    _ojPrerequisiteStepIds,
-                  ("hiveJob" .=) <$> _ojHiveJob,
-                  ("sparkSqlJob" .=) <$> _ojSparkSQLJob,
-                  ("hadoopJob" .=) <$> _ojHadoopJob,
-                  ("labels" .=) <$> _ojLabels,
-                  ("pysparkJob" .=) <$> _ojPysparkJob,
-                  ("scheduling" .=) <$> _ojScheduling,
-                  ("pigJob" .=) <$> _ojPigJob])
-
--- | A request to cancel a job.
---
--- /See:/ 'cancelJobRequest' smart constructor.
-data CancelJobRequest =
-    CancelJobRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelJobRequest' with the minimum fields required to make a request.
---
-cancelJobRequest
-    :: CancelJobRequest
-cancelJobRequest = CancelJobRequest'
-
-instance FromJSON CancelJobRequest where
-        parseJSON
-          = withObject "CancelJobRequest"
-              (\ o -> pure CancelJobRequest')
-
-instance ToJSON CancelJobRequest where
-        toJSON = const emptyObject
-
--- | A list of queries to run on a cluster.
---
--- /See:/ 'queryList' smart constructor.
-newtype QueryList = QueryList'
-    { _qlQueries :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'QueryList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qlQueries'
-queryList
-    :: QueryList
-queryList =
-    QueryList'
-    { _qlQueries = Nothing
-    }
-
--- | Required. The queries to execute. You do not need to terminate a query
--- with a semicolon. Multiple queries can be specified in one string by
--- separating each with a semicolon. Here is an example of an Cloud
--- Dataproc API snippet that uses a QueryList to specify a HiveJob:
--- \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\",
--- \"query3;query4\", ] } }
-qlQueries :: Lens' QueryList [Text]
-qlQueries
-  = lens _qlQueries (\ s a -> s{_qlQueries = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON QueryList where
-        parseJSON
-          = withObject "QueryList"
-              (\ o -> QueryList' <$> (o .:? "queries" .!= mempty))
-
-instance ToJSON QueryList where
-        toJSON QueryList'{..}
-          = object (catMaybes [("queries" .=) <$> _qlQueries])
-
--- | 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
-
--- | Cloud Dataproc job status.
---
--- /See:/ 'jobStatus' smart constructor.
-data JobStatus = JobStatus'
-    { _jsState          :: !(Maybe JobStatusState)
-    , _jsSubState       :: !(Maybe JobStatusSubState)
-    , _jsStateStartTime :: !(Maybe DateTime')
-    , _jsDetails        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jsState'
---
--- * 'jsSubState'
---
--- * 'jsStateStartTime'
---
--- * 'jsDetails'
-jobStatus
-    :: JobStatus
-jobStatus =
-    JobStatus'
-    { _jsState = Nothing
-    , _jsSubState = Nothing
-    , _jsStateStartTime = Nothing
-    , _jsDetails = Nothing
-    }
-
--- | Output only. A state message specifying the overall job state.
-jsState :: Lens' JobStatus (Maybe JobStatusState)
-jsState = lens _jsState (\ s a -> s{_jsState = a})
-
--- | Output only. Additional state information, which includes status
--- reported by the agent.
-jsSubState :: Lens' JobStatus (Maybe JobStatusSubState)
-jsSubState
-  = lens _jsSubState (\ s a -> s{_jsSubState = a})
-
--- | Output only. The time when this state was entered.
-jsStateStartTime :: Lens' JobStatus (Maybe UTCTime)
-jsStateStartTime
-  = lens _jsStateStartTime
-      (\ s a -> s{_jsStateStartTime = a})
-      . mapping _DateTime
-
--- | Output only. Optional job state details, such as an error description if
--- the state is 'ERROR'.
-jsDetails :: Lens' JobStatus (Maybe Text)
-jsDetails
-  = lens _jsDetails (\ s a -> s{_jsDetails = a})
-
-instance FromJSON JobStatus where
-        parseJSON
-          = withObject "JobStatus"
-              (\ o ->
-                 JobStatus' <$>
-                   (o .:? "state") <*> (o .:? "substate") <*>
-                     (o .:? "stateStartTime")
-                     <*> (o .:? "details"))
-
-instance ToJSON JobStatus where
-        toJSON JobStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _jsState,
-                  ("substate" .=) <$> _jsSubState,
-                  ("stateStartTime" .=) <$> _jsStateStartTime,
-                  ("details" .=) <$> _jsDetails])
-
--- | Optional. Mapping of query variable names to values (equivalent to the
--- Pig command: name=[value]).
---
--- /See:/ 'pigJobScriptVariables' smart constructor.
-newtype PigJobScriptVariables = PigJobScriptVariables'
-    { _pjsvAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PigJobScriptVariables' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pjsvAddtional'
-pigJobScriptVariables
-    :: HashMap Text Text -- ^ 'pjsvAddtional'
-    -> PigJobScriptVariables
-pigJobScriptVariables pPjsvAddtional_ =
-    PigJobScriptVariables'
-    { _pjsvAddtional = _Coerce # pPjsvAddtional_
-    }
-
-pjsvAddtional :: Lens' PigJobScriptVariables (HashMap Text Text)
-pjsvAddtional
-  = lens _pjsvAddtional
-      (\ s a -> s{_pjsvAddtional = a})
-      . _Coerce
-
-instance FromJSON PigJobScriptVariables where
-        parseJSON
-          = withObject "PigJobScriptVariables"
-              (\ o ->
-                 PigJobScriptVariables' <$> (parseJSONObject o))
-
-instance ToJSON PigJobScriptVariables where
-        toJSON = toJSON . _pjsvAddtional
-
--- | The HDFS metrics.
---
--- /See:/ 'clusterMetricsHdfsMetrics' smart constructor.
-newtype ClusterMetricsHdfsMetrics = ClusterMetricsHdfsMetrics'
-    { _cmhmAddtional :: HashMap Text (Textual Int64)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterMetricsHdfsMetrics' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmhmAddtional'
-clusterMetricsHdfsMetrics
-    :: HashMap Text Int64 -- ^ 'cmhmAddtional'
-    -> ClusterMetricsHdfsMetrics
-clusterMetricsHdfsMetrics pCmhmAddtional_ =
-    ClusterMetricsHdfsMetrics'
-    { _cmhmAddtional = _Coerce # pCmhmAddtional_
-    }
-
-cmhmAddtional :: Lens' ClusterMetricsHdfsMetrics (HashMap Text Int64)
-cmhmAddtional
-  = lens _cmhmAddtional
-      (\ s a -> s{_cmhmAddtional = a})
-      . _Coerce
-
-instance FromJSON ClusterMetricsHdfsMetrics where
-        parseJSON
-          = withObject "ClusterMetricsHdfsMetrics"
-              (\ o ->
-                 ClusterMetricsHdfsMetrics' <$> (parseJSONObject o))
-
-instance ToJSON ClusterMetricsHdfsMetrics where
-        toJSON = toJSON . _cmhmAddtional
-
--- | The workflow node.
---
--- /See:/ 'workflowNode' smart constructor.
-data WorkflowNode = WorkflowNode'
-    { _wnState               :: !(Maybe WorkflowNodeState)
-    , _wnStepId              :: !(Maybe Text)
-    , _wnJobId               :: !(Maybe Text)
-    , _wnPrerequisiteStepIds :: !(Maybe [Text])
-    , _wnError               :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowNode' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wnState'
---
--- * 'wnStepId'
---
--- * 'wnJobId'
---
--- * 'wnPrerequisiteStepIds'
---
--- * 'wnError'
-workflowNode
-    :: WorkflowNode
-workflowNode =
-    WorkflowNode'
-    { _wnState = Nothing
-    , _wnStepId = Nothing
-    , _wnJobId = Nothing
-    , _wnPrerequisiteStepIds = Nothing
-    , _wnError = Nothing
-    }
-
--- | Output only. The node state.
-wnState :: Lens' WorkflowNode (Maybe WorkflowNodeState)
-wnState = lens _wnState (\ s a -> s{_wnState = a})
-
--- | Output only. The name of the node.
-wnStepId :: Lens' WorkflowNode (Maybe Text)
-wnStepId = lens _wnStepId (\ s a -> s{_wnStepId = a})
-
--- | Output only. The job id; populated after the node enters RUNNING state.
-wnJobId :: Lens' WorkflowNode (Maybe Text)
-wnJobId = lens _wnJobId (\ s a -> s{_wnJobId = a})
-
--- | Output only. Node\'s prerequisite nodes.
-wnPrerequisiteStepIds :: Lens' WorkflowNode [Text]
-wnPrerequisiteStepIds
-  = lens _wnPrerequisiteStepIds
-      (\ s a -> s{_wnPrerequisiteStepIds = a})
-      . _Default
-      . _Coerce
-
--- | Output only. The error detail.
-wnError :: Lens' WorkflowNode (Maybe Text)
-wnError = lens _wnError (\ s a -> s{_wnError = a})
-
-instance FromJSON WorkflowNode where
-        parseJSON
-          = withObject "WorkflowNode"
-              (\ o ->
-                 WorkflowNode' <$>
-                   (o .:? "state") <*> (o .:? "stepId") <*>
-                     (o .:? "jobId")
-                     <*> (o .:? "prerequisiteStepIds" .!= mempty)
-                     <*> (o .:? "error"))
-
-instance ToJSON WorkflowNode where
-        toJSON WorkflowNode'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _wnState,
-                  ("stepId" .=) <$> _wnStepId,
-                  ("jobId" .=) <$> _wnJobId,
-                  ("prerequisiteStepIds" .=) <$>
-                    _wnPrerequisiteStepIds,
-                  ("error" .=) <$> _wnError])
-
--- | A Cloud Dataproc workflow template resource.
---
--- /See:/ 'workflowMetadata' smart constructor.
-data WorkflowMetadata = WorkflowMetadata'
-    { _wmGraph         :: !(Maybe WorkflowGraph)
-    , _wmState         :: !(Maybe WorkflowMetadataState)
-    , _wmClusterUuid   :: !(Maybe Text)
-    , _wmStartTime     :: !(Maybe DateTime')
-    , _wmDeleteCluster :: !(Maybe ClusterOperation)
-    , _wmCreateCluster :: !(Maybe ClusterOperation)
-    , _wmVersion       :: !(Maybe (Textual Int32))
-    , _wmEndTime       :: !(Maybe DateTime')
-    , _wmParameters    :: !(Maybe WorkflowMetadataParameters)
-    , _wmClusterName   :: !(Maybe Text)
-    , _wmTemplate      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WorkflowMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wmGraph'
---
--- * 'wmState'
---
--- * 'wmClusterUuid'
---
--- * 'wmStartTime'
---
--- * 'wmDeleteCluster'
---
--- * 'wmCreateCluster'
---
--- * 'wmVersion'
---
--- * 'wmEndTime'
---
--- * 'wmParameters'
---
--- * 'wmClusterName'
---
--- * 'wmTemplate'
-workflowMetadata
-    :: WorkflowMetadata
-workflowMetadata =
-    WorkflowMetadata'
-    { _wmGraph = Nothing
-    , _wmState = Nothing
-    , _wmClusterUuid = Nothing
-    , _wmStartTime = Nothing
-    , _wmDeleteCluster = Nothing
-    , _wmCreateCluster = Nothing
-    , _wmVersion = Nothing
-    , _wmEndTime = Nothing
-    , _wmParameters = Nothing
-    , _wmClusterName = Nothing
-    , _wmTemplate = Nothing
-    }
-
--- | Output only. The workflow graph.
-wmGraph :: Lens' WorkflowMetadata (Maybe WorkflowGraph)
-wmGraph = lens _wmGraph (\ s a -> s{_wmGraph = a})
-
--- | Output only. The workflow state.
-wmState :: Lens' WorkflowMetadata (Maybe WorkflowMetadataState)
-wmState = lens _wmState (\ s a -> s{_wmState = a})
-
--- | Output only. The UUID of target cluster.
-wmClusterUuid :: Lens' WorkflowMetadata (Maybe Text)
-wmClusterUuid
-  = lens _wmClusterUuid
-      (\ s a -> s{_wmClusterUuid = a})
-
--- | Output only. Workflow start time.
-wmStartTime :: Lens' WorkflowMetadata (Maybe UTCTime)
-wmStartTime
-  = lens _wmStartTime (\ s a -> s{_wmStartTime = a}) .
-      mapping _DateTime
-
--- | Output only. The delete cluster operation metadata.
-wmDeleteCluster :: Lens' WorkflowMetadata (Maybe ClusterOperation)
-wmDeleteCluster
-  = lens _wmDeleteCluster
-      (\ s a -> s{_wmDeleteCluster = a})
-
--- | Output only. The create cluster operation metadata.
-wmCreateCluster :: Lens' WorkflowMetadata (Maybe ClusterOperation)
-wmCreateCluster
-  = lens _wmCreateCluster
-      (\ s a -> s{_wmCreateCluster = a})
-
--- | Output only. The version of template at the time of workflow
--- instantiation.
-wmVersion :: Lens' WorkflowMetadata (Maybe Int32)
-wmVersion
-  = lens _wmVersion (\ s a -> s{_wmVersion = a}) .
-      mapping _Coerce
-
--- | Output only. Workflow end time.
-wmEndTime :: Lens' WorkflowMetadata (Maybe UTCTime)
-wmEndTime
-  = lens _wmEndTime (\ s a -> s{_wmEndTime = a}) .
-      mapping _DateTime
-
--- | Map from parameter names to values that were used for those parameters.
-wmParameters :: Lens' WorkflowMetadata (Maybe WorkflowMetadataParameters)
-wmParameters
-  = lens _wmParameters (\ s a -> s{_wmParameters = a})
-
--- | Output only. The name of the target cluster.
-wmClusterName :: Lens' WorkflowMetadata (Maybe Text)
-wmClusterName
-  = lens _wmClusterName
-      (\ s a -> s{_wmClusterName = a})
-
--- | Output only. The \"resource name\" of the template.
-wmTemplate :: Lens' WorkflowMetadata (Maybe Text)
-wmTemplate
-  = lens _wmTemplate (\ s a -> s{_wmTemplate = a})
-
-instance FromJSON WorkflowMetadata where
-        parseJSON
-          = withObject "WorkflowMetadata"
-              (\ o ->
-                 WorkflowMetadata' <$>
-                   (o .:? "graph") <*> (o .:? "state") <*>
-                     (o .:? "clusterUuid")
-                     <*> (o .:? "startTime")
-                     <*> (o .:? "deleteCluster")
-                     <*> (o .:? "createCluster")
-                     <*> (o .:? "version")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "parameters")
-                     <*> (o .:? "clusterName")
-                     <*> (o .:? "template"))
-
-instance ToJSON WorkflowMetadata where
-        toJSON WorkflowMetadata'{..}
-          = object
-              (catMaybes
-                 [("graph" .=) <$> _wmGraph,
-                  ("state" .=) <$> _wmState,
-                  ("clusterUuid" .=) <$> _wmClusterUuid,
-                  ("startTime" .=) <$> _wmStartTime,
-                  ("deleteCluster" .=) <$> _wmDeleteCluster,
-                  ("createCluster" .=) <$> _wmCreateCluster,
-                  ("version" .=) <$> _wmVersion,
-                  ("endTime" .=) <$> _wmEndTime,
-                  ("parameters" .=) <$> _wmParameters,
-                  ("clusterName" .=) <$> _wmClusterName,
-                  ("template" .=) <$> _wmTemplate])
-
--- | 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
-
--- | The per-package log levels for the driver. This may include \"root\"
--- package name to configure rootLogger. Examples: \'com.google = FATAL\',
--- \'root = INFO\', \'org.apache = DEBUG\'
---
--- /See:/ 'loggingConfigDriverLogLevels' smart constructor.
-newtype LoggingConfigDriverLogLevels = LoggingConfigDriverLogLevels'
-    { _lcdllAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LoggingConfigDriverLogLevels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcdllAddtional'
-loggingConfigDriverLogLevels
-    :: HashMap Text Text -- ^ 'lcdllAddtional'
-    -> LoggingConfigDriverLogLevels
-loggingConfigDriverLogLevels pLcdllAddtional_ =
-    LoggingConfigDriverLogLevels'
-    { _lcdllAddtional = _Coerce # pLcdllAddtional_
-    }
-
-lcdllAddtional :: Lens' LoggingConfigDriverLogLevels (HashMap Text Text)
-lcdllAddtional
-  = lens _lcdllAddtional
-      (\ s a -> s{_lcdllAddtional = a})
-      . _Coerce
-
-instance FromJSON LoggingConfigDriverLogLevels where
-        parseJSON
-          = withObject "LoggingConfigDriverLogLevels"
-              (\ o ->
-                 LoggingConfigDriverLogLevels' <$>
-                   (parseJSONObject o))
-
-instance ToJSON LoggingConfigDriverLogLevels where
-        toJSON = toJSON . _lcdllAddtional
-
--- | The status of a cluster and its instances.
---
--- /See:/ 'clusterStatus' smart constructor.
-data ClusterStatus = ClusterStatus'
-    { _csState          :: !(Maybe ClusterStatusState)
-    , _csSubState       :: !(Maybe ClusterStatusSubState)
-    , _csStateStartTime :: !(Maybe DateTime')
-    , _csDetail         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ClusterStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csState'
---
--- * 'csSubState'
---
--- * 'csStateStartTime'
---
--- * 'csDetail'
-clusterStatus
-    :: ClusterStatus
-clusterStatus =
-    ClusterStatus'
-    { _csState = Nothing
-    , _csSubState = Nothing
-    , _csStateStartTime = Nothing
-    , _csDetail = Nothing
-    }
-
--- | Output only. The cluster\'s state.
-csState :: Lens' ClusterStatus (Maybe ClusterStatusState)
-csState = lens _csState (\ s a -> s{_csState = a})
-
--- | Output only. Additional state information that includes status reported
--- by the agent.
-csSubState :: Lens' ClusterStatus (Maybe ClusterStatusSubState)
-csSubState
-  = lens _csSubState (\ s a -> s{_csSubState = a})
-
--- | Output only. Time when this state was entered.
-csStateStartTime :: Lens' ClusterStatus (Maybe UTCTime)
-csStateStartTime
-  = lens _csStateStartTime
-      (\ s a -> s{_csStateStartTime = a})
-      . mapping _DateTime
-
--- | Output only. Optional details of cluster\'s state.
-csDetail :: Lens' ClusterStatus (Maybe Text)
-csDetail = lens _csDetail (\ s a -> s{_csDetail = a})
-
-instance FromJSON ClusterStatus where
-        parseJSON
-          = withObject "ClusterStatus"
-              (\ o ->
-                 ClusterStatus' <$>
-                   (o .:? "state") <*> (o .:? "substate") <*>
-                     (o .:? "stateStartTime")
-                     <*> (o .:? "detail"))
-
-instance ToJSON ClusterStatus where
-        toJSON ClusterStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _csState,
-                  ("substate" .=) <$> _csSubState,
-                  ("stateStartTime" .=) <$> _csStateStartTime,
-                  ("detail" .=) <$> _csDetail])
-
--- | A YARN application created by a job. Application information is a subset
--- of 'org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto'.Beta
--- Feature: This report is available for testing purposes only. It may be
--- changed before final release.
---
--- /See:/ 'yarnApplication' smart constructor.
-data YarnApplication = YarnApplication'
-    { _yaTrackingURL :: !(Maybe Text)
-    , _yaState       :: !(Maybe YarnApplicationState)
-    , _yaProgress    :: !(Maybe (Textual Double))
-    , _yaName        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'YarnApplication' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'yaTrackingURL'
---
--- * 'yaState'
---
--- * 'yaProgress'
---
--- * 'yaName'
-yarnApplication
-    :: YarnApplication
-yarnApplication =
-    YarnApplication'
-    { _yaTrackingURL = Nothing
-    , _yaState = Nothing
-    , _yaProgress = Nothing
-    , _yaName = Nothing
-    }
-
--- | Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or
--- TimelineServer that provides application-specific information. The URL
--- uses the internal hostname, and requires a proxy server for resolution
--- and, possibly, access.
-yaTrackingURL :: Lens' YarnApplication (Maybe Text)
-yaTrackingURL
-  = lens _yaTrackingURL
-      (\ s a -> s{_yaTrackingURL = a})
-
--- | Required. The application state.
-yaState :: Lens' YarnApplication (Maybe YarnApplicationState)
-yaState = lens _yaState (\ s a -> s{_yaState = a})
-
--- | Required. The numerical progress of the application, from 1 to 100.
-yaProgress :: Lens' YarnApplication (Maybe Double)
-yaProgress
-  = lens _yaProgress (\ s a -> s{_yaProgress = a}) .
-      mapping _Coerce
-
--- | Required. The application name.
-yaName :: Lens' YarnApplication (Maybe Text)
-yaName = lens _yaName (\ s a -> s{_yaName = a})
-
-instance FromJSON YarnApplication where
-        parseJSON
-          = withObject "YarnApplication"
-              (\ o ->
-                 YarnApplication' <$>
-                   (o .:? "trackingUrl") <*> (o .:? "state") <*>
-                     (o .:? "progress")
-                     <*> (o .:? "name"))
-
-instance ToJSON YarnApplication where
-        toJSON YarnApplication'{..}
-          = object
-              (catMaybes
-                 [("trackingUrl" .=) <$> _yaTrackingURL,
-                  ("state" .=) <$> _yaState,
-                  ("progress" .=) <$> _yaProgress,
-                  ("name" .=) <$> _yaName])
-
--- | A Cloud Dataproc job for running Apache Pig (https:\/\/pig.apache.org\/)
--- queries on YARN.
---
--- /See:/ 'pigJob' smart constructor.
-data PigJob = PigJob'
-    { _pjQueryFileURI      :: !(Maybe Text)
-    , _pjJarFileURIs       :: !(Maybe [Text])
-    , _pjScriptVariables   :: !(Maybe PigJobScriptVariables)
-    , _pjQueryList         :: !(Maybe QueryList)
-    , _pjContinueOnFailure :: !(Maybe Bool)
-    , _pjLoggingConfig     :: !(Maybe LoggingConfig)
-    , _pjProperties        :: !(Maybe PigJobProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PigJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pjQueryFileURI'
---
--- * 'pjJarFileURIs'
---
--- * 'pjScriptVariables'
---
--- * 'pjQueryList'
---
--- * 'pjContinueOnFailure'
---
--- * 'pjLoggingConfig'
---
--- * 'pjProperties'
-pigJob
-    :: PigJob
-pigJob =
-    PigJob'
-    { _pjQueryFileURI = Nothing
-    , _pjJarFileURIs = Nothing
-    , _pjScriptVariables = Nothing
-    , _pjQueryList = Nothing
-    , _pjContinueOnFailure = Nothing
-    , _pjLoggingConfig = Nothing
-    , _pjProperties = Nothing
-    }
-
--- | The HCFS URI of the script that contains the Pig queries.
-pjQueryFileURI :: Lens' PigJob (Maybe Text)
-pjQueryFileURI
-  = lens _pjQueryFileURI
-      (\ s a -> s{_pjQueryFileURI = a})
-
--- | Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig
--- Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
-pjJarFileURIs :: Lens' PigJob [Text]
-pjJarFileURIs
-  = lens _pjJarFileURIs
-      (\ s a -> s{_pjJarFileURIs = a})
-      . _Default
-      . _Coerce
-
--- | Optional. Mapping of query variable names to values (equivalent to the
--- Pig command: name=[value]).
-pjScriptVariables :: Lens' PigJob (Maybe PigJobScriptVariables)
-pjScriptVariables
-  = lens _pjScriptVariables
-      (\ s a -> s{_pjScriptVariables = a})
-
--- | A list of queries.
-pjQueryList :: Lens' PigJob (Maybe QueryList)
-pjQueryList
-  = lens _pjQueryList (\ s a -> s{_pjQueryList = a})
-
--- | Optional. Whether to continue executing queries if a query fails. The
--- default value is false. Setting to true can be useful when executing
--- independent parallel queries.
-pjContinueOnFailure :: Lens' PigJob (Maybe Bool)
-pjContinueOnFailure
-  = lens _pjContinueOnFailure
-      (\ s a -> s{_pjContinueOnFailure = a})
-
--- | Optional. The runtime log config for job execution.
-pjLoggingConfig :: Lens' PigJob (Maybe LoggingConfig)
-pjLoggingConfig
-  = lens _pjLoggingConfig
-      (\ s a -> s{_pjLoggingConfig = a})
-
--- | Optional. A mapping of property names to values, used to configure Pig.
--- Properties that conflict with values set by the Cloud Dataproc API may
--- be overwritten. Can include properties set in
--- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/pig\/conf\/pig.properties, and
--- classes in user code.
-pjProperties :: Lens' PigJob (Maybe PigJobProperties)
-pjProperties
-  = lens _pjProperties (\ s a -> s{_pjProperties = a})
-
-instance FromJSON PigJob where
-        parseJSON
-          = withObject "PigJob"
-              (\ o ->
-                 PigJob' <$>
-                   (o .:? "queryFileUri") <*>
-                     (o .:? "jarFileUris" .!= mempty)
-                     <*> (o .:? "scriptVariables")
-                     <*> (o .:? "queryList")
-                     <*> (o .:? "continueOnFailure")
-                     <*> (o .:? "loggingConfig")
-                     <*> (o .:? "properties"))
-
-instance ToJSON PigJob where
-        toJSON PigJob'{..}
-          = object
-              (catMaybes
-                 [("queryFileUri" .=) <$> _pjQueryFileURI,
-                  ("jarFileUris" .=) <$> _pjJarFileURIs,
-                  ("scriptVariables" .=) <$> _pjScriptVariables,
-                  ("queryList" .=) <$> _pjQueryList,
-                  ("continueOnFailure" .=) <$> _pjContinueOnFailure,
-                  ("loggingConfig" .=) <$> _pjLoggingConfig,
-                  ("properties" .=) <$> _pjProperties])
-
--- | The runtime logging config of the job.
---
--- /See:/ 'loggingConfig' smart constructor.
-newtype LoggingConfig = LoggingConfig'
-    { _lcDriverLogLevels :: Maybe LoggingConfigDriverLogLevels
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LoggingConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcDriverLogLevels'
-loggingConfig
-    :: LoggingConfig
-loggingConfig =
-    LoggingConfig'
-    { _lcDriverLogLevels = Nothing
-    }
-
--- | The per-package log levels for the driver. This may include \"root\"
--- package name to configure rootLogger. Examples: \'com.google = FATAL\',
--- \'root = INFO\', \'org.apache = DEBUG\'
-lcDriverLogLevels :: Lens' LoggingConfig (Maybe LoggingConfigDriverLogLevels)
-lcDriverLogLevels
-  = lens _lcDriverLogLevels
-      (\ s a -> s{_lcDriverLogLevels = a})
-
-instance FromJSON LoggingConfig where
-        parseJSON
-          = withObject "LoggingConfig"
-              (\ o -> LoggingConfig' <$> (o .:? "driverLogLevels"))
-
-instance ToJSON LoggingConfig where
-        toJSON LoggingConfig'{..}
-          = object
-              (catMaybes
-                 [("driverLogLevels" .=) <$> _lcDriverLogLevels])
-
--- | Associates members with a role.
---
--- /See:/ 'binding' smart constructor.
-data Binding = Binding'
-    { _bMembers   :: !(Maybe [Text])
-    , _bRole      :: !(Maybe Text)
-    , _bCondition :: !(Maybe Expr)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Binding' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bMembers'
---
--- * 'bRole'
---
--- * 'bCondition'
-binding
-    :: Binding
-binding =
-    Binding'
-    { _bMembers = Nothing
-    , _bRole = Nothing
-    , _bCondition = Nothing
-    }
-
--- | Specifies the identities requesting access for a Cloud Platform
--- resource. members can have the following values: allUsers: A special
--- identifier that represents anyone who is on the internet; with or
--- without a Google account. allAuthenticatedUsers: A special identifier
--- that represents anyone who is authenticated with a Google account or a
--- service account. user:{emailid}: An email address that represents a
--- specific Google account. For example, alice\'gmail.com .
--- serviceAccount:{emailid}: An email address that represents a service
--- account. For example, my-other-app\'appspot.gserviceaccount.com.
--- group:{emailid}: An email address that represents a Google group. For
--- example, admins\'example.com. domain:{domain}: A Google Apps domain name
--- that represents all the users of that domain. For example, google.com or
--- example.com.
-bMembers :: Lens' Binding [Text]
-bMembers
-  = lens _bMembers (\ s a -> s{_bMembers = a}) .
-      _Default
-      . _Coerce
-
--- | Role that is assigned to members. For example, roles\/viewer,
--- roles\/editor, or roles\/owner.
-bRole :: Lens' Binding (Maybe Text)
-bRole = lens _bRole (\ s a -> s{_bRole = a})
-
--- | Unimplemented. The condition that is associated with this binding. NOTE:
--- an unsatisfied condition will not allow user access via current binding.
--- Different bindings, including their conditions, are examined
--- independently.
+data JobReference =
+  JobReference'
+    { _jrJobId     :: !(Maybe Text)
+    , _jrProjectId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jrJobId'
+--
+-- * 'jrProjectId'
+jobReference
+    :: JobReference
+jobReference = JobReference' {_jrJobId = Nothing, _jrProjectId = Nothing}
+
+
+-- | Optional. The job ID, which must be unique within the project.The ID
+-- must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or
+-- hyphens (-). The maximum length is 100 characters.If not specified by
+-- the caller, the job ID will be provided by the server.
+jrJobId :: Lens' JobReference (Maybe Text)
+jrJobId = lens _jrJobId (\ s a -> s{_jrJobId = a})
+
+-- | Required. The ID of the Google Cloud Platform project that the job
+-- belongs to.
+jrProjectId :: Lens' JobReference (Maybe Text)
+jrProjectId
+  = lens _jrProjectId (\ s a -> s{_jrProjectId = a})
+
+instance FromJSON JobReference where
+        parseJSON
+          = withObject "JobReference"
+              (\ o ->
+                 JobReference' <$>
+                   (o .:? "jobId") <*> (o .:? "projectId"))
+
+instance ToJSON JobReference where
+        toJSON JobReference'{..}
+          = object
+              (catMaybes
+                 [("jobId" .=) <$> _jrJobId,
+                  ("projectId" .=) <$> _jrProjectId])
+
+-- | 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])
+
+-- | Optional. A mapping of property names to values, used to configure
+-- PySpark. Properties that conflict with values set by the Cloud Dataproc
+-- API may be overwritten. Can include properties set in
+-- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
+--
+-- /See:/ 'pySparkJobProperties' smart constructor.
+newtype PySparkJobProperties =
+  PySparkJobProperties'
+    { _psjpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PySparkJobProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psjpAddtional'
+pySparkJobProperties
+    :: HashMap Text Text -- ^ 'psjpAddtional'
+    -> PySparkJobProperties
+pySparkJobProperties pPsjpAddtional_ =
+  PySparkJobProperties' {_psjpAddtional = _Coerce # pPsjpAddtional_}
+
+
+psjpAddtional :: Lens' PySparkJobProperties (HashMap Text Text)
+psjpAddtional
+  = lens _psjpAddtional
+      (\ s a -> s{_psjpAddtional = a})
+      . _Coerce
+
+instance FromJSON PySparkJobProperties where
+        parseJSON
+          = withObject "PySparkJobProperties"
+              (\ o ->
+                 PySparkJobProperties' <$> (parseJSONObject o))
+
+instance ToJSON PySparkJobProperties where
+        toJSON = toJSON . _psjpAddtional
+
+-- | The location of diagnostic output.
+--
+-- /See:/ 'diagnoseClusterResults' smart constructor.
+newtype DiagnoseClusterResults =
+  DiagnoseClusterResults'
+    { _dcrOutputURI :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DiagnoseClusterResults' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcrOutputURI'
+diagnoseClusterResults
+    :: DiagnoseClusterResults
+diagnoseClusterResults = DiagnoseClusterResults' {_dcrOutputURI = Nothing}
+
+
+-- | Output only. The Cloud Storage URI of the diagnostic output. The output
+-- report is a plain text file with a summary of collected diagnostics.
+dcrOutputURI :: Lens' DiagnoseClusterResults (Maybe Text)
+dcrOutputURI
+  = lens _dcrOutputURI (\ s a -> s{_dcrOutputURI = a})
+
+instance FromJSON DiagnoseClusterResults where
+        parseJSON
+          = withObject "DiagnoseClusterResults"
+              (\ o ->
+                 DiagnoseClusterResults' <$> (o .:? "outputUri"))
+
+instance ToJSON DiagnoseClusterResults where
+        toJSON DiagnoseClusterResults'{..}
+          = object
+              (catMaybes [("outputUri" .=) <$> _dcrOutputURI])
+
+-- | Optional. The config settings for Compute Engine resources in an
+-- instance group, such as a master or worker group.
+--
+-- /See:/ 'instanceGroupConfig' smart constructor.
+data InstanceGroupConfig =
+  InstanceGroupConfig'
+    { _igcNumInstances       :: !(Maybe (Textual Int32))
+    , _igcDiskConfig         :: !(Maybe DiskConfig)
+    , _igcIsPreemptible      :: !(Maybe Bool)
+    , _igcImageURI           :: !(Maybe Text)
+    , _igcAccelerators       :: !(Maybe [AcceleratorConfig])
+    , _igcInstanceNames      :: !(Maybe [Text])
+    , _igcManagedGroupConfig :: !(Maybe ManagedGroupConfig)
+    , _igcMachineTypeURI     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceGroupConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igcNumInstances'
+--
+-- * 'igcDiskConfig'
+--
+-- * 'igcIsPreemptible'
+--
+-- * 'igcImageURI'
+--
+-- * 'igcAccelerators'
+--
+-- * 'igcInstanceNames'
+--
+-- * 'igcManagedGroupConfig'
+--
+-- * 'igcMachineTypeURI'
+instanceGroupConfig
+    :: InstanceGroupConfig
+instanceGroupConfig =
+  InstanceGroupConfig'
+    { _igcNumInstances = Nothing
+    , _igcDiskConfig = Nothing
+    , _igcIsPreemptible = Nothing
+    , _igcImageURI = Nothing
+    , _igcAccelerators = Nothing
+    , _igcInstanceNames = Nothing
+    , _igcManagedGroupConfig = Nothing
+    , _igcMachineTypeURI = Nothing
+    }
+
+
+-- | Optional. The number of VM instances in the instance group. For master
+-- instance groups, must be set to 1.
+igcNumInstances :: Lens' InstanceGroupConfig (Maybe Int32)
+igcNumInstances
+  = lens _igcNumInstances
+      (\ s a -> s{_igcNumInstances = a})
+      . mapping _Coerce
+
+-- | Optional. Disk option config settings.
+igcDiskConfig :: Lens' InstanceGroupConfig (Maybe DiskConfig)
+igcDiskConfig
+  = lens _igcDiskConfig
+      (\ s a -> s{_igcDiskConfig = a})
+
+-- | Optional. Specifies that this instance group contains preemptible
+-- instances.
+igcIsPreemptible :: Lens' InstanceGroupConfig (Maybe Bool)
+igcIsPreemptible
+  = lens _igcIsPreemptible
+      (\ s a -> s{_igcIsPreemptible = a})
+
+-- | Optional. The Compute Engine image resource used for cluster instances.
+-- It can be specified or may be inferred from
+-- SoftwareConfig.image_version.
+igcImageURI :: Lens' InstanceGroupConfig (Maybe Text)
+igcImageURI
+  = lens _igcImageURI (\ s a -> s{_igcImageURI = a})
+
+-- | Optional. The Compute Engine accelerator configuration for these
+-- instances.Beta Feature: This feature is still under development. It may
+-- be changed before final release.
+igcAccelerators :: Lens' InstanceGroupConfig [AcceleratorConfig]
+igcAccelerators
+  = lens _igcAccelerators
+      (\ s a -> s{_igcAccelerators = a})
+      . _Default
+      . _Coerce
+
+-- | Output only. The list of instance names. Cloud Dataproc derives the
+-- names from cluster_name, num_instances, and the instance group.
+igcInstanceNames :: Lens' InstanceGroupConfig [Text]
+igcInstanceNames
+  = lens _igcInstanceNames
+      (\ s a -> s{_igcInstanceNames = a})
+      . _Default
+      . _Coerce
+
+-- | Output only. The config for Compute Engine Instance Group Manager that
+-- manages this group. This is only used for preemptible instance groups.
+igcManagedGroupConfig :: Lens' InstanceGroupConfig (Maybe ManagedGroupConfig)
+igcManagedGroupConfig
+  = lens _igcManagedGroupConfig
+      (\ s a -> s{_igcManagedGroupConfig = a})
+
+-- | Optional. The Compute Engine machine type used for cluster instances.A
+-- full URL, partial URI, or short name are valid. Examples:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/zones\/us-east1-a\/machineTypes\/n1-standard-2
+-- projects\/[project_id]\/zones\/us-east1-a\/machineTypes\/n1-standard-2
+-- n1-standard-2Auto Zone Exception: If you are using the Cloud Dataproc
+-- Auto Zone Placement feature, you must use the short name of the machine
+-- type resource, for example, n1-standard-2.
+igcMachineTypeURI :: Lens' InstanceGroupConfig (Maybe Text)
+igcMachineTypeURI
+  = lens _igcMachineTypeURI
+      (\ s a -> s{_igcMachineTypeURI = a})
+
+instance FromJSON InstanceGroupConfig where
+        parseJSON
+          = withObject "InstanceGroupConfig"
+              (\ o ->
+                 InstanceGroupConfig' <$>
+                   (o .:? "numInstances") <*> (o .:? "diskConfig") <*>
+                     (o .:? "isPreemptible")
+                     <*> (o .:? "imageUri")
+                     <*> (o .:? "accelerators" .!= mempty)
+                     <*> (o .:? "instanceNames" .!= mempty)
+                     <*> (o .:? "managedGroupConfig")
+                     <*> (o .:? "machineTypeUri"))
+
+instance ToJSON InstanceGroupConfig where
+        toJSON InstanceGroupConfig'{..}
+          = object
+              (catMaybes
+                 [("numInstances" .=) <$> _igcNumInstances,
+                  ("diskConfig" .=) <$> _igcDiskConfig,
+                  ("isPreemptible" .=) <$> _igcIsPreemptible,
+                  ("imageUri" .=) <$> _igcImageURI,
+                  ("accelerators" .=) <$> _igcAccelerators,
+                  ("instanceNames" .=) <$> _igcInstanceNames,
+                  ("managedGroupConfig" .=) <$> _igcManagedGroupConfig,
+                  ("machineTypeUri" .=) <$> _igcMachineTypeURI])
+
+-- | A Cloud Dataproc job for running Apache Spark
+-- (http:\/\/spark.apache.org\/) applications on YARN.
+--
+-- /See:/ 'sparkJob' smart constructor.
+data SparkJob =
+  SparkJob'
+    { _sjArgs           :: !(Maybe [Text])
+    , _sjMainJarFileURI :: !(Maybe Text)
+    , _sjJarFileURIs    :: !(Maybe [Text])
+    , _sjFileURIs       :: !(Maybe [Text])
+    , _sjArchiveURIs    :: !(Maybe [Text])
+    , _sjMainClass      :: !(Maybe Text)
+    , _sjLoggingConfig  :: !(Maybe LoggingConfig)
+    , _sjProperties     :: !(Maybe SparkJobProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SparkJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sjArgs'
+--
+-- * 'sjMainJarFileURI'
+--
+-- * 'sjJarFileURIs'
+--
+-- * 'sjFileURIs'
+--
+-- * 'sjArchiveURIs'
+--
+-- * 'sjMainClass'
+--
+-- * 'sjLoggingConfig'
+--
+-- * 'sjProperties'
+sparkJob
+    :: SparkJob
+sparkJob =
+  SparkJob'
+    { _sjArgs = Nothing
+    , _sjMainJarFileURI = Nothing
+    , _sjJarFileURIs = Nothing
+    , _sjFileURIs = Nothing
+    , _sjArchiveURIs = Nothing
+    , _sjMainClass = Nothing
+    , _sjLoggingConfig = Nothing
+    , _sjProperties = Nothing
+    }
+
+
+-- | Optional. The arguments to pass to the driver. Do not include arguments,
+-- such as --conf, that can be set as job properties, since a collision may
+-- occur that causes an incorrect job submission.
+sjArgs :: Lens' SparkJob [Text]
+sjArgs
+  = lens _sjArgs (\ s a -> s{_sjArgs = a}) . _Default .
+      _Coerce
+
+-- | The HCFS URI of the jar file that contains the main class.
+sjMainJarFileURI :: Lens' SparkJob (Maybe Text)
+sjMainJarFileURI
+  = lens _sjMainJarFileURI
+      (\ s a -> s{_sjMainJarFileURI = a})
+
+-- | Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark
+-- driver and tasks.
+sjJarFileURIs :: Lens' SparkJob [Text]
+sjJarFileURIs
+  = lens _sjJarFileURIs
+      (\ s a -> s{_sjJarFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. HCFS URIs of files to be copied to the working directory of
+-- Spark drivers and distributed tasks. Useful for naively parallel tasks.
+sjFileURIs :: Lens' SparkJob [Text]
+sjFileURIs
+  = lens _sjFileURIs (\ s a -> s{_sjFileURIs = a}) .
+      _Default
+      . _Coerce
+
+-- | Optional. HCFS URIs of archives to be extracted in the working directory
+-- of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz,
+-- .tgz, and .zip.
+sjArchiveURIs :: Lens' SparkJob [Text]
+sjArchiveURIs
+  = lens _sjArchiveURIs
+      (\ s a -> s{_sjArchiveURIs = a})
+      . _Default
+      . _Coerce
+
+-- | The name of the driver\'s main class. The jar file that contains the
+-- class must be in the default CLASSPATH or specified in jar_file_uris.
+sjMainClass :: Lens' SparkJob (Maybe Text)
+sjMainClass
+  = lens _sjMainClass (\ s a -> s{_sjMainClass = a})
+
+-- | Optional. The runtime log config for job execution.
+sjLoggingConfig :: Lens' SparkJob (Maybe LoggingConfig)
+sjLoggingConfig
+  = lens _sjLoggingConfig
+      (\ s a -> s{_sjLoggingConfig = a})
+
+-- | Optional. A mapping of property names to values, used to configure
+-- Spark. Properties that conflict with values set by the Cloud Dataproc
+-- API may be overwritten. Can include properties set in
+-- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
+sjProperties :: Lens' SparkJob (Maybe SparkJobProperties)
+sjProperties
+  = lens _sjProperties (\ s a -> s{_sjProperties = a})
+
+instance FromJSON SparkJob where
+        parseJSON
+          = withObject "SparkJob"
+              (\ o ->
+                 SparkJob' <$>
+                   (o .:? "args" .!= mempty) <*>
+                     (o .:? "mainJarFileUri")
+                     <*> (o .:? "jarFileUris" .!= mempty)
+                     <*> (o .:? "fileUris" .!= mempty)
+                     <*> (o .:? "archiveUris" .!= mempty)
+                     <*> (o .:? "mainClass")
+                     <*> (o .:? "loggingConfig")
+                     <*> (o .:? "properties"))
+
+instance ToJSON SparkJob where
+        toJSON SparkJob'{..}
+          = object
+              (catMaybes
+                 [("args" .=) <$> _sjArgs,
+                  ("mainJarFileUri" .=) <$> _sjMainJarFileURI,
+                  ("jarFileUris" .=) <$> _sjJarFileURIs,
+                  ("fileUris" .=) <$> _sjFileURIs,
+                  ("archiveUris" .=) <$> _sjArchiveURIs,
+                  ("mainClass" .=) <$> _sjMainClass,
+                  ("loggingConfig" .=) <$> _sjLoggingConfig,
+                  ("properties" .=) <$> _sjProperties])
+
+-- | Optional. The properties to set on daemon config files.Property keys are
+-- specified in prefix:property format, for example core:hadoop.tmp.dir.
+-- The following are supported prefixes and their mappings:
+-- capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp:
+-- distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred:
+-- mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn:
+-- yarn-site.xmlFor more information, see Cluster properties.
+--
+-- /See:/ 'softwareConfigProperties' smart constructor.
+newtype SoftwareConfigProperties =
+  SoftwareConfigProperties'
+    { _scpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SoftwareConfigProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scpAddtional'
+softwareConfigProperties
+    :: HashMap Text Text -- ^ 'scpAddtional'
+    -> SoftwareConfigProperties
+softwareConfigProperties pScpAddtional_ =
+  SoftwareConfigProperties' {_scpAddtional = _Coerce # pScpAddtional_}
+
+
+scpAddtional :: Lens' SoftwareConfigProperties (HashMap Text Text)
+scpAddtional
+  = lens _scpAddtional (\ s a -> s{_scpAddtional = a})
+      . _Coerce
+
+instance FromJSON SoftwareConfigProperties where
+        parseJSON
+          = withObject "SoftwareConfigProperties"
+              (\ o ->
+                 SoftwareConfigProperties' <$> (parseJSONObject o))
+
+instance ToJSON SoftwareConfigProperties where
+        toJSON = toJSON . _scpAddtional
+
+-- | The workflow graph.
+--
+-- /See:/ 'workflowGraph' smart constructor.
+newtype WorkflowGraph =
+  WorkflowGraph'
+    { _wgNodes :: Maybe [WorkflowNode]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowGraph' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wgNodes'
+workflowGraph
+    :: WorkflowGraph
+workflowGraph = WorkflowGraph' {_wgNodes = Nothing}
+
+
+-- | Output only. The workflow nodes.
+wgNodes :: Lens' WorkflowGraph [WorkflowNode]
+wgNodes
+  = lens _wgNodes (\ s a -> s{_wgNodes = a}) . _Default
+      . _Coerce
+
+instance FromJSON WorkflowGraph where
+        parseJSON
+          = withObject "WorkflowGraph"
+              (\ o ->
+                 WorkflowGraph' <$> (o .:? "nodes" .!= mempty))
+
+instance ToJSON WorkflowGraph where
+        toJSON WorkflowGraph'{..}
+          = object (catMaybes [("nodes" .=) <$> _wgNodes])
+
+-- | The cluster operation triggered by a workflow.
+--
+-- /See:/ 'clusterOperation' smart constructor.
+data ClusterOperation =
+  ClusterOperation'
+    { _coDone        :: !(Maybe Bool)
+    , _coError       :: !(Maybe Text)
+    , _coOperationId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterOperation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coDone'
+--
+-- * 'coError'
+--
+-- * 'coOperationId'
+clusterOperation
+    :: ClusterOperation
+clusterOperation =
+  ClusterOperation'
+    {_coDone = Nothing, _coError = Nothing, _coOperationId = Nothing}
+
+
+-- | Output only. Indicates the operation is done.
+coDone :: Lens' ClusterOperation (Maybe Bool)
+coDone = lens _coDone (\ s a -> s{_coDone = a})
+
+-- | Output only. Error, if operation failed.
+coError :: Lens' ClusterOperation (Maybe Text)
+coError = lens _coError (\ s a -> s{_coError = a})
+
+-- | Output only. The id of the cluster operation.
+coOperationId :: Lens' ClusterOperation (Maybe Text)
+coOperationId
+  = lens _coOperationId
+      (\ s a -> s{_coOperationId = a})
+
+instance FromJSON ClusterOperation where
+        parseJSON
+          = withObject "ClusterOperation"
+              (\ o ->
+                 ClusterOperation' <$>
+                   (o .:? "done") <*> (o .:? "error") <*>
+                     (o .:? "operationId"))
+
+instance ToJSON ClusterOperation where
+        toJSON ClusterOperation'{..}
+          = object
+              (catMaybes
+                 [("done" .=) <$> _coDone, ("error" .=) <$> _coError,
+                  ("operationId" .=) <$> _coOperationId])
+
+-- | A selector that chooses target cluster for jobs based on metadata.
+--
+-- /See:/ 'clusterSelector' smart constructor.
+data ClusterSelector =
+  ClusterSelector'
+    { _csZone          :: !(Maybe Text)
+    , _csClusterLabels :: !(Maybe ClusterSelectorClusterLabels)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterSelector' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csZone'
+--
+-- * 'csClusterLabels'
+clusterSelector
+    :: ClusterSelector
+clusterSelector =
+  ClusterSelector' {_csZone = Nothing, _csClusterLabels = Nothing}
+
+
+-- | Optional. The zone where workflow process executes. This parameter does
+-- not affect the selection of the cluster.If unspecified, the zone of the
+-- first cluster matching the selector is used.
+csZone :: Lens' ClusterSelector (Maybe Text)
+csZone = lens _csZone (\ s a -> s{_csZone = a})
+
+-- | Required. The cluster labels. Cluster must have all labels to match.
+csClusterLabels :: Lens' ClusterSelector (Maybe ClusterSelectorClusterLabels)
+csClusterLabels
+  = lens _csClusterLabels
+      (\ s a -> s{_csClusterLabels = a})
+
+instance FromJSON ClusterSelector where
+        parseJSON
+          = withObject "ClusterSelector"
+              (\ o ->
+                 ClusterSelector' <$>
+                   (o .:? "zone") <*> (o .:? "clusterLabels"))
+
+instance ToJSON ClusterSelector where
+        toJSON ClusterSelector'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _csZone,
+                  ("clusterLabels" .=) <$> _csClusterLabels])
+
+-- | Job scheduling options.
+--
+-- /See:/ 'jobScheduling' smart constructor.
+newtype JobScheduling =
+  JobScheduling'
+    { _jsMaxFailuresPerHour :: Maybe (Textual Int32)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobScheduling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jsMaxFailuresPerHour'
+jobScheduling
+    :: JobScheduling
+jobScheduling = JobScheduling' {_jsMaxFailuresPerHour = Nothing}
+
+
+-- | Optional. Maximum number of times per hour a driver may be restarted as
+-- a result of driver terminating with non-zero code before job is reported
+-- failed.A job may be reported as thrashing if driver exits with non-zero
+-- code 4 times within 10 minute window.Maximum value is 10.
+jsMaxFailuresPerHour :: Lens' JobScheduling (Maybe Int32)
+jsMaxFailuresPerHour
+  = lens _jsMaxFailuresPerHour
+      (\ s a -> s{_jsMaxFailuresPerHour = a})
+      . mapping _Coerce
+
+instance FromJSON JobScheduling where
+        parseJSON
+          = withObject "JobScheduling"
+              (\ o ->
+                 JobScheduling' <$> (o .:? "maxFailuresPerHour"))
+
+instance ToJSON JobScheduling where
+        toJSON JobScheduling'{..}
+          = object
+              (catMaybes
+                 [("maxFailuresPerHour" .=) <$>
+                    _jsMaxFailuresPerHour])
+
+-- | Specifies the config of disk options for a group of VM instances.
+--
+-- /See:/ 'diskConfig' smart constructor.
+data DiskConfig =
+  DiskConfig'
+    { _dcNumLocalSsds   :: !(Maybe (Textual Int32))
+    , _dcBootDiskType   :: !(Maybe Text)
+    , _dcBootDiskSizeGb :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DiskConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcNumLocalSsds'
+--
+-- * 'dcBootDiskType'
+--
+-- * 'dcBootDiskSizeGb'
+diskConfig
+    :: DiskConfig
+diskConfig =
+  DiskConfig'
+    { _dcNumLocalSsds = Nothing
+    , _dcBootDiskType = Nothing
+    , _dcBootDiskSizeGb = Nothing
+    }
+
+
+-- | Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs
+-- are not attached, the boot disk is used to store runtime logs and HDFS
+-- (https:\/\/hadoop.apache.org\/docs\/r1.2.1\/hdfs_user_guide.html) data.
+-- If one or more SSDs are attached, this runtime bulk data is spread
+-- across them, and the boot disk contains only basic config and installed
+-- binaries.
+dcNumLocalSsds :: Lens' DiskConfig (Maybe Int32)
+dcNumLocalSsds
+  = lens _dcNumLocalSsds
+      (\ s a -> s{_dcNumLocalSsds = a})
+      . mapping _Coerce
+
+-- | Optional. Type of the boot disk (default is \"pd-standard\"). Valid
+-- values: \"pd-ssd\" (Persistent Disk Solid State Drive) or
+-- \"pd-standard\" (Persistent Disk Hard Disk Drive).
+dcBootDiskType :: Lens' DiskConfig (Maybe Text)
+dcBootDiskType
+  = lens _dcBootDiskType
+      (\ s a -> s{_dcBootDiskType = a})
+
+-- | Optional. Size in GB of the boot disk (default is 500GB).
+dcBootDiskSizeGb :: Lens' DiskConfig (Maybe Int32)
+dcBootDiskSizeGb
+  = lens _dcBootDiskSizeGb
+      (\ s a -> s{_dcBootDiskSizeGb = a})
+      . mapping _Coerce
+
+instance FromJSON DiskConfig where
+        parseJSON
+          = withObject "DiskConfig"
+              (\ o ->
+                 DiskConfig' <$>
+                   (o .:? "numLocalSsds") <*> (o .:? "bootDiskType") <*>
+                     (o .:? "bootDiskSizeGb"))
+
+instance ToJSON DiskConfig where
+        toJSON DiskConfig'{..}
+          = object
+              (catMaybes
+                 [("numLocalSsds" .=) <$> _dcNumLocalSsds,
+                  ("bootDiskType" .=) <$> _dcBootDiskType,
+                  ("bootDiskSizeGb" .=) <$> _dcBootDiskSizeGb])
+
+-- | Output only. Labels associated with the operation
+--
+-- /See:/ 'clusterOperationMetadataLabels' smart constructor.
+newtype ClusterOperationMetadataLabels =
+  ClusterOperationMetadataLabels'
+    { _comlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterOperationMetadataLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'comlAddtional'
+clusterOperationMetadataLabels
+    :: HashMap Text Text -- ^ 'comlAddtional'
+    -> ClusterOperationMetadataLabels
+clusterOperationMetadataLabels pComlAddtional_ =
+  ClusterOperationMetadataLabels' {_comlAddtional = _Coerce # pComlAddtional_}
+
+
+comlAddtional :: Lens' ClusterOperationMetadataLabels (HashMap Text Text)
+comlAddtional
+  = lens _comlAddtional
+      (\ s a -> s{_comlAddtional = a})
+      . _Coerce
+
+instance FromJSON ClusterOperationMetadataLabels
+         where
+        parseJSON
+          = withObject "ClusterOperationMetadataLabels"
+              (\ o ->
+                 ClusterOperationMetadataLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON ClusterOperationMetadataLabels where
+        toJSON = toJSON . _comlAddtional
+
+-- | Represents an expression text. Example: title: \"User account presence\"
+-- description: \"Determines whether the request has a user account\"
+-- expression: \"size(request.user) > 0\"
+--
+-- /See:/ 'expr' smart constructor.
+data Expr =
+  Expr'
+    { _eLocation    :: !(Maybe Text)
+    , _eExpression  :: !(Maybe Text)
+    , _eTitle       :: !(Maybe Text)
+    , _eDescription :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Expr' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eLocation'
+--
+-- * 'eExpression'
+--
+-- * 'eTitle'
+--
+-- * 'eDescription'
+expr
+    :: Expr
+expr =
+  Expr'
+    { _eLocation = Nothing
+    , _eExpression = Nothing
+    , _eTitle = Nothing
+    , _eDescription = Nothing
+    }
+
+
+-- | An optional string indicating the location of the expression for error
+-- reporting, e.g. a file name and a position in the file.
+eLocation :: Lens' Expr (Maybe Text)
+eLocation
+  = lens _eLocation (\ s a -> s{_eLocation = a})
+
+-- | Textual representation of an expression in Common Expression Language
+-- syntax.The application context of the containing message determines
+-- which well-known feature set of CEL is supported.
+eExpression :: Lens' Expr (Maybe Text)
+eExpression
+  = lens _eExpression (\ s a -> s{_eExpression = a})
+
+-- | An optional title for the expression, i.e. a short string describing its
+-- purpose. This can be used e.g. in UIs which allow to enter the
+-- expression.
+eTitle :: Lens' Expr (Maybe Text)
+eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
+
+-- | An optional description of the expression. This is a longer text which
+-- describes the expression, e.g. when hovered over it in a UI.
+eDescription :: Lens' Expr (Maybe Text)
+eDescription
+  = lens _eDescription (\ s a -> s{_eDescription = a})
+
+instance FromJSON Expr where
+        parseJSON
+          = withObject "Expr"
+              (\ o ->
+                 Expr' <$>
+                   (o .:? "location") <*> (o .:? "expression") <*>
+                     (o .:? "title")
+                     <*> (o .:? "description"))
+
+instance ToJSON Expr where
+        toJSON Expr'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _eLocation,
+                  ("expression" .=) <$> _eExpression,
+                  ("title" .=) <$> _eTitle,
+                  ("description" .=) <$> _eDescription])
+
+-- | 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])
+
+-- | Optional. Mapping of query variable names to values (equivalent to the
+-- Hive command: SET name=\"value\";).
+--
+-- /See:/ 'hiveJobScriptVariables' smart constructor.
+newtype HiveJobScriptVariables =
+  HiveJobScriptVariables'
+    { _hjsvAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HiveJobScriptVariables' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hjsvAddtional'
+hiveJobScriptVariables
+    :: HashMap Text Text -- ^ 'hjsvAddtional'
+    -> HiveJobScriptVariables
+hiveJobScriptVariables pHjsvAddtional_ =
+  HiveJobScriptVariables' {_hjsvAddtional = _Coerce # pHjsvAddtional_}
+
+
+hjsvAddtional :: Lens' HiveJobScriptVariables (HashMap Text Text)
+hjsvAddtional
+  = lens _hjsvAddtional
+      (\ s a -> s{_hjsvAddtional = a})
+      . _Coerce
+
+instance FromJSON HiveJobScriptVariables where
+        parseJSON
+          = withObject "HiveJobScriptVariables"
+              (\ o ->
+                 HiveJobScriptVariables' <$> (parseJSONObject o))
+
+instance ToJSON HiveJobScriptVariables where
+        toJSON = toJSON . _hjsvAddtional
+
+-- | Request message for GetIamPolicy method.
+--
+-- /See:/ 'getIAMPolicyRequest' smart constructor.
+data GetIAMPolicyRequest =
+  GetIAMPolicyRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+getIAMPolicyRequest
+    :: GetIAMPolicyRequest
+getIAMPolicyRequest = GetIAMPolicyRequest'
+
+
+instance FromJSON GetIAMPolicyRequest where
+        parseJSON
+          = withObject "GetIAMPolicyRequest"
+              (\ o -> pure GetIAMPolicyRequest')
+
+instance ToJSON GetIAMPolicyRequest where
+        toJSON = const emptyObject
+
+-- | Specifies workflow execution target.Either managed_cluster or
+-- cluster_selector is required.
+--
+-- /See:/ 'workflowTemplatePlacement' smart constructor.
+data WorkflowTemplatePlacement =
+  WorkflowTemplatePlacement'
+    { _wtpClusterSelector :: !(Maybe ClusterSelector)
+    , _wtpManagedCluster  :: !(Maybe ManagedCluster)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowTemplatePlacement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wtpClusterSelector'
+--
+-- * 'wtpManagedCluster'
+workflowTemplatePlacement
+    :: WorkflowTemplatePlacement
+workflowTemplatePlacement =
+  WorkflowTemplatePlacement'
+    {_wtpClusterSelector = Nothing, _wtpManagedCluster = Nothing}
+
+
+-- | Optional. A selector that chooses target cluster for jobs based on
+-- metadata.The selector is evaluated at the time each job is submitted.
+wtpClusterSelector :: Lens' WorkflowTemplatePlacement (Maybe ClusterSelector)
+wtpClusterSelector
+  = lens _wtpClusterSelector
+      (\ s a -> s{_wtpClusterSelector = a})
+
+-- | Optional. A cluster that is managed by the workflow.
+wtpManagedCluster :: Lens' WorkflowTemplatePlacement (Maybe ManagedCluster)
+wtpManagedCluster
+  = lens _wtpManagedCluster
+      (\ s a -> s{_wtpManagedCluster = a})
+
+instance FromJSON WorkflowTemplatePlacement where
+        parseJSON
+          = withObject "WorkflowTemplatePlacement"
+              (\ o ->
+                 WorkflowTemplatePlacement' <$>
+                   (o .:? "clusterSelector") <*>
+                     (o .:? "managedCluster"))
+
+instance ToJSON WorkflowTemplatePlacement where
+        toJSON WorkflowTemplatePlacement'{..}
+          = object
+              (catMaybes
+                 [("clusterSelector" .=) <$> _wtpClusterSelector,
+                  ("managedCluster" .=) <$> _wtpManagedCluster])
+
+-- | Describes the identifying information, config, and status of a cluster
+-- of Compute Engine instances.
+--
+-- /See:/ 'cluster' smart constructor.
+data Cluster =
+  Cluster'
+    { _cStatus        :: !(Maybe ClusterStatus)
+    , _cMetrics       :: !(Maybe ClusterMetrics)
+    , _cClusterUuid   :: !(Maybe Text)
+    , _cConfig        :: !(Maybe ClusterConfig)
+    , _cClusterName   :: !(Maybe Text)
+    , _cLabels        :: !(Maybe ClusterLabels)
+    , _cProjectId     :: !(Maybe Text)
+    , _cStatusHistory :: !(Maybe [ClusterStatus])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Cluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cStatus'
+--
+-- * 'cMetrics'
+--
+-- * 'cClusterUuid'
+--
+-- * 'cConfig'
+--
+-- * 'cClusterName'
+--
+-- * 'cLabels'
+--
+-- * 'cProjectId'
+--
+-- * 'cStatusHistory'
+cluster
+    :: Cluster
+cluster =
+  Cluster'
+    { _cStatus = Nothing
+    , _cMetrics = Nothing
+    , _cClusterUuid = Nothing
+    , _cConfig = Nothing
+    , _cClusterName = Nothing
+    , _cLabels = Nothing
+    , _cProjectId = Nothing
+    , _cStatusHistory = Nothing
+    }
+
+
+-- | Output only. Cluster status.
+cStatus :: Lens' Cluster (Maybe ClusterStatus)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
+
+-- | Contains cluster daemon metrics such as HDFS and YARN stats.Beta
+-- Feature: This report is available for testing purposes only. It may be
+-- changed before final release.
+cMetrics :: Lens' Cluster (Maybe ClusterMetrics)
+cMetrics = lens _cMetrics (\ s a -> s{_cMetrics = a})
+
+-- | Output only. A cluster UUID (Unique Universal Identifier). Cloud
+-- Dataproc generates this value when it creates the cluster.
+cClusterUuid :: Lens' Cluster (Maybe Text)
+cClusterUuid
+  = lens _cClusterUuid (\ s a -> s{_cClusterUuid = a})
+
+-- | Required. The cluster config. Note that Cloud Dataproc may set default
+-- values, and values may change when clusters are updated.
+cConfig :: Lens' Cluster (Maybe ClusterConfig)
+cConfig = lens _cConfig (\ s a -> s{_cConfig = a})
+
+-- | Required. The cluster name. Cluster names within a project must be
+-- unique. Names of deleted clusters can be reused.
+cClusterName :: Lens' Cluster (Maybe Text)
+cClusterName
+  = lens _cClusterName (\ s a -> s{_cClusterName = a})
+
+-- | Optional. The labels to associate with this cluster. Label keys must
+-- contain 1 to 63 characters, and must conform to RFC 1035
+-- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
+-- but, if present, must contain 1 to 63 characters, and must conform to
+-- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
+-- labels can be associated with a cluster.
+cLabels :: Lens' Cluster (Maybe ClusterLabels)
+cLabels = lens _cLabels (\ s a -> s{_cLabels = a})
+
+-- | Required. The Google Cloud Platform project ID that the cluster belongs
+-- to.
+cProjectId :: Lens' Cluster (Maybe Text)
+cProjectId
+  = lens _cProjectId (\ s a -> s{_cProjectId = a})
+
+-- | Output only. The previous cluster status.
+cStatusHistory :: Lens' Cluster [ClusterStatus]
+cStatusHistory
+  = lens _cStatusHistory
+      (\ s a -> s{_cStatusHistory = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Cluster where
+        parseJSON
+          = withObject "Cluster"
+              (\ o ->
+                 Cluster' <$>
+                   (o .:? "status") <*> (o .:? "metrics") <*>
+                     (o .:? "clusterUuid")
+                     <*> (o .:? "config")
+                     <*> (o .:? "clusterName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "statusHistory" .!= mempty))
+
+instance ToJSON Cluster where
+        toJSON Cluster'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _cStatus,
+                  ("metrics" .=) <$> _cMetrics,
+                  ("clusterUuid" .=) <$> _cClusterUuid,
+                  ("config" .=) <$> _cConfig,
+                  ("clusterName" .=) <$> _cClusterName,
+                  ("labels" .=) <$> _cLabels,
+                  ("projectId" .=) <$> _cProjectId,
+                  ("statusHistory" .=) <$> _cStatusHistory])
+
+-- | Optional. The labels to associate with this cluster.Label keys must be
+-- between 1 and 63 characters long, and must conform to the following PCRE
+-- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
+-- and 63 characters long, and must conform to the following PCRE regular
+-- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
+-- associated with a given cluster.
+--
+-- /See:/ 'managedClusterLabels' smart constructor.
+newtype ManagedClusterLabels =
+  ManagedClusterLabels'
+    { _mclAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedClusterLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mclAddtional'
+managedClusterLabels
+    :: HashMap Text Text -- ^ 'mclAddtional'
+    -> ManagedClusterLabels
+managedClusterLabels pMclAddtional_ =
+  ManagedClusterLabels' {_mclAddtional = _Coerce # pMclAddtional_}
+
+
+mclAddtional :: Lens' ManagedClusterLabels (HashMap Text Text)
+mclAddtional
+  = lens _mclAddtional (\ s a -> s{_mclAddtional = a})
+      . _Coerce
+
+instance FromJSON ManagedClusterLabels where
+        parseJSON
+          = withObject "ManagedClusterLabels"
+              (\ o ->
+                 ManagedClusterLabels' <$> (parseJSONObject o))
+
+instance ToJSON ManagedClusterLabels where
+        toJSON = toJSON . _mclAddtional
+
+-- | Configuration for parameter validation.
+--
+-- /See:/ 'parameterValidation' smart constructor.
+data ParameterValidation =
+  ParameterValidation'
+    { _pvRegex  :: !(Maybe RegexValidation)
+    , _pvValues :: !(Maybe ValueValidation)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ParameterValidation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pvRegex'
+--
+-- * 'pvValues'
+parameterValidation
+    :: ParameterValidation
+parameterValidation =
+  ParameterValidation' {_pvRegex = Nothing, _pvValues = Nothing}
+
+
+-- | Validation based on regular expressions.
+pvRegex :: Lens' ParameterValidation (Maybe RegexValidation)
+pvRegex = lens _pvRegex (\ s a -> s{_pvRegex = a})
+
+-- | Validation based on a list of allowed values.
+pvValues :: Lens' ParameterValidation (Maybe ValueValidation)
+pvValues = lens _pvValues (\ s a -> s{_pvValues = a})
+
+instance FromJSON ParameterValidation where
+        parseJSON
+          = withObject "ParameterValidation"
+              (\ o ->
+                 ParameterValidation' <$>
+                   (o .:? "regex") <*> (o .:? "values"))
+
+instance ToJSON ParameterValidation where
+        toJSON ParameterValidation'{..}
+          = object
+              (catMaybes
+                 [("regex" .=) <$> _pvRegex,
+                  ("values" .=) <$> _pvValues])
+
+-- | Optional. The labels to associate with this job. Label keys must contain
+-- 1 to 63 characters, and must conform to RFC 1035
+-- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
+-- but, if present, must contain 1 to 63 characters, and must conform to
+-- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
+-- labels can be associated with a job.
+--
+-- /See:/ 'jobLabels' smart constructor.
+newtype JobLabels =
+  JobLabels'
+    { _jlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jlAddtional'
+jobLabels
+    :: HashMap Text Text -- ^ 'jlAddtional'
+    -> JobLabels
+jobLabels pJlAddtional_ = JobLabels' {_jlAddtional = _Coerce # pJlAddtional_}
+
+
+jlAddtional :: Lens' JobLabels (HashMap Text Text)
+jlAddtional
+  = lens _jlAddtional (\ s a -> s{_jlAddtional = a}) .
+      _Coerce
+
+instance FromJSON JobLabels where
+        parseJSON
+          = withObject "JobLabels"
+              (\ o -> JobLabels' <$> (parseJSONObject o))
+
+instance ToJSON JobLabels where
+        toJSON = toJSON . _jlAddtional
+
+-- | A request to submit a job.
+--
+-- /See:/ 'submitJobRequest' smart constructor.
+data SubmitJobRequest =
+  SubmitJobRequest'
+    { _sjrRequestId :: !(Maybe Text)
+    , _sjrJob       :: !(Maybe Job)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SubmitJobRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sjrRequestId'
+--
+-- * 'sjrJob'
+submitJobRequest
+    :: SubmitJobRequest
+submitJobRequest =
+  SubmitJobRequest' {_sjrRequestId = Nothing, _sjrJob = Nothing}
+
+
+-- | Optional. A unique id used to identify the request. If the server
+-- receives two SubmitJobRequest requests with the same id, then the second
+-- request will be ignored and the first Job created and stored in the
+-- backend is returned.It is recommended to always set this value to a UUID
+-- (https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier).The id
+-- must contain only letters (a-z, A-Z), numbers (0-9), underscores (_),
+-- and hyphens (-). The maximum length is 40 characters.
+sjrRequestId :: Lens' SubmitJobRequest (Maybe Text)
+sjrRequestId
+  = lens _sjrRequestId (\ s a -> s{_sjrRequestId = a})
+
+-- | Required. The job resource.
+sjrJob :: Lens' SubmitJobRequest (Maybe Job)
+sjrJob = lens _sjrJob (\ s a -> s{_sjrJob = a})
+
+instance FromJSON SubmitJobRequest where
+        parseJSON
+          = withObject "SubmitJobRequest"
+              (\ o ->
+                 SubmitJobRequest' <$>
+                   (o .:? "requestId") <*> (o .:? "job"))
+
+instance ToJSON SubmitJobRequest where
+        toJSON SubmitJobRequest'{..}
+          = object
+              (catMaybes
+                 [("requestId" .=) <$> _sjrRequestId,
+                  ("job" .=) <$> _sjrJob])
+
+-- | Contains cluster daemon metrics, such as HDFS and YARN stats.Beta
+-- Feature: This report is available for testing purposes only. It may be
+-- changed before final release.
+--
+-- /See:/ 'clusterMetrics' smart constructor.
+data ClusterMetrics =
+  ClusterMetrics'
+    { _cmYarnMetrics :: !(Maybe ClusterMetricsYarnMetrics)
+    , _cmHdfsMetrics :: !(Maybe ClusterMetricsHdfsMetrics)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterMetrics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmYarnMetrics'
+--
+-- * 'cmHdfsMetrics'
+clusterMetrics
+    :: ClusterMetrics
+clusterMetrics =
+  ClusterMetrics' {_cmYarnMetrics = Nothing, _cmHdfsMetrics = Nothing}
+
+
+-- | The YARN metrics.
+cmYarnMetrics :: Lens' ClusterMetrics (Maybe ClusterMetricsYarnMetrics)
+cmYarnMetrics
+  = lens _cmYarnMetrics
+      (\ s a -> s{_cmYarnMetrics = a})
+
+-- | The HDFS metrics.
+cmHdfsMetrics :: Lens' ClusterMetrics (Maybe ClusterMetricsHdfsMetrics)
+cmHdfsMetrics
+  = lens _cmHdfsMetrics
+      (\ s a -> s{_cmHdfsMetrics = a})
+
+instance FromJSON ClusterMetrics where
+        parseJSON
+          = withObject "ClusterMetrics"
+              (\ o ->
+                 ClusterMetrics' <$>
+                   (o .:? "yarnMetrics") <*> (o .:? "hdfsMetrics"))
+
+instance ToJSON ClusterMetrics where
+        toJSON ClusterMetrics'{..}
+          = object
+              (catMaybes
+                 [("yarnMetrics" .=) <$> _cmYarnMetrics,
+                  ("hdfsMetrics" .=) <$> _cmHdfsMetrics])
+
+-- | 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])
+
+-- | 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
+
+-- | A Cloud Dataproc job for running Apache Hive
+-- (https:\/\/hive.apache.org\/) queries on YARN.
+--
+-- /See:/ 'hiveJob' smart constructor.
+data HiveJob =
+  HiveJob'
+    { _hjQueryFileURI      :: !(Maybe Text)
+    , _hjJarFileURIs       :: !(Maybe [Text])
+    , _hjScriptVariables   :: !(Maybe HiveJobScriptVariables)
+    , _hjQueryList         :: !(Maybe QueryList)
+    , _hjContinueOnFailure :: !(Maybe Bool)
+    , _hjProperties        :: !(Maybe HiveJobProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HiveJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hjQueryFileURI'
+--
+-- * 'hjJarFileURIs'
+--
+-- * 'hjScriptVariables'
+--
+-- * 'hjQueryList'
+--
+-- * 'hjContinueOnFailure'
+--
+-- * 'hjProperties'
+hiveJob
+    :: HiveJob
+hiveJob =
+  HiveJob'
+    { _hjQueryFileURI = Nothing
+    , _hjJarFileURIs = Nothing
+    , _hjScriptVariables = Nothing
+    , _hjQueryList = Nothing
+    , _hjContinueOnFailure = Nothing
+    , _hjProperties = Nothing
+    }
+
+
+-- | The HCFS URI of the script that contains Hive queries.
+hjQueryFileURI :: Lens' HiveJob (Maybe Text)
+hjQueryFileURI
+  = lens _hjQueryFileURI
+      (\ s a -> s{_hjQueryFileURI = a})
+
+-- | Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive
+-- server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and
+-- UDFs.
+hjJarFileURIs :: Lens' HiveJob [Text]
+hjJarFileURIs
+  = lens _hjJarFileURIs
+      (\ s a -> s{_hjJarFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. Mapping of query variable names to values (equivalent to the
+-- Hive command: SET name=\"value\";).
+hjScriptVariables :: Lens' HiveJob (Maybe HiveJobScriptVariables)
+hjScriptVariables
+  = lens _hjScriptVariables
+      (\ s a -> s{_hjScriptVariables = a})
+
+-- | A list of queries.
+hjQueryList :: Lens' HiveJob (Maybe QueryList)
+hjQueryList
+  = lens _hjQueryList (\ s a -> s{_hjQueryList = a})
+
+-- | Optional. Whether to continue executing queries if a query fails. The
+-- default value is false. Setting to true can be useful when executing
+-- independent parallel queries.
+hjContinueOnFailure :: Lens' HiveJob (Maybe Bool)
+hjContinueOnFailure
+  = lens _hjContinueOnFailure
+      (\ s a -> s{_hjContinueOnFailure = a})
+
+-- | Optional. A mapping of property names and values, used to configure
+-- Hive. Properties that conflict with values set by the Cloud Dataproc API
+-- may be overwritten. Can include properties set in
+-- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/hive\/conf\/hive-site.xml, and
+-- classes in user code.
+hjProperties :: Lens' HiveJob (Maybe HiveJobProperties)
+hjProperties
+  = lens _hjProperties (\ s a -> s{_hjProperties = a})
+
+instance FromJSON HiveJob where
+        parseJSON
+          = withObject "HiveJob"
+              (\ o ->
+                 HiveJob' <$>
+                   (o .:? "queryFileUri") <*>
+                     (o .:? "jarFileUris" .!= mempty)
+                     <*> (o .:? "scriptVariables")
+                     <*> (o .:? "queryList")
+                     <*> (o .:? "continueOnFailure")
+                     <*> (o .:? "properties"))
+
+instance ToJSON HiveJob where
+        toJSON HiveJob'{..}
+          = object
+              (catMaybes
+                 [("queryFileUri" .=) <$> _hjQueryFileURI,
+                  ("jarFileUris" .=) <$> _hjJarFileURIs,
+                  ("scriptVariables" .=) <$> _hjScriptVariables,
+                  ("queryList" .=) <$> _hjQueryList,
+                  ("continueOnFailure" .=) <$> _hjContinueOnFailure,
+                  ("properties" .=) <$> _hjProperties])
+
+-- | Optional. The labels to associate with this job.Label keys must be
+-- between 1 and 63 characters long, and must conform to the following
+-- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
+-- and 63 characters long, and must conform to the following regular
+-- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
+-- associated with a given job.
+--
+-- /See:/ 'orderedJobLabels' smart constructor.
+newtype OrderedJobLabels =
+  OrderedJobLabels'
+    { _ojlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrderedJobLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ojlAddtional'
+orderedJobLabels
+    :: HashMap Text Text -- ^ 'ojlAddtional'
+    -> OrderedJobLabels
+orderedJobLabels pOjlAddtional_ =
+  OrderedJobLabels' {_ojlAddtional = _Coerce # pOjlAddtional_}
+
+
+ojlAddtional :: Lens' OrderedJobLabels (HashMap Text Text)
+ojlAddtional
+  = lens _ojlAddtional (\ s a -> s{_ojlAddtional = a})
+      . _Coerce
+
+instance FromJSON OrderedJobLabels where
+        parseJSON
+          = withObject "OrderedJobLabels"
+              (\ o -> OrderedJobLabels' <$> (parseJSONObject o))
+
+instance ToJSON OrderedJobLabels where
+        toJSON = toJSON . _ojlAddtional
+
+-- | Required. The cluster labels. Cluster must have all labels to match.
+--
+-- /See:/ 'clusterSelectorClusterLabels' smart constructor.
+newtype ClusterSelectorClusterLabels =
+  ClusterSelectorClusterLabels'
+    { _csclAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterSelectorClusterLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csclAddtional'
+clusterSelectorClusterLabels
+    :: HashMap Text Text -- ^ 'csclAddtional'
+    -> ClusterSelectorClusterLabels
+clusterSelectorClusterLabels pCsclAddtional_ =
+  ClusterSelectorClusterLabels' {_csclAddtional = _Coerce # pCsclAddtional_}
+
+
+csclAddtional :: Lens' ClusterSelectorClusterLabels (HashMap Text Text)
+csclAddtional
+  = lens _csclAddtional
+      (\ s a -> s{_csclAddtional = a})
+      . _Coerce
+
+instance FromJSON ClusterSelectorClusterLabels where
+        parseJSON
+          = withObject "ClusterSelectorClusterLabels"
+              (\ o ->
+                 ClusterSelectorClusterLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON ClusterSelectorClusterLabels where
+        toJSON = toJSON . _csclAddtional
+
+-- | Optional. Mapping of query variable names to values (equivalent to the
+-- Spark SQL command: SET name=\"value\";).
+--
+-- /See:/ 'sparkSQLJobScriptVariables' smart constructor.
+newtype SparkSQLJobScriptVariables =
+  SparkSQLJobScriptVariables'
+    { _ssqljsvAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SparkSQLJobScriptVariables' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssqljsvAddtional'
+sparkSQLJobScriptVariables
+    :: HashMap Text Text -- ^ 'ssqljsvAddtional'
+    -> SparkSQLJobScriptVariables
+sparkSQLJobScriptVariables pSsqljsvAddtional_ =
+  SparkSQLJobScriptVariables' {_ssqljsvAddtional = _Coerce # pSsqljsvAddtional_}
+
+
+ssqljsvAddtional :: Lens' SparkSQLJobScriptVariables (HashMap Text Text)
+ssqljsvAddtional
+  = lens _ssqljsvAddtional
+      (\ s a -> s{_ssqljsvAddtional = a})
+      . _Coerce
+
+instance FromJSON SparkSQLJobScriptVariables where
+        parseJSON
+          = withObject "SparkSQLJobScriptVariables"
+              (\ o ->
+                 SparkSQLJobScriptVariables' <$> (parseJSONObject o))
+
+instance ToJSON SparkSQLJobScriptVariables where
+        toJSON = toJSON . _ssqljsvAddtional
+
+-- | Optional. A mapping of property names to values, used to configure Pig.
+-- Properties that conflict with values set by the Cloud Dataproc API may
+-- be overwritten. Can include properties set in
+-- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/pig\/conf\/pig.properties, and
+-- classes in user code.
+--
+-- /See:/ 'pigJobProperties' smart constructor.
+newtype PigJobProperties =
+  PigJobProperties'
+    { _pjpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PigJobProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pjpAddtional'
+pigJobProperties
+    :: HashMap Text Text -- ^ 'pjpAddtional'
+    -> PigJobProperties
+pigJobProperties pPjpAddtional_ =
+  PigJobProperties' {_pjpAddtional = _Coerce # pPjpAddtional_}
+
+
+pjpAddtional :: Lens' PigJobProperties (HashMap Text Text)
+pjpAddtional
+  = lens _pjpAddtional (\ s a -> s{_pjpAddtional = a})
+      . _Coerce
+
+instance FromJSON PigJobProperties where
+        parseJSON
+          = withObject "PigJobProperties"
+              (\ o -> PigJobProperties' <$> (parseJSONObject o))
+
+instance ToJSON PigJobProperties where
+        toJSON = toJSON . _pjpAddtional
+
+-- | The cluster config.
+--
+-- /See:/ 'clusterConfig' smart constructor.
+data ClusterConfig =
+  ClusterConfig'
+    { _ccWorkerConfig          :: !(Maybe InstanceGroupConfig)
+    , _ccInitializationActions :: !(Maybe [NodeInitializationAction])
+    , _ccMasterConfig          :: !(Maybe InstanceGroupConfig)
+    , _ccGceClusterConfig      :: !(Maybe GceClusterConfig)
+    , _ccConfigBucket          :: !(Maybe Text)
+    , _ccEncryptionConfig      :: !(Maybe EncryptionConfig)
+    , _ccSoftwareConfig        :: !(Maybe SoftwareConfig)
+    , _ccSecondaryWorkerConfig :: !(Maybe InstanceGroupConfig)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccWorkerConfig'
+--
+-- * 'ccInitializationActions'
+--
+-- * 'ccMasterConfig'
+--
+-- * 'ccGceClusterConfig'
+--
+-- * 'ccConfigBucket'
+--
+-- * 'ccEncryptionConfig'
+--
+-- * 'ccSoftwareConfig'
+--
+-- * 'ccSecondaryWorkerConfig'
+clusterConfig
+    :: ClusterConfig
+clusterConfig =
+  ClusterConfig'
+    { _ccWorkerConfig = Nothing
+    , _ccInitializationActions = Nothing
+    , _ccMasterConfig = Nothing
+    , _ccGceClusterConfig = Nothing
+    , _ccConfigBucket = Nothing
+    , _ccEncryptionConfig = Nothing
+    , _ccSoftwareConfig = Nothing
+    , _ccSecondaryWorkerConfig = Nothing
+    }
+
+
+-- | Optional. The Compute Engine config settings for worker instances in a
+-- cluster.
+ccWorkerConfig :: Lens' ClusterConfig (Maybe InstanceGroupConfig)
+ccWorkerConfig
+  = lens _ccWorkerConfig
+      (\ s a -> s{_ccWorkerConfig = a})
+
+-- | Optional. Commands to execute on each node after config is completed. By
+-- default, executables are run on master and all worker nodes. You can
+-- test a node\'s role metadata to run an executable on a master or worker
+-- node, as shown below using curl (you can also use wget): ROLE=$(curl -H
+-- Metadata-Flavor:Google
+-- http:\/\/metadata\/computeMetadata\/v1\/instance\/attributes\/dataproc-role)
+-- if [[ \"${ROLE}\" == \'Master\' ]]; then ... master specific actions ...
+-- else ... worker specific actions ... fi
+ccInitializationActions :: Lens' ClusterConfig [NodeInitializationAction]
+ccInitializationActions
+  = lens _ccInitializationActions
+      (\ s a -> s{_ccInitializationActions = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. The Compute Engine config settings for the master instance in
+-- a cluster.
+ccMasterConfig :: Lens' ClusterConfig (Maybe InstanceGroupConfig)
+ccMasterConfig
+  = lens _ccMasterConfig
+      (\ s a -> s{_ccMasterConfig = a})
+
+-- | Optional. The shared Compute Engine config settings for all instances in
+-- a cluster.
+ccGceClusterConfig :: Lens' ClusterConfig (Maybe GceClusterConfig)
+ccGceClusterConfig
+  = lens _ccGceClusterConfig
+      (\ s a -> s{_ccGceClusterConfig = a})
+
+-- | Optional. A Google Cloud Storage bucket used to stage job dependencies,
+-- config files, and job driver console output. If you do not specify a
+-- staging bucket, Cloud Dataproc will determine a Cloud Storage location
+-- (US, ASIA, or EU) for your cluster\'s staging bucket according to the
+-- Google Compute Engine zone where your cluster is deployed, and then
+-- create and manage this project-level, per-location bucket (see Cloud
+-- Dataproc staging bucket).
+ccConfigBucket :: Lens' ClusterConfig (Maybe Text)
+ccConfigBucket
+  = lens _ccConfigBucket
+      (\ s a -> s{_ccConfigBucket = a})
+
+-- | Optional. Encryption settings for the cluster.
+ccEncryptionConfig :: Lens' ClusterConfig (Maybe EncryptionConfig)
+ccEncryptionConfig
+  = lens _ccEncryptionConfig
+      (\ s a -> s{_ccEncryptionConfig = a})
+
+-- | Optional. The config settings for software inside the cluster.
+ccSoftwareConfig :: Lens' ClusterConfig (Maybe SoftwareConfig)
+ccSoftwareConfig
+  = lens _ccSoftwareConfig
+      (\ s a -> s{_ccSoftwareConfig = a})
+
+-- | Optional. The Compute Engine config settings for additional worker
+-- instances in a cluster.
+ccSecondaryWorkerConfig :: Lens' ClusterConfig (Maybe InstanceGroupConfig)
+ccSecondaryWorkerConfig
+  = lens _ccSecondaryWorkerConfig
+      (\ s a -> s{_ccSecondaryWorkerConfig = a})
+
+instance FromJSON ClusterConfig where
+        parseJSON
+          = withObject "ClusterConfig"
+              (\ o ->
+                 ClusterConfig' <$>
+                   (o .:? "workerConfig") <*>
+                     (o .:? "initializationActions" .!= mempty)
+                     <*> (o .:? "masterConfig")
+                     <*> (o .:? "gceClusterConfig")
+                     <*> (o .:? "configBucket")
+                     <*> (o .:? "encryptionConfig")
+                     <*> (o .:? "softwareConfig")
+                     <*> (o .:? "secondaryWorkerConfig"))
+
+instance ToJSON ClusterConfig where
+        toJSON ClusterConfig'{..}
+          = object
+              (catMaybes
+                 [("workerConfig" .=) <$> _ccWorkerConfig,
+                  ("initializationActions" .=) <$>
+                    _ccInitializationActions,
+                  ("masterConfig" .=) <$> _ccMasterConfig,
+                  ("gceClusterConfig" .=) <$> _ccGceClusterConfig,
+                  ("configBucket" .=) <$> _ccConfigBucket,
+                  ("encryptionConfig" .=) <$> _ccEncryptionConfig,
+                  ("softwareConfig" .=) <$> _ccSoftwareConfig,
+                  ("secondaryWorkerConfig" .=) <$>
+                    _ccSecondaryWorkerConfig])
+
+-- | A request to instantiate a workflow template.
+--
+-- /See:/ 'instantiateWorkflowTemplateRequest' smart constructor.
+data InstantiateWorkflowTemplateRequest =
+  InstantiateWorkflowTemplateRequest'
+    { _iwtrRequestId  :: !(Maybe Text)
+    , _iwtrVersion    :: !(Maybe (Textual Int32))
+    , _iwtrParameters :: !(Maybe InstantiateWorkflowTemplateRequestParameters)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstantiateWorkflowTemplateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iwtrRequestId'
+--
+-- * 'iwtrVersion'
+--
+-- * 'iwtrParameters'
+instantiateWorkflowTemplateRequest
+    :: InstantiateWorkflowTemplateRequest
+instantiateWorkflowTemplateRequest =
+  InstantiateWorkflowTemplateRequest'
+    { _iwtrRequestId = Nothing
+    , _iwtrVersion = Nothing
+    , _iwtrParameters = Nothing
+    }
+
+
+-- | Optional. A tag that prevents multiple concurrent workflow instances
+-- with the same tag from running. This mitigates risk of concurrent
+-- instances started due to retries.It is recommended to always set this
+-- value to a UUID
+-- (https:\/\/en.wikipedia.org\/wiki\/Universally_unique_identifier).The
+-- tag must contain only letters (a-z, A-Z), numbers (0-9), underscores
+-- (_), and hyphens (-). The maximum length is 40 characters.
+iwtrRequestId :: Lens' InstantiateWorkflowTemplateRequest (Maybe Text)
+iwtrRequestId
+  = lens _iwtrRequestId
+      (\ s a -> s{_iwtrRequestId = a})
+
+-- | Optional. The version of workflow template to instantiate. If specified,
+-- the workflow will be instantiated only if the current version of the
+-- workflow template has the supplied version.This option cannot be used to
+-- instantiate a previous version of workflow template.
+iwtrVersion :: Lens' InstantiateWorkflowTemplateRequest (Maybe Int32)
+iwtrVersion
+  = lens _iwtrVersion (\ s a -> s{_iwtrVersion = a}) .
+      mapping _Coerce
+
+-- | Optional. Map from parameter names to values that should be used for
+-- those parameters. Values may not exceed 100 characters.
+iwtrParameters :: Lens' InstantiateWorkflowTemplateRequest (Maybe InstantiateWorkflowTemplateRequestParameters)
+iwtrParameters
+  = lens _iwtrParameters
+      (\ s a -> s{_iwtrParameters = a})
+
+instance FromJSON InstantiateWorkflowTemplateRequest
+         where
+        parseJSON
+          = withObject "InstantiateWorkflowTemplateRequest"
+              (\ o ->
+                 InstantiateWorkflowTemplateRequest' <$>
+                   (o .:? "requestId") <*> (o .:? "version") <*>
+                     (o .:? "parameters"))
+
+instance ToJSON InstantiateWorkflowTemplateRequest
+         where
+        toJSON InstantiateWorkflowTemplateRequest'{..}
+          = object
+              (catMaybes
+                 [("requestId" .=) <$> _iwtrRequestId,
+                  ("version" .=) <$> _iwtrVersion,
+                  ("parameters" .=) <$> _iwtrParameters])
+
+-- | Optional. A mapping of property names to values, used to configure
+-- Hadoop. Properties that conflict with values set by the Cloud Dataproc
+-- API may be overwritten. Can include properties set in
+-- \/etc\/hadoop\/conf\/*-site and classes in user code.
+--
+-- /See:/ 'hadoopJobProperties' smart constructor.
+newtype HadoopJobProperties =
+  HadoopJobProperties'
+    { _hjpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HadoopJobProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hjpAddtional'
+hadoopJobProperties
+    :: HashMap Text Text -- ^ 'hjpAddtional'
+    -> HadoopJobProperties
+hadoopJobProperties pHjpAddtional_ =
+  HadoopJobProperties' {_hjpAddtional = _Coerce # pHjpAddtional_}
+
+
+hjpAddtional :: Lens' HadoopJobProperties (HashMap Text Text)
+hjpAddtional
+  = lens _hjpAddtional (\ s a -> s{_hjpAddtional = a})
+      . _Coerce
+
+instance FromJSON HadoopJobProperties where
+        parseJSON
+          = withObject "HadoopJobProperties"
+              (\ o -> HadoopJobProperties' <$> (parseJSONObject o))
+
+instance ToJSON HadoopJobProperties where
+        toJSON = toJSON . _hjpAddtional
+
+-- | A Cloud Dataproc workflow template resource.
+--
+-- /See:/ 'workflowTemplate' smart constructor.
+data WorkflowTemplate =
+  WorkflowTemplate'
+    { _wtJobs       :: !(Maybe [OrderedJob])
+    , _wtUpdateTime :: !(Maybe DateTime')
+    , _wtName       :: !(Maybe Text)
+    , _wtVersion    :: !(Maybe (Textual Int32))
+    , _wtParameters :: !(Maybe [TemplateParameter])
+    , _wtId         :: !(Maybe Text)
+    , _wtLabels     :: !(Maybe WorkflowTemplateLabels)
+    , _wtCreateTime :: !(Maybe DateTime')
+    , _wtPlacement  :: !(Maybe WorkflowTemplatePlacement)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wtJobs'
+--
+-- * 'wtUpdateTime'
+--
+-- * 'wtName'
+--
+-- * 'wtVersion'
+--
+-- * 'wtParameters'
+--
+-- * 'wtId'
+--
+-- * 'wtLabels'
+--
+-- * 'wtCreateTime'
+--
+-- * 'wtPlacement'
+workflowTemplate
+    :: WorkflowTemplate
+workflowTemplate =
+  WorkflowTemplate'
+    { _wtJobs = Nothing
+    , _wtUpdateTime = Nothing
+    , _wtName = Nothing
+    , _wtVersion = Nothing
+    , _wtParameters = Nothing
+    , _wtId = Nothing
+    , _wtLabels = Nothing
+    , _wtCreateTime = Nothing
+    , _wtPlacement = Nothing
+    }
+
+
+-- | Required. The Directed Acyclic Graph of Jobs to submit.
+wtJobs :: Lens' WorkflowTemplate [OrderedJob]
+wtJobs
+  = lens _wtJobs (\ s a -> s{_wtJobs = a}) . _Default .
+      _Coerce
+
+-- | Output only. The time template was last updated.
+wtUpdateTime :: Lens' WorkflowTemplate (Maybe UTCTime)
+wtUpdateTime
+  = lens _wtUpdateTime (\ s a -> s{_wtUpdateTime = a})
+      . mapping _DateTime
+
+-- | Output only. The \"resource name\" of the template, as described in
+-- https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+wtName :: Lens' WorkflowTemplate (Maybe Text)
+wtName = lens _wtName (\ s a -> s{_wtName = a})
+
+-- | Optional. Used to perform a consistent read-modify-write.This field
+-- should be left blank for a CreateWorkflowTemplate request. It is
+-- required for an UpdateWorkflowTemplate request, and must match the
+-- current server version. A typical update template flow would fetch the
+-- current template with a GetWorkflowTemplate request, which will return
+-- the current template with the version field filled in with the current
+-- server version. The user updates other fields in the template, then
+-- returns it as part of the UpdateWorkflowTemplate request.
+wtVersion :: Lens' WorkflowTemplate (Maybe Int32)
+wtVersion
+  = lens _wtVersion (\ s a -> s{_wtVersion = a}) .
+      mapping _Coerce
+
+-- | Optional. Template parameters whose values are substituted into the
+-- template. Values for parameters must be provided when the template is
+-- instantiated.
+wtParameters :: Lens' WorkflowTemplate [TemplateParameter]
+wtParameters
+  = lens _wtParameters (\ s a -> s{_wtParameters = a})
+      . _Default
+      . _Coerce
+
+-- | Required. The template id.The id must contain only letters (a-z, A-Z),
+-- numbers (0-9), underscores (_), and hyphens (-). Cannot begin or end
+-- with underscore or hyphen. Must consist of between 3 and 50 characters.
+wtId :: Lens' WorkflowTemplate (Maybe Text)
+wtId = lens _wtId (\ s a -> s{_wtId = a})
+
+-- | Optional. The labels to associate with this template. These labels will
+-- be propagated to all jobs and clusters created by the workflow
+-- instance.Label keys must contain 1 to 63 characters, and must conform to
+-- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).Label values may be
+-- empty, but, if present, must contain 1 to 63 characters, and must
+-- conform to RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).No more
+-- than 32 labels can be associated with a template.
+wtLabels :: Lens' WorkflowTemplate (Maybe WorkflowTemplateLabels)
+wtLabels = lens _wtLabels (\ s a -> s{_wtLabels = a})
+
+-- | Output only. The time template was created.
+wtCreateTime :: Lens' WorkflowTemplate (Maybe UTCTime)
+wtCreateTime
+  = lens _wtCreateTime (\ s a -> s{_wtCreateTime = a})
+      . mapping _DateTime
+
+-- | Required. WorkflowTemplate scheduling information.
+wtPlacement :: Lens' WorkflowTemplate (Maybe WorkflowTemplatePlacement)
+wtPlacement
+  = lens _wtPlacement (\ s a -> s{_wtPlacement = a})
+
+instance FromJSON WorkflowTemplate where
+        parseJSON
+          = withObject "WorkflowTemplate"
+              (\ o ->
+                 WorkflowTemplate' <$>
+                   (o .:? "jobs" .!= mempty) <*> (o .:? "updateTime")
+                     <*> (o .:? "name")
+                     <*> (o .:? "version")
+                     <*> (o .:? "parameters" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "createTime")
+                     <*> (o .:? "placement"))
+
+instance ToJSON WorkflowTemplate where
+        toJSON WorkflowTemplate'{..}
+          = object
+              (catMaybes
+                 [("jobs" .=) <$> _wtJobs,
+                  ("updateTime" .=) <$> _wtUpdateTime,
+                  ("name" .=) <$> _wtName,
+                  ("version" .=) <$> _wtVersion,
+                  ("parameters" .=) <$> _wtParameters,
+                  ("id" .=) <$> _wtId, ("labels" .=) <$> _wtLabels,
+                  ("createTime" .=) <$> _wtCreateTime,
+                  ("placement" .=) <$> _wtPlacement])
+
+-- | The status of the operation.
+--
+-- /See:/ 'clusterOperationStatus' smart constructor.
+data ClusterOperationStatus =
+  ClusterOperationStatus'
+    { _cosState          :: !(Maybe ClusterOperationStatusState)
+    , _cosInnerState     :: !(Maybe Text)
+    , _cosStateStartTime :: !(Maybe DateTime')
+    , _cosDetails        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterOperationStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cosState'
+--
+-- * 'cosInnerState'
+--
+-- * 'cosStateStartTime'
+--
+-- * 'cosDetails'
+clusterOperationStatus
+    :: ClusterOperationStatus
+clusterOperationStatus =
+  ClusterOperationStatus'
+    { _cosState = Nothing
+    , _cosInnerState = Nothing
+    , _cosStateStartTime = Nothing
+    , _cosDetails = Nothing
+    }
+
+
+-- | Output only. A message containing the operation state.
+cosState :: Lens' ClusterOperationStatus (Maybe ClusterOperationStatusState)
+cosState = lens _cosState (\ s a -> s{_cosState = a})
+
+-- | Output only. A message containing the detailed operation state.
+cosInnerState :: Lens' ClusterOperationStatus (Maybe Text)
+cosInnerState
+  = lens _cosInnerState
+      (\ s a -> s{_cosInnerState = a})
+
+-- | Output only. The time this state was entered.
+cosStateStartTime :: Lens' ClusterOperationStatus (Maybe UTCTime)
+cosStateStartTime
+  = lens _cosStateStartTime
+      (\ s a -> s{_cosStateStartTime = a})
+      . mapping _DateTime
+
+-- | Output only. A message containing any operation metadata details.
+cosDetails :: Lens' ClusterOperationStatus (Maybe Text)
+cosDetails
+  = lens _cosDetails (\ s a -> s{_cosDetails = a})
+
+instance FromJSON ClusterOperationStatus where
+        parseJSON
+          = withObject "ClusterOperationStatus"
+              (\ o ->
+                 ClusterOperationStatus' <$>
+                   (o .:? "state") <*> (o .:? "innerState") <*>
+                     (o .:? "stateStartTime")
+                     <*> (o .:? "details"))
+
+instance ToJSON ClusterOperationStatus where
+        toJSON ClusterOperationStatus'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _cosState,
+                  ("innerState" .=) <$> _cosInnerState,
+                  ("stateStartTime" .=) <$> _cosStateStartTime,
+                  ("details" .=) <$> _cosDetails])
+
+--
+-- /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
+
+-- | Optional. A mapping of property names to values, used to configure Spark
+-- SQL\'s SparkConf. Properties that conflict with values set by the Cloud
+-- Dataproc API may be overwritten.
+--
+-- /See:/ 'sparkSQLJobProperties' smart constructor.
+newtype SparkSQLJobProperties =
+  SparkSQLJobProperties'
+    { _ssqljpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SparkSQLJobProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssqljpAddtional'
+sparkSQLJobProperties
+    :: HashMap Text Text -- ^ 'ssqljpAddtional'
+    -> SparkSQLJobProperties
+sparkSQLJobProperties pSsqljpAddtional_ =
+  SparkSQLJobProperties' {_ssqljpAddtional = _Coerce # pSsqljpAddtional_}
+
+
+ssqljpAddtional :: Lens' SparkSQLJobProperties (HashMap Text Text)
+ssqljpAddtional
+  = lens _ssqljpAddtional
+      (\ s a -> s{_ssqljpAddtional = a})
+      . _Coerce
+
+instance FromJSON SparkSQLJobProperties where
+        parseJSON
+          = withObject "SparkSQLJobProperties"
+              (\ o ->
+                 SparkSQLJobProperties' <$> (parseJSONObject o))
+
+instance ToJSON SparkSQLJobProperties where
+        toJSON = toJSON . _ssqljpAddtional
+
+-- | Optional. The labels to associate with this template. These labels will
+-- be propagated to all jobs and clusters created by the workflow
+-- instance.Label keys must contain 1 to 63 characters, and must conform to
+-- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).Label values may be
+-- empty, but, if present, must contain 1 to 63 characters, and must
+-- conform to RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt).No more
+-- than 32 labels can be associated with a template.
+--
+-- /See:/ 'workflowTemplateLabels' smart constructor.
+newtype WorkflowTemplateLabels =
+  WorkflowTemplateLabels'
+    { _wtlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowTemplateLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wtlAddtional'
+workflowTemplateLabels
+    :: HashMap Text Text -- ^ 'wtlAddtional'
+    -> WorkflowTemplateLabels
+workflowTemplateLabels pWtlAddtional_ =
+  WorkflowTemplateLabels' {_wtlAddtional = _Coerce # pWtlAddtional_}
+
+
+wtlAddtional :: Lens' WorkflowTemplateLabels (HashMap Text Text)
+wtlAddtional
+  = lens _wtlAddtional (\ s a -> s{_wtlAddtional = a})
+      . _Coerce
+
+instance FromJSON WorkflowTemplateLabels where
+        parseJSON
+          = withObject "WorkflowTemplateLabels"
+              (\ o ->
+                 WorkflowTemplateLabels' <$> (parseJSONObject o))
+
+instance ToJSON WorkflowTemplateLabels where
+        toJSON = toJSON . _wtlAddtional
+
+-- | Specifies an executable to run on a fully configured node and a timeout
+-- period for executable completion.
+--
+-- /See:/ 'nodeInitializationAction' smart constructor.
+data NodeInitializationAction =
+  NodeInitializationAction'
+    { _niaExecutionTimeout :: !(Maybe GDuration)
+    , _niaExecutableFile   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NodeInitializationAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niaExecutionTimeout'
+--
+-- * 'niaExecutableFile'
+nodeInitializationAction
+    :: NodeInitializationAction
+nodeInitializationAction =
+  NodeInitializationAction'
+    {_niaExecutionTimeout = Nothing, _niaExecutableFile = Nothing}
+
+
+-- | Optional. Amount of time executable has to complete. Default is 10
+-- minutes. Cluster creation fails with an explanatory error message (the
+-- name of the executable that caused the error and the exceeded timeout
+-- period) if the executable is not completed at end of the timeout period.
+niaExecutionTimeout :: Lens' NodeInitializationAction (Maybe Scientific)
+niaExecutionTimeout
+  = lens _niaExecutionTimeout
+      (\ s a -> s{_niaExecutionTimeout = a})
+      . mapping _GDuration
+
+-- | Required. Cloud Storage URI of executable file.
+niaExecutableFile :: Lens' NodeInitializationAction (Maybe Text)
+niaExecutableFile
+  = lens _niaExecutableFile
+      (\ s a -> s{_niaExecutableFile = a})
+
+instance FromJSON NodeInitializationAction where
+        parseJSON
+          = withObject "NodeInitializationAction"
+              (\ o ->
+                 NodeInitializationAction' <$>
+                   (o .:? "executionTimeout") <*>
+                     (o .:? "executableFile"))
+
+instance ToJSON NodeInitializationAction where
+        toJSON NodeInitializationAction'{..}
+          = object
+              (catMaybes
+                 [("executionTimeout" .=) <$> _niaExecutionTimeout,
+                  ("executableFile" .=) <$> _niaExecutableFile])
+
+-- | The YARN metrics.
+--
+-- /See:/ 'clusterMetricsYarnMetrics' smart constructor.
+newtype ClusterMetricsYarnMetrics =
+  ClusterMetricsYarnMetrics'
+    { _cmymAddtional :: HashMap Text (Textual Int64)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterMetricsYarnMetrics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmymAddtional'
+clusterMetricsYarnMetrics
+    :: HashMap Text Int64 -- ^ 'cmymAddtional'
+    -> ClusterMetricsYarnMetrics
+clusterMetricsYarnMetrics pCmymAddtional_ =
+  ClusterMetricsYarnMetrics' {_cmymAddtional = _Coerce # pCmymAddtional_}
+
+
+cmymAddtional :: Lens' ClusterMetricsYarnMetrics (HashMap Text Int64)
+cmymAddtional
+  = lens _cmymAddtional
+      (\ s a -> s{_cmymAddtional = a})
+      . _Coerce
+
+instance FromJSON ClusterMetricsYarnMetrics where
+        parseJSON
+          = withObject "ClusterMetricsYarnMetrics"
+              (\ o ->
+                 ClusterMetricsYarnMetrics' <$> (parseJSONObject o))
+
+instance ToJSON ClusterMetricsYarnMetrics where
+        toJSON = toJSON . _cmymAddtional
+
+-- | Validation based on regular expressions.
+--
+-- /See:/ 'regexValidation' smart constructor.
+newtype RegexValidation =
+  RegexValidation'
+    { _rvRegexes :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegexValidation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rvRegexes'
+regexValidation
+    :: RegexValidation
+regexValidation = RegexValidation' {_rvRegexes = Nothing}
+
+
+-- | Required. RE2 regular expressions used to validate the parameter\'s
+-- value. The value must match the regex in its entirety (substring matches
+-- are not sufficient).
+rvRegexes :: Lens' RegexValidation [Text]
+rvRegexes
+  = lens _rvRegexes (\ s a -> s{_rvRegexes = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON RegexValidation where
+        parseJSON
+          = withObject "RegexValidation"
+              (\ o ->
+                 RegexValidation' <$> (o .:? "regexes" .!= mempty))
+
+instance ToJSON RegexValidation where
+        toJSON RegexValidation'{..}
+          = object (catMaybes [("regexes" .=) <$> _rvRegexes])
+
+-- | Cloud Dataproc job config.
+--
+-- /See:/ 'jobPlacement' smart constructor.
+data JobPlacement =
+  JobPlacement'
+    { _jpClusterUuid :: !(Maybe Text)
+    , _jpClusterName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobPlacement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jpClusterUuid'
+--
+-- * 'jpClusterName'
+jobPlacement
+    :: JobPlacement
+jobPlacement =
+  JobPlacement' {_jpClusterUuid = Nothing, _jpClusterName = Nothing}
+
+
+-- | Output only. A cluster UUID generated by the Cloud Dataproc service when
+-- the job is submitted.
+jpClusterUuid :: Lens' JobPlacement (Maybe Text)
+jpClusterUuid
+  = lens _jpClusterUuid
+      (\ s a -> s{_jpClusterUuid = a})
+
+-- | Required. The name of the cluster where the job will be submitted.
+jpClusterName :: Lens' JobPlacement (Maybe Text)
+jpClusterName
+  = lens _jpClusterName
+      (\ s a -> s{_jpClusterName = a})
+
+instance FromJSON JobPlacement where
+        parseJSON
+          = withObject "JobPlacement"
+              (\ o ->
+                 JobPlacement' <$>
+                   (o .:? "clusterUuid") <*> (o .:? "clusterName"))
+
+instance ToJSON JobPlacement where
+        toJSON JobPlacement'{..}
+          = object
+              (catMaybes
+                 [("clusterUuid" .=) <$> _jpClusterUuid,
+                  ("clusterName" .=) <$> _jpClusterName])
+
+-- | Request message for SetIamPolicy method.
+--
+-- /See:/ 'setIAMPolicyRequest' smart constructor.
+newtype SetIAMPolicyRequest =
+  SetIAMPolicyRequest'
+    { _siprPolicy :: Maybe Policy
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siprPolicy'
+setIAMPolicyRequest
+    :: SetIAMPolicyRequest
+setIAMPolicyRequest = SetIAMPolicyRequest' {_siprPolicy = Nothing}
+
+
+-- | REQUIRED: The complete policy to be applied to the resource. The size of
+-- the policy is limited to a few 10s of KB. An empty policy is a valid
+-- policy but certain Cloud Platform services (such as Projects) might
+-- reject them.
+siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)
+siprPolicy
+  = lens _siprPolicy (\ s a -> s{_siprPolicy = a})
+
+instance FromJSON SetIAMPolicyRequest where
+        parseJSON
+          = withObject "SetIAMPolicyRequest"
+              (\ o -> SetIAMPolicyRequest' <$> (o .:? "policy"))
+
+instance ToJSON SetIAMPolicyRequest where
+        toJSON SetIAMPolicyRequest'{..}
+          = object (catMaybes [("policy" .=) <$> _siprPolicy])
+
+-- | A configurable parameter that replaces one or more fields in the
+-- template. Parameterizable fields: - Labels - File uris - Job properties
+-- - Job arguments - Script variables - Main class (in HadoopJob and
+-- SparkJob) - Zone (in ClusterSelector)
+--
+-- /See:/ 'templateParameter' smart constructor.
+data TemplateParameter =
+  TemplateParameter'
+    { _tpName        :: !(Maybe Text)
+    , _tpValidation  :: !(Maybe ParameterValidation)
+    , _tpDescription :: !(Maybe Text)
+    , _tpFields      :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TemplateParameter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpName'
+--
+-- * 'tpValidation'
+--
+-- * 'tpDescription'
+--
+-- * 'tpFields'
+templateParameter
+    :: TemplateParameter
+templateParameter =
+  TemplateParameter'
+    { _tpName = Nothing
+    , _tpValidation = Nothing
+    , _tpDescription = Nothing
+    , _tpFields = Nothing
+    }
+
+
+-- | Required. Parameter name. The parameter name is used as the key, and
+-- paired with the parameter value, which are passed to the template when
+-- the template is instantiated. The name must contain only capital letters
+-- (A-Z), numbers (0-9), and underscores (_), and must not start with a
+-- number. The maximum length is 40 characters.
+tpName :: Lens' TemplateParameter (Maybe Text)
+tpName = lens _tpName (\ s a -> s{_tpName = a})
+
+-- | Optional. Validation rules to be applied to this parameter\'s value.
+tpValidation :: Lens' TemplateParameter (Maybe ParameterValidation)
+tpValidation
+  = lens _tpValidation (\ s a -> s{_tpValidation = a})
+
+-- | Optional. Brief description of the parameter. Must not exceed 1024
+-- characters.
+tpDescription :: Lens' TemplateParameter (Maybe Text)
+tpDescription
+  = lens _tpDescription
+      (\ s a -> s{_tpDescription = a})
+
+-- | Required. Paths to all fields that the parameter replaces. A field is
+-- allowed to appear in at most one parameter\'s list of field paths.A
+-- field path is similar in syntax to a google.protobuf.FieldMask. For
+-- example, a field path that references the zone field of a workflow
+-- template\'s cluster selector would be specified as
+-- placement.clusterSelector.zone.Also, field paths can reference fields
+-- using the following syntax: Values in maps can be referenced by key:
+-- labels\'key\' placement.clusterSelector.clusterLabels\'key\'
+-- placement.managedCluster.labels\'key\'
+-- placement.clusterSelector.clusterLabels\'key\'
+-- jobs\'step-id\'.labels\'key\' Jobs in the jobs list can be referenced by
+-- step-id: jobs\'step-id\'.hadoopJob.mainJarFileUri
+-- jobs\'step-id\'.hiveJob.queryFileUri
+-- jobs\'step-id\'.pySparkJob.mainPythonFileUri
+-- jobs\'step-id\'.hadoopJob.jarFileUris0
+-- jobs\'step-id\'.hadoopJob.archiveUris0
+-- jobs\'step-id\'.hadoopJob.fileUris0
+-- jobs\'step-id\'.pySparkJob.pythonFileUris0 Items in repeated fields can
+-- be referenced by a zero-based index: jobs\'step-id\'.sparkJob.args0
+-- Other examples: jobs\'step-id\'.hadoopJob.properties\'key\'
+-- jobs\'step-id\'.hadoopJob.args0
+-- jobs\'step-id\'.hiveJob.scriptVariables\'key\'
+-- jobs\'step-id\'.hadoopJob.mainJarFileUri
+-- placement.clusterSelector.zoneIt may not be possible to parameterize
+-- maps and repeated fields in their entirety since only individual map
+-- values and individual items in repeated fields can be referenced. For
+-- example, the following field paths are invalid:
+-- placement.clusterSelector.clusterLabels jobs\'step-id\'.sparkJob.args
+tpFields :: Lens' TemplateParameter [Text]
+tpFields
+  = lens _tpFields (\ s a -> s{_tpFields = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON TemplateParameter where
+        parseJSON
+          = withObject "TemplateParameter"
+              (\ o ->
+                 TemplateParameter' <$>
+                   (o .:? "name") <*> (o .:? "validation") <*>
+                     (o .:? "description")
+                     <*> (o .:? "fields" .!= mempty))
+
+instance ToJSON TemplateParameter where
+        toJSON TemplateParameter'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _tpName,
+                  ("validation" .=) <$> _tpValidation,
+                  ("description" .=) <$> _tpDescription,
+                  ("fields" .=) <$> _tpFields])
+
+-- | Common config settings for resources of Compute Engine cluster
+-- instances, applicable to all instances in the cluster.
+--
+-- /See:/ 'gceClusterConfig' smart constructor.
+data GceClusterConfig =
+  GceClusterConfig'
+    { _gccSubnetworkURI        :: !(Maybe Text)
+    , _gccInternalIPOnly       :: !(Maybe Bool)
+    , _gccNetworkURI           :: !(Maybe Text)
+    , _gccZoneURI              :: !(Maybe Text)
+    , _gccServiceAccount       :: !(Maybe Text)
+    , _gccMetadata             :: !(Maybe GceClusterConfigMetadata)
+    , _gccServiceAccountScopes :: !(Maybe [Text])
+    , _gccTags                 :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GceClusterConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gccSubnetworkURI'
+--
+-- * 'gccInternalIPOnly'
+--
+-- * 'gccNetworkURI'
+--
+-- * 'gccZoneURI'
+--
+-- * 'gccServiceAccount'
+--
+-- * 'gccMetadata'
+--
+-- * 'gccServiceAccountScopes'
+--
+-- * 'gccTags'
+gceClusterConfig
+    :: GceClusterConfig
+gceClusterConfig =
+  GceClusterConfig'
+    { _gccSubnetworkURI = Nothing
+    , _gccInternalIPOnly = Nothing
+    , _gccNetworkURI = Nothing
+    , _gccZoneURI = Nothing
+    , _gccServiceAccount = Nothing
+    , _gccMetadata = Nothing
+    , _gccServiceAccountScopes = Nothing
+    , _gccTags = Nothing
+    }
+
+
+-- | Optional. The Compute Engine subnetwork to be used for machine
+-- communications. Cannot be specified with network_uri.A full URL, partial
+-- URI, or short name are valid. Examples:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/regions\/us-east1\/subnetworks\/sub0
+-- projects\/[project_id]\/regions\/us-east1\/subnetworks\/sub0 sub0
+gccSubnetworkURI :: Lens' GceClusterConfig (Maybe Text)
+gccSubnetworkURI
+  = lens _gccSubnetworkURI
+      (\ s a -> s{_gccSubnetworkURI = a})
+
+-- | Optional. If true, all instances in the cluster will only have internal
+-- IP addresses. By default, clusters are not restricted to internal IP
+-- addresses, and will have ephemeral external IP addresses assigned to
+-- each instance. This internal_ip_only restriction can only be enabled for
+-- subnetwork enabled networks, and all off-cluster dependencies must be
+-- configured to be accessible without external IP addresses.
+gccInternalIPOnly :: Lens' GceClusterConfig (Maybe Bool)
+gccInternalIPOnly
+  = lens _gccInternalIPOnly
+      (\ s a -> s{_gccInternalIPOnly = a})
+
+-- | Optional. The Compute Engine network to be used for machine
+-- communications. Cannot be specified with subnetwork_uri. If neither
+-- network_uri nor subnetwork_uri is specified, the \"default\" network of
+-- the project is used, if it exists. Cannot be a \"Custom Subnet Network\"
+-- (see Using Subnetworks for more information).A full URL, partial URI, or
+-- short name are valid. Examples:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/regions\/global\/default
+-- projects\/[project_id]\/regions\/global\/default default
+gccNetworkURI :: Lens' GceClusterConfig (Maybe Text)
+gccNetworkURI
+  = lens _gccNetworkURI
+      (\ s a -> s{_gccNetworkURI = a})
+
+-- | Optional. The zone where the Compute Engine cluster will be located. On
+-- a create request, it is required in the \"global\" region. If omitted in
+-- a non-global Cloud Dataproc region, the service will pick a zone in the
+-- corresponding Compute Engine region. On a get request, zone will always
+-- be present.A full URL, partial URI, or short name are valid. Examples:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/zones\/[zone]
+-- projects\/[project_id]\/zones\/[zone] us-central1-f
+gccZoneURI :: Lens' GceClusterConfig (Maybe Text)
+gccZoneURI
+  = lens _gccZoneURI (\ s a -> s{_gccZoneURI = a})
+
+-- | Optional. The service account of the instances. Defaults to the default
+-- Compute Engine service account. Custom service accounts need permissions
+-- equivalent to the following IAM roles: roles\/logging.logWriter
+-- roles\/storage.objectAdmin(see
+-- https:\/\/cloud.google.com\/compute\/docs\/access\/service-accounts#custom_service_accounts
+-- for more information). Example:
+-- [account_id]\'[project_id].iam.gserviceaccount.com
+gccServiceAccount :: Lens' GceClusterConfig (Maybe Text)
+gccServiceAccount
+  = lens _gccServiceAccount
+      (\ s a -> s{_gccServiceAccount = a})
+
+-- | The Compute Engine metadata entries to add to all instances (see Project
+-- and instance metadata
+-- (https:\/\/cloud.google.com\/compute\/docs\/storing-retrieving-metadata#project_and_instance_metadata)).
+gccMetadata :: Lens' GceClusterConfig (Maybe GceClusterConfigMetadata)
+gccMetadata
+  = lens _gccMetadata (\ s a -> s{_gccMetadata = a})
+
+-- | Optional. The URIs of service account scopes to be included in Compute
+-- Engine instances. The following base set of scopes is always included:
+-- https:\/\/www.googleapis.com\/auth\/cloud.useraccounts.readonly
+-- https:\/\/www.googleapis.com\/auth\/devstorage.read_write
+-- https:\/\/www.googleapis.com\/auth\/logging.writeIf no scopes are
+-- specified, the following defaults are also provided:
+-- https:\/\/www.googleapis.com\/auth\/bigquery
+-- https:\/\/www.googleapis.com\/auth\/bigtable.admin.table
+-- https:\/\/www.googleapis.com\/auth\/bigtable.data
+-- https:\/\/www.googleapis.com\/auth\/devstorage.full_control
+gccServiceAccountScopes :: Lens' GceClusterConfig [Text]
+gccServiceAccountScopes
+  = lens _gccServiceAccountScopes
+      (\ s a -> s{_gccServiceAccountScopes = a})
+      . _Default
+      . _Coerce
+
+-- | The Compute Engine tags to add to all instances (see Tagging instances).
+gccTags :: Lens' GceClusterConfig [Text]
+gccTags
+  = lens _gccTags (\ s a -> s{_gccTags = a}) . _Default
+      . _Coerce
+
+instance FromJSON GceClusterConfig where
+        parseJSON
+          = withObject "GceClusterConfig"
+              (\ o ->
+                 GceClusterConfig' <$>
+                   (o .:? "subnetworkUri") <*> (o .:? "internalIpOnly")
+                     <*> (o .:? "networkUri")
+                     <*> (o .:? "zoneUri")
+                     <*> (o .:? "serviceAccount")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "serviceAccountScopes" .!= mempty)
+                     <*> (o .:? "tags" .!= mempty))
+
+instance ToJSON GceClusterConfig where
+        toJSON GceClusterConfig'{..}
+          = object
+              (catMaybes
+                 [("subnetworkUri" .=) <$> _gccSubnetworkURI,
+                  ("internalIpOnly" .=) <$> _gccInternalIPOnly,
+                  ("networkUri" .=) <$> _gccNetworkURI,
+                  ("zoneUri" .=) <$> _gccZoneURI,
+                  ("serviceAccount" .=) <$> _gccServiceAccount,
+                  ("metadata" .=) <$> _gccMetadata,
+                  ("serviceAccountScopes" .=) <$>
+                    _gccServiceAccountScopes,
+                  ("tags" .=) <$> _gccTags])
+
+-- | A response to a request to list workflow templates in a project.
+--
+-- /See:/ 'listWorkflowTemplatesResponse' smart constructor.
+data ListWorkflowTemplatesResponse =
+  ListWorkflowTemplatesResponse'
+    { _lwtrNextPageToken :: !(Maybe Text)
+    , _lwtrTemplates     :: !(Maybe [WorkflowTemplate])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListWorkflowTemplatesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lwtrNextPageToken'
+--
+-- * 'lwtrTemplates'
+listWorkflowTemplatesResponse
+    :: ListWorkflowTemplatesResponse
+listWorkflowTemplatesResponse =
+  ListWorkflowTemplatesResponse'
+    {_lwtrNextPageToken = Nothing, _lwtrTemplates = Nothing}
+
+
+-- | Output only. This token is included in the response if there are more
+-- results to fetch. To fetch additional results, provide this value as the
+-- page_token in a subsequent 'ListWorkflowTemplatesRequest'.
+lwtrNextPageToken :: Lens' ListWorkflowTemplatesResponse (Maybe Text)
+lwtrNextPageToken
+  = lens _lwtrNextPageToken
+      (\ s a -> s{_lwtrNextPageToken = a})
+
+-- | Output only. WorkflowTemplates list.
+lwtrTemplates :: Lens' ListWorkflowTemplatesResponse [WorkflowTemplate]
+lwtrTemplates
+  = lens _lwtrTemplates
+      (\ s a -> s{_lwtrTemplates = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListWorkflowTemplatesResponse where
+        parseJSON
+          = withObject "ListWorkflowTemplatesResponse"
+              (\ o ->
+                 ListWorkflowTemplatesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "templates" .!= mempty))
+
+instance ToJSON ListWorkflowTemplatesResponse where
+        toJSON ListWorkflowTemplatesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lwtrNextPageToken,
+                  ("templates" .=) <$> _lwtrTemplates])
+
+-- | The Compute Engine metadata entries to add to all instances (see Project
+-- and instance metadata
+-- (https:\/\/cloud.google.com\/compute\/docs\/storing-retrieving-metadata#project_and_instance_metadata)).
+--
+-- /See:/ 'gceClusterConfigMetadata' smart constructor.
+newtype GceClusterConfigMetadata =
+  GceClusterConfigMetadata'
+    { _gccmAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GceClusterConfigMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gccmAddtional'
+gceClusterConfigMetadata
+    :: HashMap Text Text -- ^ 'gccmAddtional'
+    -> GceClusterConfigMetadata
+gceClusterConfigMetadata pGccmAddtional_ =
+  GceClusterConfigMetadata' {_gccmAddtional = _Coerce # pGccmAddtional_}
+
+
+gccmAddtional :: Lens' GceClusterConfigMetadata (HashMap Text Text)
+gccmAddtional
+  = lens _gccmAddtional
+      (\ s a -> s{_gccmAddtional = a})
+      . _Coerce
+
+instance FromJSON GceClusterConfigMetadata where
+        parseJSON
+          = withObject "GceClusterConfigMetadata"
+              (\ o ->
+                 GceClusterConfigMetadata' <$> (parseJSONObject o))
+
+instance ToJSON GceClusterConfigMetadata where
+        toJSON = toJSON . _gccmAddtional
+
+-- | Optional. A mapping of property names and values, used to configure
+-- Hive. Properties that conflict with values set by the Cloud Dataproc API
+-- may be overwritten. Can include properties set in
+-- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/hive\/conf\/hive-site.xml, and
+-- classes in user code.
+--
+-- /See:/ 'hiveJobProperties' smart constructor.
+newtype HiveJobProperties =
+  HiveJobProperties'
+    { _hAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HiveJobProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hAddtional'
+hiveJobProperties
+    :: HashMap Text Text -- ^ 'hAddtional'
+    -> HiveJobProperties
+hiveJobProperties pHAddtional_ =
+  HiveJobProperties' {_hAddtional = _Coerce # pHAddtional_}
+
+
+hAddtional :: Lens' HiveJobProperties (HashMap Text Text)
+hAddtional
+  = lens _hAddtional (\ s a -> s{_hAddtional = a}) .
+      _Coerce
+
+instance FromJSON HiveJobProperties where
+        parseJSON
+          = withObject "HiveJobProperties"
+              (\ o -> HiveJobProperties' <$> (parseJSONObject o))
+
+instance ToJSON HiveJobProperties where
+        toJSON = toJSON . _hAddtional
+
+-- | Map from parameter names to values that were used for those parameters.
+--
+-- /See:/ 'workflowMetadataParameters' smart constructor.
+newtype WorkflowMetadataParameters =
+  WorkflowMetadataParameters'
+    { _wmpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowMetadataParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wmpAddtional'
+workflowMetadataParameters
+    :: HashMap Text Text -- ^ 'wmpAddtional'
+    -> WorkflowMetadataParameters
+workflowMetadataParameters pWmpAddtional_ =
+  WorkflowMetadataParameters' {_wmpAddtional = _Coerce # pWmpAddtional_}
+
+
+wmpAddtional :: Lens' WorkflowMetadataParameters (HashMap Text Text)
+wmpAddtional
+  = lens _wmpAddtional (\ s a -> s{_wmpAddtional = a})
+      . _Coerce
+
+instance FromJSON WorkflowMetadataParameters where
+        parseJSON
+          = withObject "WorkflowMetadataParameters"
+              (\ o ->
+                 WorkflowMetadataParameters' <$> (parseJSONObject o))
+
+instance ToJSON WorkflowMetadataParameters where
+        toJSON = toJSON . _wmpAddtional
+
+-- | Cluster that is managed by the workflow.
+--
+-- /See:/ 'managedCluster' smart constructor.
+data ManagedCluster =
+  ManagedCluster'
+    { _mcConfig      :: !(Maybe ClusterConfig)
+    , _mcClusterName :: !(Maybe Text)
+    , _mcLabels      :: !(Maybe ManagedClusterLabels)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcConfig'
+--
+-- * 'mcClusterName'
+--
+-- * 'mcLabels'
+managedCluster
+    :: ManagedCluster
+managedCluster =
+  ManagedCluster'
+    {_mcConfig = Nothing, _mcClusterName = Nothing, _mcLabels = Nothing}
+
+
+-- | Required. The cluster configuration.
+mcConfig :: Lens' ManagedCluster (Maybe ClusterConfig)
+mcConfig = lens _mcConfig (\ s a -> s{_mcConfig = a})
+
+-- | Required. The cluster name prefix. A unique cluster name will be formed
+-- by appending a random suffix.The name must contain only lower-case
+-- letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter.
+-- Cannot begin or end with hyphen. Must consist of between 2 and 35
+-- characters.
+mcClusterName :: Lens' ManagedCluster (Maybe Text)
+mcClusterName
+  = lens _mcClusterName
+      (\ s a -> s{_mcClusterName = a})
+
+-- | Optional. The labels to associate with this cluster.Label keys must be
+-- between 1 and 63 characters long, and must conform to the following PCRE
+-- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
+-- and 63 characters long, and must conform to the following PCRE regular
+-- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
+-- associated with a given cluster.
+mcLabels :: Lens' ManagedCluster (Maybe ManagedClusterLabels)
+mcLabels = lens _mcLabels (\ s a -> s{_mcLabels = a})
+
+instance FromJSON ManagedCluster where
+        parseJSON
+          = withObject "ManagedCluster"
+              (\ o ->
+                 ManagedCluster' <$>
+                   (o .:? "config") <*> (o .:? "clusterName") <*>
+                     (o .:? "labels"))
+
+instance ToJSON ManagedCluster where
+        toJSON ManagedCluster'{..}
+          = object
+              (catMaybes
+                 [("config" .=) <$> _mcConfig,
+                  ("clusterName" .=) <$> _mcClusterName,
+                  ("labels" .=) <$> _mcLabels])
+
+-- | Optional. The labels to associate with this cluster. Label keys must
+-- contain 1 to 63 characters, and must conform to RFC 1035
+-- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
+-- but, if present, must contain 1 to 63 characters, and must conform to
+-- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
+-- labels can be associated with a cluster.
+--
+-- /See:/ 'clusterLabels' smart constructor.
+newtype ClusterLabels =
+  ClusterLabels'
+    { _clAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clAddtional'
+clusterLabels
+    :: HashMap Text Text -- ^ 'clAddtional'
+    -> ClusterLabels
+clusterLabels pClAddtional_ =
+  ClusterLabels' {_clAddtional = _Coerce # pClAddtional_}
+
+
+clAddtional :: Lens' ClusterLabels (HashMap Text Text)
+clAddtional
+  = lens _clAddtional (\ s a -> s{_clAddtional = a}) .
+      _Coerce
+
+instance FromJSON ClusterLabels where
+        parseJSON
+          = withObject "ClusterLabels"
+              (\ o -> ClusterLabels' <$> (parseJSONObject o))
+
+instance ToJSON ClusterLabels where
+        toJSON = toJSON . _clAddtional
+
+-- | A Cloud Dataproc job resource.
+--
+-- /See:/ 'job' smart constructor.
+data Job =
+  Job'
+    { _jSparkJob                :: !(Maybe SparkJob)
+    , _jStatus                  :: !(Maybe JobStatus)
+    , _jDriverControlFilesURI   :: !(Maybe Text)
+    , _jHiveJob                 :: !(Maybe HiveJob)
+    , _jReference               :: !(Maybe JobReference)
+    , _jSparkSQLJob             :: !(Maybe SparkSQLJob)
+    , _jHadoopJob               :: !(Maybe HadoopJob)
+    , _jJobUuid                 :: !(Maybe Text)
+    , _jYarnApplications        :: !(Maybe [YarnApplication])
+    , _jLabels                  :: !(Maybe JobLabels)
+    , _jPysparkJob              :: !(Maybe PySparkJob)
+    , _jDriverOutputResourceURI :: !(Maybe Text)
+    , _jScheduling              :: !(Maybe JobScheduling)
+    , _jStatusHistory           :: !(Maybe [JobStatus])
+    , _jPlacement               :: !(Maybe JobPlacement)
+    , _jPigJob                  :: !(Maybe PigJob)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Job' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jSparkJob'
+--
+-- * 'jStatus'
+--
+-- * 'jDriverControlFilesURI'
+--
+-- * 'jHiveJob'
+--
+-- * 'jReference'
+--
+-- * 'jSparkSQLJob'
+--
+-- * 'jHadoopJob'
+--
+-- * 'jJobUuid'
+--
+-- * 'jYarnApplications'
+--
+-- * 'jLabels'
+--
+-- * 'jPysparkJob'
+--
+-- * 'jDriverOutputResourceURI'
+--
+-- * 'jScheduling'
+--
+-- * 'jStatusHistory'
+--
+-- * 'jPlacement'
+--
+-- * 'jPigJob'
+job
+    :: Job
+job =
+  Job'
+    { _jSparkJob = Nothing
+    , _jStatus = Nothing
+    , _jDriverControlFilesURI = Nothing
+    , _jHiveJob = Nothing
+    , _jReference = Nothing
+    , _jSparkSQLJob = Nothing
+    , _jHadoopJob = Nothing
+    , _jJobUuid = Nothing
+    , _jYarnApplications = Nothing
+    , _jLabels = Nothing
+    , _jPysparkJob = Nothing
+    , _jDriverOutputResourceURI = Nothing
+    , _jScheduling = Nothing
+    , _jStatusHistory = Nothing
+    , _jPlacement = Nothing
+    , _jPigJob = Nothing
+    }
+
+
+-- | Job is a Spark job.
+jSparkJob :: Lens' Job (Maybe SparkJob)
+jSparkJob
+  = lens _jSparkJob (\ s a -> s{_jSparkJob = a})
+
+-- | Output only. The job status. Additional application-specific status
+-- information may be contained in the 'type_job' and 'yarn_applications'
+-- fields.
+jStatus :: Lens' Job (Maybe JobStatus)
+jStatus = lens _jStatus (\ s a -> s{_jStatus = a})
+
+-- | Output only. If present, the location of miscellaneous control files
+-- which may be used as part of job setup and handling. If not present,
+-- control files may be placed in the same location as driver_output_uri.
+jDriverControlFilesURI :: Lens' Job (Maybe Text)
+jDriverControlFilesURI
+  = lens _jDriverControlFilesURI
+      (\ s a -> s{_jDriverControlFilesURI = a})
+
+-- | Job is a Hive job.
+jHiveJob :: Lens' Job (Maybe HiveJob)
+jHiveJob = lens _jHiveJob (\ s a -> s{_jHiveJob = a})
+
+-- | Optional. The fully qualified reference to the job, which can be used to
+-- obtain the equivalent REST path of the job resource. If this property is
+-- not specified when a job is created, the server generates a 'job_id'.
+jReference :: Lens' Job (Maybe JobReference)
+jReference
+  = lens _jReference (\ s a -> s{_jReference = a})
+
+-- | Job is a SparkSql job.
+jSparkSQLJob :: Lens' Job (Maybe SparkSQLJob)
+jSparkSQLJob
+  = lens _jSparkSQLJob (\ s a -> s{_jSparkSQLJob = a})
+
+-- | Job is a Hadoop job.
+jHadoopJob :: Lens' Job (Maybe HadoopJob)
+jHadoopJob
+  = lens _jHadoopJob (\ s a -> s{_jHadoopJob = a})
+
+-- | Output only. A UUID that uniquely identifies a job within the project
+-- over time. This is in contrast to a user-settable reference.job_id that
+-- may be reused over time.
+jJobUuid :: Lens' Job (Maybe Text)
+jJobUuid = lens _jJobUuid (\ s a -> s{_jJobUuid = a})
+
+-- | Output only. The collection of YARN applications spun up by this
+-- job.Beta Feature: This report is available for testing purposes only. It
+-- may be changed before final release.
+jYarnApplications :: Lens' Job [YarnApplication]
+jYarnApplications
+  = lens _jYarnApplications
+      (\ s a -> s{_jYarnApplications = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. The labels to associate with this job. Label keys must contain
+-- 1 to 63 characters, and must conform to RFC 1035
+-- (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). Label values may be empty,
+-- but, if present, must contain 1 to 63 characters, and must conform to
+-- RFC 1035 (https:\/\/www.ietf.org\/rfc\/rfc1035.txt). No more than 32
+-- labels can be associated with a job.
+jLabels :: Lens' Job (Maybe JobLabels)
+jLabels = lens _jLabels (\ s a -> s{_jLabels = a})
+
+-- | Job is a Pyspark job.
+jPysparkJob :: Lens' Job (Maybe PySparkJob)
+jPysparkJob
+  = lens _jPysparkJob (\ s a -> s{_jPysparkJob = a})
+
+-- | Output only. A URI pointing to the location of the stdout of the job\'s
+-- driver program.
+jDriverOutputResourceURI :: Lens' Job (Maybe Text)
+jDriverOutputResourceURI
+  = lens _jDriverOutputResourceURI
+      (\ s a -> s{_jDriverOutputResourceURI = a})
+
+-- | Optional. Job scheduling configuration.
+jScheduling :: Lens' Job (Maybe JobScheduling)
+jScheduling
+  = lens _jScheduling (\ s a -> s{_jScheduling = a})
+
+-- | Output only. The previous job status.
+jStatusHistory :: Lens' Job [JobStatus]
+jStatusHistory
+  = lens _jStatusHistory
+      (\ s a -> s{_jStatusHistory = a})
+      . _Default
+      . _Coerce
+
+-- | Required. Job information, including how, when, and where to run the
+-- job.
+jPlacement :: Lens' Job (Maybe JobPlacement)
+jPlacement
+  = lens _jPlacement (\ s a -> s{_jPlacement = a})
+
+-- | Job is a Pig job.
+jPigJob :: Lens' Job (Maybe PigJob)
+jPigJob = lens _jPigJob (\ s a -> s{_jPigJob = a})
+
+instance FromJSON Job where
+        parseJSON
+          = withObject "Job"
+              (\ o ->
+                 Job' <$>
+                   (o .:? "sparkJob") <*> (o .:? "status") <*>
+                     (o .:? "driverControlFilesUri")
+                     <*> (o .:? "hiveJob")
+                     <*> (o .:? "reference")
+                     <*> (o .:? "sparkSqlJob")
+                     <*> (o .:? "hadoopJob")
+                     <*> (o .:? "jobUuid")
+                     <*> (o .:? "yarnApplications" .!= mempty)
+                     <*> (o .:? "labels")
+                     <*> (o .:? "pysparkJob")
+                     <*> (o .:? "driverOutputResourceUri")
+                     <*> (o .:? "scheduling")
+                     <*> (o .:? "statusHistory" .!= mempty)
+                     <*> (o .:? "placement")
+                     <*> (o .:? "pigJob"))
+
+instance ToJSON Job where
+        toJSON Job'{..}
+          = object
+              (catMaybes
+                 [("sparkJob" .=) <$> _jSparkJob,
+                  ("status" .=) <$> _jStatus,
+                  ("driverControlFilesUri" .=) <$>
+                    _jDriverControlFilesURI,
+                  ("hiveJob" .=) <$> _jHiveJob,
+                  ("reference" .=) <$> _jReference,
+                  ("sparkSqlJob" .=) <$> _jSparkSQLJob,
+                  ("hadoopJob" .=) <$> _jHadoopJob,
+                  ("jobUuid" .=) <$> _jJobUuid,
+                  ("yarnApplications" .=) <$> _jYarnApplications,
+                  ("labels" .=) <$> _jLabels,
+                  ("pysparkJob" .=) <$> _jPysparkJob,
+                  ("driverOutputResourceUri" .=) <$>
+                    _jDriverOutputResourceURI,
+                  ("scheduling" .=) <$> _jScheduling,
+                  ("statusHistory" .=) <$> _jStatusHistory,
+                  ("placement" .=) <$> _jPlacement,
+                  ("pigJob" .=) <$> _jPigJob])
+
+-- | A request to collect cluster diagnostic information.
+--
+-- /See:/ 'diagnoseClusterRequest' smart constructor.
+data DiagnoseClusterRequest =
+  DiagnoseClusterRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DiagnoseClusterRequest' with the minimum fields required to make a request.
+--
+diagnoseClusterRequest
+    :: DiagnoseClusterRequest
+diagnoseClusterRequest = DiagnoseClusterRequest'
+
+
+instance FromJSON DiagnoseClusterRequest where
+        parseJSON
+          = withObject "DiagnoseClusterRequest"
+              (\ o -> pure DiagnoseClusterRequest')
+
+instance ToJSON DiagnoseClusterRequest where
+        toJSON = const emptyObject
+
+-- | A Cloud Dataproc job for running Apache Hadoop MapReduce
+-- (https:\/\/hadoop.apache.org\/docs\/current\/hadoop-mapreduce-client\/hadoop-mapreduce-client-core\/MapReduceTutorial.html)
+-- jobs on Apache Hadoop YARN
+-- (https:\/\/hadoop.apache.org\/docs\/r2.7.1\/hadoop-yarn\/hadoop-yarn-site\/YARN.html).
+--
+-- /See:/ 'hadoopJob' smart constructor.
+data HadoopJob =
+  HadoopJob'
+    { _hArgs           :: !(Maybe [Text])
+    , _hMainJarFileURI :: !(Maybe Text)
+    , _hJarFileURIs    :: !(Maybe [Text])
+    , _hFileURIs       :: !(Maybe [Text])
+    , _hArchiveURIs    :: !(Maybe [Text])
+    , _hMainClass      :: !(Maybe Text)
+    , _hLoggingConfig  :: !(Maybe LoggingConfig)
+    , _hProperties     :: !(Maybe HadoopJobProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'HadoopJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hArgs'
+--
+-- * 'hMainJarFileURI'
+--
+-- * 'hJarFileURIs'
+--
+-- * 'hFileURIs'
+--
+-- * 'hArchiveURIs'
+--
+-- * 'hMainClass'
+--
+-- * 'hLoggingConfig'
+--
+-- * 'hProperties'
+hadoopJob
+    :: HadoopJob
+hadoopJob =
+  HadoopJob'
+    { _hArgs = Nothing
+    , _hMainJarFileURI = Nothing
+    , _hJarFileURIs = Nothing
+    , _hFileURIs = Nothing
+    , _hArchiveURIs = Nothing
+    , _hMainClass = Nothing
+    , _hLoggingConfig = Nothing
+    , _hProperties = Nothing
+    }
+
+
+-- | Optional. The arguments to pass to the driver. Do not include arguments,
+-- such as -libjars or -Dfoo=bar, that can be set as job properties, since
+-- a collision may occur that causes an incorrect job submission.
+hArgs :: Lens' HadoopJob [Text]
+hArgs
+  = lens _hArgs (\ s a -> s{_hArgs = a}) . _Default .
+      _Coerce
+
+-- | The HCFS URI of the jar file containing the main class. Examples:
+-- \'gs:\/\/foo-bucket\/analytics-binaries\/extract-useful-metrics-mr.jar\'
+-- \'hdfs:\/tmp\/test-samples\/custom-wordcount.jar\'
+-- \'file:\/\/\/home\/usr\/lib\/hadoop-mapreduce\/hadoop-mapreduce-examples.jar\'
+hMainJarFileURI :: Lens' HadoopJob (Maybe Text)
+hMainJarFileURI
+  = lens _hMainJarFileURI
+      (\ s a -> s{_hMainJarFileURI = a})
+
+-- | Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver
+-- and tasks.
+hJarFileURIs :: Lens' HadoopJob [Text]
+hJarFileURIs
+  = lens _hJarFileURIs (\ s a -> s{_hJarFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied
+-- to the working directory of Hadoop drivers and distributed tasks. Useful
+-- for naively parallel tasks.
+hFileURIs :: Lens' HadoopJob [Text]
+hFileURIs
+  = lens _hFileURIs (\ s a -> s{_hFileURIs = a}) .
+      _Default
+      . _Coerce
+
+-- | Optional. HCFS URIs of archives to be extracted in the working directory
+-- of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz,
+-- .tgz, or .zip.
+hArchiveURIs :: Lens' HadoopJob [Text]
+hArchiveURIs
+  = lens _hArchiveURIs (\ s a -> s{_hArchiveURIs = a})
+      . _Default
+      . _Coerce
+
+-- | The name of the driver\'s main class. The jar file containing the class
+-- must be in the default CLASSPATH or specified in jar_file_uris.
+hMainClass :: Lens' HadoopJob (Maybe Text)
+hMainClass
+  = lens _hMainClass (\ s a -> s{_hMainClass = a})
+
+-- | Optional. The runtime log config for job execution.
+hLoggingConfig :: Lens' HadoopJob (Maybe LoggingConfig)
+hLoggingConfig
+  = lens _hLoggingConfig
+      (\ s a -> s{_hLoggingConfig = a})
+
+-- | Optional. A mapping of property names to values, used to configure
+-- Hadoop. Properties that conflict with values set by the Cloud Dataproc
+-- API may be overwritten. Can include properties set in
+-- \/etc\/hadoop\/conf\/*-site and classes in user code.
+hProperties :: Lens' HadoopJob (Maybe HadoopJobProperties)
+hProperties
+  = lens _hProperties (\ s a -> s{_hProperties = a})
+
+instance FromJSON HadoopJob where
+        parseJSON
+          = withObject "HadoopJob"
+              (\ o ->
+                 HadoopJob' <$>
+                   (o .:? "args" .!= mempty) <*>
+                     (o .:? "mainJarFileUri")
+                     <*> (o .:? "jarFileUris" .!= mempty)
+                     <*> (o .:? "fileUris" .!= mempty)
+                     <*> (o .:? "archiveUris" .!= mempty)
+                     <*> (o .:? "mainClass")
+                     <*> (o .:? "loggingConfig")
+                     <*> (o .:? "properties"))
+
+instance ToJSON HadoopJob where
+        toJSON HadoopJob'{..}
+          = object
+              (catMaybes
+                 [("args" .=) <$> _hArgs,
+                  ("mainJarFileUri" .=) <$> _hMainJarFileURI,
+                  ("jarFileUris" .=) <$> _hJarFileURIs,
+                  ("fileUris" .=) <$> _hFileURIs,
+                  ("archiveUris" .=) <$> _hArchiveURIs,
+                  ("mainClass" .=) <$> _hMainClass,
+                  ("loggingConfig" .=) <$> _hLoggingConfig,
+                  ("properties" .=) <$> _hProperties])
+
+-- | Optional. Map from parameter names to values that should be used for
+-- those parameters. Values may not exceed 100 characters.
+--
+-- /See:/ 'instantiateWorkflowTemplateRequestParameters' smart constructor.
+newtype InstantiateWorkflowTemplateRequestParameters =
+  InstantiateWorkflowTemplateRequestParameters'
+    { _iwtrpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstantiateWorkflowTemplateRequestParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iwtrpAddtional'
+instantiateWorkflowTemplateRequestParameters
+    :: HashMap Text Text -- ^ 'iwtrpAddtional'
+    -> InstantiateWorkflowTemplateRequestParameters
+instantiateWorkflowTemplateRequestParameters pIwtrpAddtional_ =
+  InstantiateWorkflowTemplateRequestParameters'
+    {_iwtrpAddtional = _Coerce # pIwtrpAddtional_}
+
+
+iwtrpAddtional :: Lens' InstantiateWorkflowTemplateRequestParameters (HashMap Text Text)
+iwtrpAddtional
+  = lens _iwtrpAddtional
+      (\ s a -> s{_iwtrpAddtional = a})
+      . _Coerce
+
+instance FromJSON
+           InstantiateWorkflowTemplateRequestParameters
+         where
+        parseJSON
+          = withObject
+              "InstantiateWorkflowTemplateRequestParameters"
+              (\ o ->
+                 InstantiateWorkflowTemplateRequestParameters' <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+           InstantiateWorkflowTemplateRequestParameters
+         where
+        toJSON = toJSON . _iwtrpAddtional
+
+-- | Metadata describing the operation.
+--
+-- /See:/ 'clusterOperationMetadata' smart constructor.
+data ClusterOperationMetadata =
+  ClusterOperationMetadata'
+    { _comStatus        :: !(Maybe ClusterOperationStatus)
+    , _comClusterUuid   :: !(Maybe Text)
+    , _comWarnings      :: !(Maybe [Text])
+    , _comClusterName   :: !(Maybe Text)
+    , _comLabels        :: !(Maybe ClusterOperationMetadataLabels)
+    , _comOperationType :: !(Maybe Text)
+    , _comStatusHistory :: !(Maybe [ClusterOperationStatus])
+    , _comDescription   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterOperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'comStatus'
+--
+-- * 'comClusterUuid'
+--
+-- * 'comWarnings'
+--
+-- * 'comClusterName'
+--
+-- * 'comLabels'
+--
+-- * 'comOperationType'
+--
+-- * 'comStatusHistory'
+--
+-- * 'comDescription'
+clusterOperationMetadata
+    :: ClusterOperationMetadata
+clusterOperationMetadata =
+  ClusterOperationMetadata'
+    { _comStatus = Nothing
+    , _comClusterUuid = Nothing
+    , _comWarnings = Nothing
+    , _comClusterName = Nothing
+    , _comLabels = Nothing
+    , _comOperationType = Nothing
+    , _comStatusHistory = Nothing
+    , _comDescription = Nothing
+    }
+
+
+-- | Output only. Current operation status.
+comStatus :: Lens' ClusterOperationMetadata (Maybe ClusterOperationStatus)
+comStatus
+  = lens _comStatus (\ s a -> s{_comStatus = a})
+
+-- | Output only. Cluster UUID for the operation.
+comClusterUuid :: Lens' ClusterOperationMetadata (Maybe Text)
+comClusterUuid
+  = lens _comClusterUuid
+      (\ s a -> s{_comClusterUuid = a})
+
+-- | Output only. Errors encountered during operation execution.
+comWarnings :: Lens' ClusterOperationMetadata [Text]
+comWarnings
+  = lens _comWarnings (\ s a -> s{_comWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | Output only. Name of the cluster for the operation.
+comClusterName :: Lens' ClusterOperationMetadata (Maybe Text)
+comClusterName
+  = lens _comClusterName
+      (\ s a -> s{_comClusterName = a})
+
+-- | Output only. Labels associated with the operation
+comLabels :: Lens' ClusterOperationMetadata (Maybe ClusterOperationMetadataLabels)
+comLabels
+  = lens _comLabels (\ s a -> s{_comLabels = a})
+
+-- | Output only. The operation type.
+comOperationType :: Lens' ClusterOperationMetadata (Maybe Text)
+comOperationType
+  = lens _comOperationType
+      (\ s a -> s{_comOperationType = a})
+
+-- | Output only. The previous operation status.
+comStatusHistory :: Lens' ClusterOperationMetadata [ClusterOperationStatus]
+comStatusHistory
+  = lens _comStatusHistory
+      (\ s a -> s{_comStatusHistory = a})
+      . _Default
+      . _Coerce
+
+-- | Output only. Short description of operation.
+comDescription :: Lens' ClusterOperationMetadata (Maybe Text)
+comDescription
+  = lens _comDescription
+      (\ s a -> s{_comDescription = a})
+
+instance FromJSON ClusterOperationMetadata where
+        parseJSON
+          = withObject "ClusterOperationMetadata"
+              (\ o ->
+                 ClusterOperationMetadata' <$>
+                   (o .:? "status") <*> (o .:? "clusterUuid") <*>
+                     (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "clusterName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "statusHistory" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON ClusterOperationMetadata where
+        toJSON ClusterOperationMetadata'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _comStatus,
+                  ("clusterUuid" .=) <$> _comClusterUuid,
+                  ("warnings" .=) <$> _comWarnings,
+                  ("clusterName" .=) <$> _comClusterName,
+                  ("labels" .=) <$> _comLabels,
+                  ("operationType" .=) <$> _comOperationType,
+                  ("statusHistory" .=) <$> _comStatusHistory,
+                  ("description" .=) <$> _comDescription])
+
+-- | Request message for TestIamPermissions method.
+--
+-- /See:/ 'testIAMPermissionsRequest' smart constructor.
+newtype TestIAMPermissionsRequest =
+  TestIAMPermissionsRequest'
+    { _tiprPermissions :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TestIAMPermissionsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiprPermissions'
+testIAMPermissionsRequest
+    :: TestIAMPermissionsRequest
+testIAMPermissionsRequest =
+  TestIAMPermissionsRequest' {_tiprPermissions = Nothing}
+
+
+-- | The set of permissions to check for the resource. Permissions with
+-- wildcards (such as \'*\' or \'storage.*\') are not allowed. For more
+-- information see IAM Overview
+-- (https:\/\/cloud.google.com\/iam\/docs\/overview#permissions).
+tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]
+tiprPermissions
+  = lens _tiprPermissions
+      (\ s a -> s{_tiprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsRequest where
+        parseJSON
+          = withObject "TestIAMPermissionsRequest"
+              (\ o ->
+                 TestIAMPermissionsRequest' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsRequest where
+        toJSON TestIAMPermissionsRequest'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tiprPermissions])
+
+-- | A Cloud Dataproc job for running Apache Spark SQL
+-- (http:\/\/spark.apache.org\/sql\/) queries.
+--
+-- /See:/ 'sparkSQLJob' smart constructor.
+data SparkSQLJob =
+  SparkSQLJob'
+    { _ssqljQueryFileURI    :: !(Maybe Text)
+    , _ssqljJarFileURIs     :: !(Maybe [Text])
+    , _ssqljScriptVariables :: !(Maybe SparkSQLJobScriptVariables)
+    , _ssqljQueryList       :: !(Maybe QueryList)
+    , _ssqljLoggingConfig   :: !(Maybe LoggingConfig)
+    , _ssqljProperties      :: !(Maybe SparkSQLJobProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SparkSQLJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssqljQueryFileURI'
+--
+-- * 'ssqljJarFileURIs'
+--
+-- * 'ssqljScriptVariables'
+--
+-- * 'ssqljQueryList'
+--
+-- * 'ssqljLoggingConfig'
+--
+-- * 'ssqljProperties'
+sparkSQLJob
+    :: SparkSQLJob
+sparkSQLJob =
+  SparkSQLJob'
+    { _ssqljQueryFileURI = Nothing
+    , _ssqljJarFileURIs = Nothing
+    , _ssqljScriptVariables = Nothing
+    , _ssqljQueryList = Nothing
+    , _ssqljLoggingConfig = Nothing
+    , _ssqljProperties = Nothing
+    }
+
+
+-- | The HCFS URI of the script that contains SQL queries.
+ssqljQueryFileURI :: Lens' SparkSQLJob (Maybe Text)
+ssqljQueryFileURI
+  = lens _ssqljQueryFileURI
+      (\ s a -> s{_ssqljQueryFileURI = a})
+
+-- | Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
+ssqljJarFileURIs :: Lens' SparkSQLJob [Text]
+ssqljJarFileURIs
+  = lens _ssqljJarFileURIs
+      (\ s a -> s{_ssqljJarFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. Mapping of query variable names to values (equivalent to the
+-- Spark SQL command: SET name=\"value\";).
+ssqljScriptVariables :: Lens' SparkSQLJob (Maybe SparkSQLJobScriptVariables)
+ssqljScriptVariables
+  = lens _ssqljScriptVariables
+      (\ s a -> s{_ssqljScriptVariables = a})
+
+-- | A list of queries.
+ssqljQueryList :: Lens' SparkSQLJob (Maybe QueryList)
+ssqljQueryList
+  = lens _ssqljQueryList
+      (\ s a -> s{_ssqljQueryList = a})
+
+-- | Optional. The runtime log config for job execution.
+ssqljLoggingConfig :: Lens' SparkSQLJob (Maybe LoggingConfig)
+ssqljLoggingConfig
+  = lens _ssqljLoggingConfig
+      (\ s a -> s{_ssqljLoggingConfig = a})
+
+-- | Optional. A mapping of property names to values, used to configure Spark
+-- SQL\'s SparkConf. Properties that conflict with values set by the Cloud
+-- Dataproc API may be overwritten.
+ssqljProperties :: Lens' SparkSQLJob (Maybe SparkSQLJobProperties)
+ssqljProperties
+  = lens _ssqljProperties
+      (\ s a -> s{_ssqljProperties = a})
+
+instance FromJSON SparkSQLJob where
+        parseJSON
+          = withObject "SparkSQLJob"
+              (\ o ->
+                 SparkSQLJob' <$>
+                   (o .:? "queryFileUri") <*>
+                     (o .:? "jarFileUris" .!= mempty)
+                     <*> (o .:? "scriptVariables")
+                     <*> (o .:? "queryList")
+                     <*> (o .:? "loggingConfig")
+                     <*> (o .:? "properties"))
+
+instance ToJSON SparkSQLJob where
+        toJSON SparkSQLJob'{..}
+          = object
+              (catMaybes
+                 [("queryFileUri" .=) <$> _ssqljQueryFileURI,
+                  ("jarFileUris" .=) <$> _ssqljJarFileURIs,
+                  ("scriptVariables" .=) <$> _ssqljScriptVariables,
+                  ("queryList" .=) <$> _ssqljQueryList,
+                  ("loggingConfig" .=) <$> _ssqljLoggingConfig,
+                  ("properties" .=) <$> _ssqljProperties])
+
+-- | Specifies the selection and config of software inside the cluster.
+--
+-- /See:/ 'softwareConfig' smart constructor.
+data SoftwareConfig =
+  SoftwareConfig'
+    { _scOptionalComponents :: !(Maybe [Text])
+    , _scImageVersion       :: !(Maybe Text)
+    , _scProperties         :: !(Maybe SoftwareConfigProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SoftwareConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scOptionalComponents'
+--
+-- * 'scImageVersion'
+--
+-- * 'scProperties'
+softwareConfig
+    :: SoftwareConfig
+softwareConfig =
+  SoftwareConfig'
+    { _scOptionalComponents = Nothing
+    , _scImageVersion = Nothing
+    , _scProperties = Nothing
+    }
+
+
+-- | The set of optional components to activate on the cluster.
+scOptionalComponents :: Lens' SoftwareConfig [Text]
+scOptionalComponents
+  = lens _scOptionalComponents
+      (\ s a -> s{_scOptionalComponents = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. The version of software inside the cluster. It must be one of
+-- the supported Cloud Dataproc Versions, such as \"1.2\" (including a
+-- subminor version, such as \"1.2.29\"), or the \"preview\" version. If
+-- unspecified, it defaults to the latest Debian version.
+scImageVersion :: Lens' SoftwareConfig (Maybe Text)
+scImageVersion
+  = lens _scImageVersion
+      (\ s a -> s{_scImageVersion = a})
+
+-- | Optional. The properties to set on daemon config files.Property keys are
+-- specified in prefix:property format, for example core:hadoop.tmp.dir.
+-- The following are supported prefixes and their mappings:
+-- capacity-scheduler: capacity-scheduler.xml core: core-site.xml distcp:
+-- distcp-default.xml hdfs: hdfs-site.xml hive: hive-site.xml mapred:
+-- mapred-site.xml pig: pig.properties spark: spark-defaults.conf yarn:
+-- yarn-site.xmlFor more information, see Cluster properties.
+scProperties :: Lens' SoftwareConfig (Maybe SoftwareConfigProperties)
+scProperties
+  = lens _scProperties (\ s a -> s{_scProperties = a})
+
+instance FromJSON SoftwareConfig where
+        parseJSON
+          = withObject "SoftwareConfig"
+              (\ o ->
+                 SoftwareConfig' <$>
+                   (o .:? "optionalComponents" .!= mempty) <*>
+                     (o .:? "imageVersion")
+                     <*> (o .:? "properties"))
+
+instance ToJSON SoftwareConfig where
+        toJSON SoftwareConfig'{..}
+          = object
+              (catMaybes
+                 [("optionalComponents" .=) <$> _scOptionalComponents,
+                  ("imageVersion" .=) <$> _scImageVersion,
+                  ("properties" .=) <$> _scProperties])
+
+-- | A list of jobs in a project.
+--
+-- /See:/ 'listJobsResponse' smart constructor.
+data ListJobsResponse =
+  ListJobsResponse'
+    { _ljrNextPageToken :: !(Maybe Text)
+    , _ljrJobs          :: !(Maybe [Job])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListJobsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ljrNextPageToken'
+--
+-- * 'ljrJobs'
+listJobsResponse
+    :: ListJobsResponse
+listJobsResponse =
+  ListJobsResponse' {_ljrNextPageToken = Nothing, _ljrJobs = Nothing}
+
+
+-- | Optional. This token is included in the response if there are more
+-- results to fetch. To fetch additional results, provide this value as the
+-- page_token in a subsequent 'ListJobsRequest'.
+ljrNextPageToken :: Lens' ListJobsResponse (Maybe Text)
+ljrNextPageToken
+  = lens _ljrNextPageToken
+      (\ s a -> s{_ljrNextPageToken = a})
+
+-- | Output only. Jobs list.
+ljrJobs :: Lens' ListJobsResponse [Job]
+ljrJobs
+  = lens _ljrJobs (\ s a -> s{_ljrJobs = a}) . _Default
+      . _Coerce
+
+instance FromJSON ListJobsResponse where
+        parseJSON
+          = withObject "ListJobsResponse"
+              (\ o ->
+                 ListJobsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "jobs" .!= mempty))
+
+instance ToJSON ListJobsResponse where
+        toJSON ListJobsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ljrNextPageToken,
+                  ("jobs" .=) <$> _ljrJobs])
+
+-- | Specifies the type and number of accelerator cards attached to the
+-- instances of an instance. See GPUs on Compute Engine.
+--
+-- /See:/ 'acceleratorConfig' smart constructor.
+data AcceleratorConfig =
+  AcceleratorConfig'
+    { _acAcceleratorCount   :: !(Maybe (Textual Int32))
+    , _acAcceleratorTypeURI :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AcceleratorConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acAcceleratorCount'
+--
+-- * 'acAcceleratorTypeURI'
+acceleratorConfig
+    :: AcceleratorConfig
+acceleratorConfig =
+  AcceleratorConfig'
+    {_acAcceleratorCount = Nothing, _acAcceleratorTypeURI = Nothing}
+
+
+-- | The number of the accelerator cards of this type exposed to this
+-- instance.
+acAcceleratorCount :: Lens' AcceleratorConfig (Maybe Int32)
+acAcceleratorCount
+  = lens _acAcceleratorCount
+      (\ s a -> s{_acAcceleratorCount = a})
+      . mapping _Coerce
+
+-- | Full URL, partial URI, or short name of the accelerator type resource to
+-- expose to this instance. See Compute Engine AcceleratorTypes.Examples:
+-- https:\/\/www.googleapis.com\/compute\/beta\/projects\/[project_id]\/zones\/us-east1-a\/acceleratorTypes\/nvidia-tesla-k80
+-- projects\/[project_id]\/zones\/us-east1-a\/acceleratorTypes\/nvidia-tesla-k80
+-- nvidia-tesla-k80Auto Zone Exception: If you are using the Cloud Dataproc
+-- Auto Zone Placement feature, you must use the short name of the
+-- accelerator type resource, for example, nvidia-tesla-k80.
+acAcceleratorTypeURI :: Lens' AcceleratorConfig (Maybe Text)
+acAcceleratorTypeURI
+  = lens _acAcceleratorTypeURI
+      (\ s a -> s{_acAcceleratorTypeURI = a})
+
+instance FromJSON AcceleratorConfig where
+        parseJSON
+          = withObject "AcceleratorConfig"
+              (\ o ->
+                 AcceleratorConfig' <$>
+                   (o .:? "acceleratorCount") <*>
+                     (o .:? "acceleratorTypeUri"))
+
+instance ToJSON AcceleratorConfig where
+        toJSON AcceleratorConfig'{..}
+          = object
+              (catMaybes
+                 [("acceleratorCount" .=) <$> _acAcceleratorCount,
+                  ("acceleratorTypeUri" .=) <$> _acAcceleratorTypeURI])
+
+-- | Optional. A mapping of property names to values, used to configure
+-- Spark. Properties that conflict with values set by the Cloud Dataproc
+-- API may be overwritten. Can include properties set in
+-- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
+--
+-- /See:/ 'sparkJobProperties' smart constructor.
+newtype SparkJobProperties =
+  SparkJobProperties'
+    { _sjpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SparkJobProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sjpAddtional'
+sparkJobProperties
+    :: HashMap Text Text -- ^ 'sjpAddtional'
+    -> SparkJobProperties
+sparkJobProperties pSjpAddtional_ =
+  SparkJobProperties' {_sjpAddtional = _Coerce # pSjpAddtional_}
+
+
+sjpAddtional :: Lens' SparkJobProperties (HashMap Text Text)
+sjpAddtional
+  = lens _sjpAddtional (\ s a -> s{_sjpAddtional = a})
+      . _Coerce
+
+instance FromJSON SparkJobProperties where
+        parseJSON
+          = withObject "SparkJobProperties"
+              (\ o -> SparkJobProperties' <$> (parseJSONObject o))
+
+instance ToJSON SparkJobProperties where
+        toJSON = toJSON . _sjpAddtional
+
+-- | Encryption settings for the cluster.
+--
+-- /See:/ 'encryptionConfig' smart constructor.
+newtype EncryptionConfig =
+  EncryptionConfig'
+    { _ecGcePdKmsKeyName :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EncryptionConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ecGcePdKmsKeyName'
+encryptionConfig
+    :: EncryptionConfig
+encryptionConfig = EncryptionConfig' {_ecGcePdKmsKeyName = Nothing}
+
+
+-- | Optional. The Cloud KMS key name to use for PD disk encryption for all
+-- instances in the cluster.
+ecGcePdKmsKeyName :: Lens' EncryptionConfig (Maybe Text)
+ecGcePdKmsKeyName
+  = lens _ecGcePdKmsKeyName
+      (\ s a -> s{_ecGcePdKmsKeyName = a})
+
+instance FromJSON EncryptionConfig where
+        parseJSON
+          = withObject "EncryptionConfig"
+              (\ o ->
+                 EncryptionConfig' <$> (o .:? "gcePdKmsKeyName"))
+
+instance ToJSON EncryptionConfig where
+        toJSON EncryptionConfig'{..}
+          = object
+              (catMaybes
+                 [("gcePdKmsKeyName" .=) <$> _ecGcePdKmsKeyName])
+
+-- | A Cloud Dataproc job for running Apache PySpark
+-- (https:\/\/spark.apache.org\/docs\/0.9.0\/python-programming-guide.html)
+-- applications on YARN.
+--
+-- /See:/ 'pySparkJob' smart constructor.
+data PySparkJob =
+  PySparkJob'
+    { _psjPythonFileURIs    :: !(Maybe [Text])
+    , _psjMainPythonFileURI :: !(Maybe Text)
+    , _psjArgs              :: !(Maybe [Text])
+    , _psjJarFileURIs       :: !(Maybe [Text])
+    , _psjFileURIs          :: !(Maybe [Text])
+    , _psjArchiveURIs       :: !(Maybe [Text])
+    , _psjLoggingConfig     :: !(Maybe LoggingConfig)
+    , _psjProperties        :: !(Maybe PySparkJobProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PySparkJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psjPythonFileURIs'
+--
+-- * 'psjMainPythonFileURI'
+--
+-- * 'psjArgs'
+--
+-- * 'psjJarFileURIs'
+--
+-- * 'psjFileURIs'
+--
+-- * 'psjArchiveURIs'
+--
+-- * 'psjLoggingConfig'
+--
+-- * 'psjProperties'
+pySparkJob
+    :: PySparkJob
+pySparkJob =
+  PySparkJob'
+    { _psjPythonFileURIs = Nothing
+    , _psjMainPythonFileURI = Nothing
+    , _psjArgs = Nothing
+    , _psjJarFileURIs = Nothing
+    , _psjFileURIs = Nothing
+    , _psjArchiveURIs = Nothing
+    , _psjLoggingConfig = Nothing
+    , _psjProperties = Nothing
+    }
+
+
+-- | Optional. HCFS file URIs of Python files to pass to the PySpark
+-- framework. Supported file types: .py, .egg, and .zip.
+psjPythonFileURIs :: Lens' PySparkJob [Text]
+psjPythonFileURIs
+  = lens _psjPythonFileURIs
+      (\ s a -> s{_psjPythonFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Required. The HCFS URI of the main Python file to use as the driver.
+-- Must be a .py file.
+psjMainPythonFileURI :: Lens' PySparkJob (Maybe Text)
+psjMainPythonFileURI
+  = lens _psjMainPythonFileURI
+      (\ s a -> s{_psjMainPythonFileURI = a})
+
+-- | Optional. The arguments to pass to the driver. Do not include arguments,
+-- such as --conf, that can be set as job properties, since a collision may
+-- occur that causes an incorrect job submission.
+psjArgs :: Lens' PySparkJob [Text]
+psjArgs
+  = lens _psjArgs (\ s a -> s{_psjArgs = a}) . _Default
+      . _Coerce
+
+-- | Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python
+-- driver and tasks.
+psjJarFileURIs :: Lens' PySparkJob [Text]
+psjJarFileURIs
+  = lens _psjJarFileURIs
+      (\ s a -> s{_psjJarFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. HCFS URIs of files to be copied to the working directory of
+-- Python drivers and distributed tasks. Useful for naively parallel tasks.
+psjFileURIs :: Lens' PySparkJob [Text]
+psjFileURIs
+  = lens _psjFileURIs (\ s a -> s{_psjFileURIs = a}) .
+      _Default
+      . _Coerce
+
+-- | Optional. HCFS URIs of archives to be extracted in the working directory
+-- of .jar, .tar, .tar.gz, .tgz, and .zip.
+psjArchiveURIs :: Lens' PySparkJob [Text]
+psjArchiveURIs
+  = lens _psjArchiveURIs
+      (\ s a -> s{_psjArchiveURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. The runtime log config for job execution.
+psjLoggingConfig :: Lens' PySparkJob (Maybe LoggingConfig)
+psjLoggingConfig
+  = lens _psjLoggingConfig
+      (\ s a -> s{_psjLoggingConfig = a})
+
+-- | Optional. A mapping of property names to values, used to configure
+-- PySpark. Properties that conflict with values set by the Cloud Dataproc
+-- API may be overwritten. Can include properties set in
+-- \/etc\/spark\/conf\/spark-defaults.conf and classes in user code.
+psjProperties :: Lens' PySparkJob (Maybe PySparkJobProperties)
+psjProperties
+  = lens _psjProperties
+      (\ s a -> s{_psjProperties = a})
+
+instance FromJSON PySparkJob where
+        parseJSON
+          = withObject "PySparkJob"
+              (\ o ->
+                 PySparkJob' <$>
+                   (o .:? "pythonFileUris" .!= mempty) <*>
+                     (o .:? "mainPythonFileUri")
+                     <*> (o .:? "args" .!= mempty)
+                     <*> (o .:? "jarFileUris" .!= mempty)
+                     <*> (o .:? "fileUris" .!= mempty)
+                     <*> (o .:? "archiveUris" .!= mempty)
+                     <*> (o .:? "loggingConfig")
+                     <*> (o .:? "properties"))
+
+instance ToJSON PySparkJob where
+        toJSON PySparkJob'{..}
+          = object
+              (catMaybes
+                 [("pythonFileUris" .=) <$> _psjPythonFileURIs,
+                  ("mainPythonFileUri" .=) <$> _psjMainPythonFileURI,
+                  ("args" .=) <$> _psjArgs,
+                  ("jarFileUris" .=) <$> _psjJarFileURIs,
+                  ("fileUris" .=) <$> _psjFileURIs,
+                  ("archiveUris" .=) <$> _psjArchiveURIs,
+                  ("loggingConfig" .=) <$> _psjLoggingConfig,
+                  ("properties" .=) <$> _psjProperties])
+
+-- | Specifies the resources used to actively manage an instance group.
+--
+-- /See:/ 'managedGroupConfig' smart constructor.
+data ManagedGroupConfig =
+  ManagedGroupConfig'
+    { _mgcInstanceTemplateName     :: !(Maybe Text)
+    , _mgcInstanceGroupManagerName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedGroupConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mgcInstanceTemplateName'
+--
+-- * 'mgcInstanceGroupManagerName'
+managedGroupConfig
+    :: ManagedGroupConfig
+managedGroupConfig =
+  ManagedGroupConfig'
+    {_mgcInstanceTemplateName = Nothing, _mgcInstanceGroupManagerName = Nothing}
+
+
+-- | Output only. The name of the Instance Template used for the Managed
+-- Instance Group.
+mgcInstanceTemplateName :: Lens' ManagedGroupConfig (Maybe Text)
+mgcInstanceTemplateName
+  = lens _mgcInstanceTemplateName
+      (\ s a -> s{_mgcInstanceTemplateName = a})
+
+-- | Output only. The name of the Instance Group Manager for this group.
+mgcInstanceGroupManagerName :: Lens' ManagedGroupConfig (Maybe Text)
+mgcInstanceGroupManagerName
+  = lens _mgcInstanceGroupManagerName
+      (\ s a -> s{_mgcInstanceGroupManagerName = a})
+
+instance FromJSON ManagedGroupConfig where
+        parseJSON
+          = withObject "ManagedGroupConfig"
+              (\ o ->
+                 ManagedGroupConfig' <$>
+                   (o .:? "instanceTemplateName") <*>
+                     (o .:? "instanceGroupManagerName"))
+
+instance ToJSON ManagedGroupConfig where
+        toJSON ManagedGroupConfig'{..}
+          = object
+              (catMaybes
+                 [("instanceTemplateName" .=) <$>
+                    _mgcInstanceTemplateName,
+                  ("instanceGroupManagerName" .=) <$>
+                    _mgcInstanceGroupManagerName])
+
+-- | Response message for TestIamPermissions method.
+--
+-- /See:/ 'testIAMPermissionsResponse' smart constructor.
+newtype TestIAMPermissionsResponse =
+  TestIAMPermissionsResponse'
+    { _tiamprPermissions :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TestIAMPermissionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiamprPermissions'
+testIAMPermissionsResponse
+    :: TestIAMPermissionsResponse
+testIAMPermissionsResponse =
+  TestIAMPermissionsResponse' {_tiamprPermissions = Nothing}
+
+
+-- | A subset of TestPermissionsRequest.permissions that the caller is
+-- allowed.
+tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]
+tiamprPermissions
+  = lens _tiamprPermissions
+      (\ s a -> s{_tiamprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsResponse where
+        parseJSON
+          = withObject "TestIAMPermissionsResponse"
+              (\ o ->
+                 TestIAMPermissionsResponse' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsResponse where
+        toJSON TestIAMPermissionsResponse'{..}
+          = object
+              (catMaybes
+                 [("permissions" .=) <$> _tiamprPermissions])
+
+-- | The list of all clusters in a project.
+--
+-- /See:/ 'listClustersResponse' smart constructor.
+data ListClustersResponse =
+  ListClustersResponse'
+    { _lcrNextPageToken :: !(Maybe Text)
+    , _lcrClusters      :: !(Maybe [Cluster])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcrNextPageToken'
+--
+-- * 'lcrClusters'
+listClustersResponse
+    :: ListClustersResponse
+listClustersResponse =
+  ListClustersResponse' {_lcrNextPageToken = Nothing, _lcrClusters = Nothing}
+
+
+-- | Output only. This token is included in the response if there are more
+-- results to fetch. To fetch additional results, provide this value as the
+-- page_token in a subsequent ListClustersRequest.
+lcrNextPageToken :: Lens' ListClustersResponse (Maybe Text)
+lcrNextPageToken
+  = lens _lcrNextPageToken
+      (\ s a -> s{_lcrNextPageToken = a})
+
+-- | Output only. The clusters in the project.
+lcrClusters :: Lens' ListClustersResponse [Cluster]
+lcrClusters
+  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListClustersResponse where
+        parseJSON
+          = withObject "ListClustersResponse"
+              (\ o ->
+                 ListClustersResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "clusters" .!= mempty))
+
+instance ToJSON ListClustersResponse where
+        toJSON ListClustersResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lcrNextPageToken,
+                  ("clusters" .=) <$> _lcrClusters])
+
+-- | Validation based on a list of allowed values.
+--
+-- /See:/ 'valueValidation' smart constructor.
+newtype ValueValidation =
+  ValueValidation'
+    { _vvValues :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ValueValidation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vvValues'
+valueValidation
+    :: ValueValidation
+valueValidation = ValueValidation' {_vvValues = Nothing}
+
+
+-- | Required. List of allowed values for the parameter.
+vvValues :: Lens' ValueValidation [Text]
+vvValues
+  = lens _vvValues (\ s a -> s{_vvValues = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ValueValidation where
+        parseJSON
+          = withObject "ValueValidation"
+              (\ o ->
+                 ValueValidation' <$> (o .:? "values" .!= mempty))
+
+instance ToJSON ValueValidation where
+        toJSON ValueValidation'{..}
+          = object (catMaybes [("values" .=) <$> _vvValues])
+
+-- | Defines an Identity and Access Management (IAM) policy. It is used to
+-- specify access control policies for Cloud Platform resources.A Policy
+-- consists of a list of bindings. A binding binds a list of members to a
+-- role, where the members can be user accounts, Google groups, Google
+-- domains, and service accounts. A role is a named list of permissions
+-- defined by IAM.JSON Example { \"bindings\": [ { \"role\":
+-- \"roles\/owner\", \"members\": [ \"user:mike\'example.com\",
+-- \"group:admins\'example.com\", \"domain:google.com\",
+-- \"serviceAccount:my-other-app\'appspot.gserviceaccount.com\" ] }, {
+-- \"role\": \"roles\/viewer\", \"members\": [\"user:sean\'example.com\"] }
+-- ] } YAML Example bindings: - members: - user:mike\'example.com -
+-- group:admins\'example.com - domain:google.com -
+-- serviceAccount:my-other-app\'appspot.gserviceaccount.com role:
+-- roles\/owner - members: - user:sean\'example.com role: roles\/viewer For
+-- a description of IAM and its features, see the IAM developer\'s guide
+-- (https:\/\/cloud.google.com\/iam\/docs).
+--
+-- /See:/ 'policy' smart constructor.
+data Policy =
+  Policy'
+    { _pEtag     :: !(Maybe Bytes)
+    , _pVersion  :: !(Maybe (Textual Int32))
+    , _pBindings :: !(Maybe [Binding])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pEtag'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+policy
+    :: Policy
+policy = Policy' {_pEtag = Nothing, _pVersion = Nothing, _pBindings = Nothing}
+
+
+-- | etag is used for optimistic concurrency control as a way to help prevent
+-- simultaneous updates of a policy from overwriting each other. It is
+-- strongly suggested that systems make use of the etag in the
+-- read-modify-write cycle to perform policy updates in order to avoid race
+-- conditions: An etag is returned in the response to getIamPolicy, and
+-- systems are expected to put that etag in the request to setIamPolicy to
+-- ensure that their change will be applied to the same version of the
+-- policy.If no etag is provided in the call to setIamPolicy, then the
+-- existing policy is overwritten blindly.
+pEtag :: Lens' Policy (Maybe ByteString)
+pEtag
+  = lens _pEtag (\ s a -> s{_pEtag = a}) .
+      mapping _Bytes
+
+-- | Deprecated.
+pVersion :: Lens' Policy (Maybe Int32)
+pVersion
+  = lens _pVersion (\ s a -> s{_pVersion = a}) .
+      mapping _Coerce
+
+-- | Associates a list of members to a role. bindings with no members will
+-- result in an error.
+pBindings :: Lens' Policy [Binding]
+pBindings
+  = lens _pBindings (\ s a -> s{_pBindings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "etag") <*> (o .:? "version") <*>
+                     (o .:? "bindings" .!= mempty))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _pEtag,
+                  ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings])
+
+-- | A job executed by the workflow.
+--
+-- /See:/ 'orderedJob' smart constructor.
+data OrderedJob =
+  OrderedJob'
+    { _ojSparkJob            :: !(Maybe SparkJob)
+    , _ojStepId              :: !(Maybe Text)
+    , _ojPrerequisiteStepIds :: !(Maybe [Text])
+    , _ojHiveJob             :: !(Maybe HiveJob)
+    , _ojSparkSQLJob         :: !(Maybe SparkSQLJob)
+    , _ojHadoopJob           :: !(Maybe HadoopJob)
+    , _ojLabels              :: !(Maybe OrderedJobLabels)
+    , _ojPysparkJob          :: !(Maybe PySparkJob)
+    , _ojScheduling          :: !(Maybe JobScheduling)
+    , _ojPigJob              :: !(Maybe PigJob)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrderedJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ojSparkJob'
+--
+-- * 'ojStepId'
+--
+-- * 'ojPrerequisiteStepIds'
+--
+-- * 'ojHiveJob'
+--
+-- * 'ojSparkSQLJob'
+--
+-- * 'ojHadoopJob'
+--
+-- * 'ojLabels'
+--
+-- * 'ojPysparkJob'
+--
+-- * 'ojScheduling'
+--
+-- * 'ojPigJob'
+orderedJob
+    :: OrderedJob
+orderedJob =
+  OrderedJob'
+    { _ojSparkJob = Nothing
+    , _ojStepId = Nothing
+    , _ojPrerequisiteStepIds = Nothing
+    , _ojHiveJob = Nothing
+    , _ojSparkSQLJob = Nothing
+    , _ojHadoopJob = Nothing
+    , _ojLabels = Nothing
+    , _ojPysparkJob = Nothing
+    , _ojScheduling = Nothing
+    , _ojPigJob = Nothing
+    }
+
+
+-- | Job is a Spark job.
+ojSparkJob :: Lens' OrderedJob (Maybe SparkJob)
+ojSparkJob
+  = lens _ojSparkJob (\ s a -> s{_ojSparkJob = a})
+
+-- | Required. The step id. The id must be unique among all jobs within the
+-- template.The step id is used as prefix for job id, as job
+-- goog-dataproc-workflow-step-id label, and in prerequisiteStepIds field
+-- from other steps.The id must contain only letters (a-z, A-Z), numbers
+-- (0-9), underscores (_), and hyphens (-). Cannot begin or end with
+-- underscore or hyphen. Must consist of between 3 and 50 characters.
+ojStepId :: Lens' OrderedJob (Maybe Text)
+ojStepId = lens _ojStepId (\ s a -> s{_ojStepId = a})
+
+-- | Optional. The optional list of prerequisite job step_ids. If not
+-- specified, the job will start at the beginning of workflow.
+ojPrerequisiteStepIds :: Lens' OrderedJob [Text]
+ojPrerequisiteStepIds
+  = lens _ojPrerequisiteStepIds
+      (\ s a -> s{_ojPrerequisiteStepIds = a})
+      . _Default
+      . _Coerce
+
+-- | Job is a Hive job.
+ojHiveJob :: Lens' OrderedJob (Maybe HiveJob)
+ojHiveJob
+  = lens _ojHiveJob (\ s a -> s{_ojHiveJob = a})
+
+-- | Job is a SparkSql job.
+ojSparkSQLJob :: Lens' OrderedJob (Maybe SparkSQLJob)
+ojSparkSQLJob
+  = lens _ojSparkSQLJob
+      (\ s a -> s{_ojSparkSQLJob = a})
+
+-- | Job is a Hadoop job.
+ojHadoopJob :: Lens' OrderedJob (Maybe HadoopJob)
+ojHadoopJob
+  = lens _ojHadoopJob (\ s a -> s{_ojHadoopJob = a})
+
+-- | Optional. The labels to associate with this job.Label keys must be
+-- between 1 and 63 characters long, and must conform to the following
+-- regular expression: \\p{Ll}\\p{Lo}{0,62}Label values must be between 1
+-- and 63 characters long, and must conform to the following regular
+-- expression: \\p{Ll}\\p{Lo}\\p{N}_-{0,63}No more than 32 labels can be
+-- associated with a given job.
+ojLabels :: Lens' OrderedJob (Maybe OrderedJobLabels)
+ojLabels = lens _ojLabels (\ s a -> s{_ojLabels = a})
+
+-- | Job is a Pyspark job.
+ojPysparkJob :: Lens' OrderedJob (Maybe PySparkJob)
+ojPysparkJob
+  = lens _ojPysparkJob (\ s a -> s{_ojPysparkJob = a})
+
+-- | Optional. Job scheduling configuration.
+ojScheduling :: Lens' OrderedJob (Maybe JobScheduling)
+ojScheduling
+  = lens _ojScheduling (\ s a -> s{_ojScheduling = a})
+
+-- | Job is a Pig job.
+ojPigJob :: Lens' OrderedJob (Maybe PigJob)
+ojPigJob = lens _ojPigJob (\ s a -> s{_ojPigJob = a})
+
+instance FromJSON OrderedJob where
+        parseJSON
+          = withObject "OrderedJob"
+              (\ o ->
+                 OrderedJob' <$>
+                   (o .:? "sparkJob") <*> (o .:? "stepId") <*>
+                     (o .:? "prerequisiteStepIds" .!= mempty)
+                     <*> (o .:? "hiveJob")
+                     <*> (o .:? "sparkSqlJob")
+                     <*> (o .:? "hadoopJob")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "pysparkJob")
+                     <*> (o .:? "scheduling")
+                     <*> (o .:? "pigJob"))
+
+instance ToJSON OrderedJob where
+        toJSON OrderedJob'{..}
+          = object
+              (catMaybes
+                 [("sparkJob" .=) <$> _ojSparkJob,
+                  ("stepId" .=) <$> _ojStepId,
+                  ("prerequisiteStepIds" .=) <$>
+                    _ojPrerequisiteStepIds,
+                  ("hiveJob" .=) <$> _ojHiveJob,
+                  ("sparkSqlJob" .=) <$> _ojSparkSQLJob,
+                  ("hadoopJob" .=) <$> _ojHadoopJob,
+                  ("labels" .=) <$> _ojLabels,
+                  ("pysparkJob" .=) <$> _ojPysparkJob,
+                  ("scheduling" .=) <$> _ojScheduling,
+                  ("pigJob" .=) <$> _ojPigJob])
+
+-- | A request to cancel a job.
+--
+-- /See:/ 'cancelJobRequest' smart constructor.
+data CancelJobRequest =
+  CancelJobRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CancelJobRequest' with the minimum fields required to make a request.
+--
+cancelJobRequest
+    :: CancelJobRequest
+cancelJobRequest = CancelJobRequest'
+
+
+instance FromJSON CancelJobRequest where
+        parseJSON
+          = withObject "CancelJobRequest"
+              (\ o -> pure CancelJobRequest')
+
+instance ToJSON CancelJobRequest where
+        toJSON = const emptyObject
+
+-- | A list of queries to run on a cluster.
+--
+-- /See:/ 'queryList' smart constructor.
+newtype QueryList =
+  QueryList'
+    { _qlQueries :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'QueryList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qlQueries'
+queryList
+    :: QueryList
+queryList = QueryList' {_qlQueries = Nothing}
+
+
+-- | Required. The queries to execute. You do not need to terminate a query
+-- with a semicolon. Multiple queries can be specified in one string by
+-- separating each with a semicolon. Here is an example of an Cloud
+-- Dataproc API snippet that uses a QueryList to specify a HiveJob:
+-- \"hiveJob\": { \"queryList\": { \"queries\": [ \"query1\", \"query2\",
+-- \"query3;query4\", ] } }
+qlQueries :: Lens' QueryList [Text]
+qlQueries
+  = lens _qlQueries (\ s a -> s{_qlQueries = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON QueryList where
+        parseJSON
+          = withObject "QueryList"
+              (\ o -> QueryList' <$> (o .:? "queries" .!= mempty))
+
+instance ToJSON QueryList where
+        toJSON QueryList'{..}
+          = object (catMaybes [("queries" .=) <$> _qlQueries])
+
+-- | 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
+
+-- | Cloud Dataproc job status.
+--
+-- /See:/ 'jobStatus' smart constructor.
+data JobStatus =
+  JobStatus'
+    { _jsState          :: !(Maybe JobStatusState)
+    , _jsSubState       :: !(Maybe JobStatusSubState)
+    , _jsStateStartTime :: !(Maybe DateTime')
+    , _jsDetails        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jsState'
+--
+-- * 'jsSubState'
+--
+-- * 'jsStateStartTime'
+--
+-- * 'jsDetails'
+jobStatus
+    :: JobStatus
+jobStatus =
+  JobStatus'
+    { _jsState = Nothing
+    , _jsSubState = Nothing
+    , _jsStateStartTime = Nothing
+    , _jsDetails = Nothing
+    }
+
+
+-- | Output only. A state message specifying the overall job state.
+jsState :: Lens' JobStatus (Maybe JobStatusState)
+jsState = lens _jsState (\ s a -> s{_jsState = a})
+
+-- | Output only. Additional state information, which includes status
+-- reported by the agent.
+jsSubState :: Lens' JobStatus (Maybe JobStatusSubState)
+jsSubState
+  = lens _jsSubState (\ s a -> s{_jsSubState = a})
+
+-- | Output only. The time when this state was entered.
+jsStateStartTime :: Lens' JobStatus (Maybe UTCTime)
+jsStateStartTime
+  = lens _jsStateStartTime
+      (\ s a -> s{_jsStateStartTime = a})
+      . mapping _DateTime
+
+-- | Output only. Optional job state details, such as an error description if
+-- the state is 'ERROR'.
+jsDetails :: Lens' JobStatus (Maybe Text)
+jsDetails
+  = lens _jsDetails (\ s a -> s{_jsDetails = a})
+
+instance FromJSON JobStatus where
+        parseJSON
+          = withObject "JobStatus"
+              (\ o ->
+                 JobStatus' <$>
+                   (o .:? "state") <*> (o .:? "substate") <*>
+                     (o .:? "stateStartTime")
+                     <*> (o .:? "details"))
+
+instance ToJSON JobStatus where
+        toJSON JobStatus'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _jsState,
+                  ("substate" .=) <$> _jsSubState,
+                  ("stateStartTime" .=) <$> _jsStateStartTime,
+                  ("details" .=) <$> _jsDetails])
+
+-- | Optional. Mapping of query variable names to values (equivalent to the
+-- Pig command: name=[value]).
+--
+-- /See:/ 'pigJobScriptVariables' smart constructor.
+newtype PigJobScriptVariables =
+  PigJobScriptVariables'
+    { _pjsvAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PigJobScriptVariables' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pjsvAddtional'
+pigJobScriptVariables
+    :: HashMap Text Text -- ^ 'pjsvAddtional'
+    -> PigJobScriptVariables
+pigJobScriptVariables pPjsvAddtional_ =
+  PigJobScriptVariables' {_pjsvAddtional = _Coerce # pPjsvAddtional_}
+
+
+pjsvAddtional :: Lens' PigJobScriptVariables (HashMap Text Text)
+pjsvAddtional
+  = lens _pjsvAddtional
+      (\ s a -> s{_pjsvAddtional = a})
+      . _Coerce
+
+instance FromJSON PigJobScriptVariables where
+        parseJSON
+          = withObject "PigJobScriptVariables"
+              (\ o ->
+                 PigJobScriptVariables' <$> (parseJSONObject o))
+
+instance ToJSON PigJobScriptVariables where
+        toJSON = toJSON . _pjsvAddtional
+
+-- | The HDFS metrics.
+--
+-- /See:/ 'clusterMetricsHdfsMetrics' smart constructor.
+newtype ClusterMetricsHdfsMetrics =
+  ClusterMetricsHdfsMetrics'
+    { _cmhmAddtional :: HashMap Text (Textual Int64)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterMetricsHdfsMetrics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cmhmAddtional'
+clusterMetricsHdfsMetrics
+    :: HashMap Text Int64 -- ^ 'cmhmAddtional'
+    -> ClusterMetricsHdfsMetrics
+clusterMetricsHdfsMetrics pCmhmAddtional_ =
+  ClusterMetricsHdfsMetrics' {_cmhmAddtional = _Coerce # pCmhmAddtional_}
+
+
+cmhmAddtional :: Lens' ClusterMetricsHdfsMetrics (HashMap Text Int64)
+cmhmAddtional
+  = lens _cmhmAddtional
+      (\ s a -> s{_cmhmAddtional = a})
+      . _Coerce
+
+instance FromJSON ClusterMetricsHdfsMetrics where
+        parseJSON
+          = withObject "ClusterMetricsHdfsMetrics"
+              (\ o ->
+                 ClusterMetricsHdfsMetrics' <$> (parseJSONObject o))
+
+instance ToJSON ClusterMetricsHdfsMetrics where
+        toJSON = toJSON . _cmhmAddtional
+
+-- | The workflow node.
+--
+-- /See:/ 'workflowNode' smart constructor.
+data WorkflowNode =
+  WorkflowNode'
+    { _wnState               :: !(Maybe WorkflowNodeState)
+    , _wnStepId              :: !(Maybe Text)
+    , _wnJobId               :: !(Maybe Text)
+    , _wnPrerequisiteStepIds :: !(Maybe [Text])
+    , _wnError               :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowNode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wnState'
+--
+-- * 'wnStepId'
+--
+-- * 'wnJobId'
+--
+-- * 'wnPrerequisiteStepIds'
+--
+-- * 'wnError'
+workflowNode
+    :: WorkflowNode
+workflowNode =
+  WorkflowNode'
+    { _wnState = Nothing
+    , _wnStepId = Nothing
+    , _wnJobId = Nothing
+    , _wnPrerequisiteStepIds = Nothing
+    , _wnError = Nothing
+    }
+
+
+-- | Output only. The node state.
+wnState :: Lens' WorkflowNode (Maybe WorkflowNodeState)
+wnState = lens _wnState (\ s a -> s{_wnState = a})
+
+-- | Output only. The name of the node.
+wnStepId :: Lens' WorkflowNode (Maybe Text)
+wnStepId = lens _wnStepId (\ s a -> s{_wnStepId = a})
+
+-- | Output only. The job id; populated after the node enters RUNNING state.
+wnJobId :: Lens' WorkflowNode (Maybe Text)
+wnJobId = lens _wnJobId (\ s a -> s{_wnJobId = a})
+
+-- | Output only. Node\'s prerequisite nodes.
+wnPrerequisiteStepIds :: Lens' WorkflowNode [Text]
+wnPrerequisiteStepIds
+  = lens _wnPrerequisiteStepIds
+      (\ s a -> s{_wnPrerequisiteStepIds = a})
+      . _Default
+      . _Coerce
+
+-- | Output only. The error detail.
+wnError :: Lens' WorkflowNode (Maybe Text)
+wnError = lens _wnError (\ s a -> s{_wnError = a})
+
+instance FromJSON WorkflowNode where
+        parseJSON
+          = withObject "WorkflowNode"
+              (\ o ->
+                 WorkflowNode' <$>
+                   (o .:? "state") <*> (o .:? "stepId") <*>
+                     (o .:? "jobId")
+                     <*> (o .:? "prerequisiteStepIds" .!= mempty)
+                     <*> (o .:? "error"))
+
+instance ToJSON WorkflowNode where
+        toJSON WorkflowNode'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _wnState,
+                  ("stepId" .=) <$> _wnStepId,
+                  ("jobId" .=) <$> _wnJobId,
+                  ("prerequisiteStepIds" .=) <$>
+                    _wnPrerequisiteStepIds,
+                  ("error" .=) <$> _wnError])
+
+-- | A Cloud Dataproc workflow template resource.
+--
+-- /See:/ 'workflowMetadata' smart constructor.
+data WorkflowMetadata =
+  WorkflowMetadata'
+    { _wmGraph         :: !(Maybe WorkflowGraph)
+    , _wmState         :: !(Maybe WorkflowMetadataState)
+    , _wmClusterUuid   :: !(Maybe Text)
+    , _wmStartTime     :: !(Maybe DateTime')
+    , _wmDeleteCluster :: !(Maybe ClusterOperation)
+    , _wmCreateCluster :: !(Maybe ClusterOperation)
+    , _wmVersion       :: !(Maybe (Textual Int32))
+    , _wmEndTime       :: !(Maybe DateTime')
+    , _wmParameters    :: !(Maybe WorkflowMetadataParameters)
+    , _wmClusterName   :: !(Maybe Text)
+    , _wmTemplate      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WorkflowMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wmGraph'
+--
+-- * 'wmState'
+--
+-- * 'wmClusterUuid'
+--
+-- * 'wmStartTime'
+--
+-- * 'wmDeleteCluster'
+--
+-- * 'wmCreateCluster'
+--
+-- * 'wmVersion'
+--
+-- * 'wmEndTime'
+--
+-- * 'wmParameters'
+--
+-- * 'wmClusterName'
+--
+-- * 'wmTemplate'
+workflowMetadata
+    :: WorkflowMetadata
+workflowMetadata =
+  WorkflowMetadata'
+    { _wmGraph = Nothing
+    , _wmState = Nothing
+    , _wmClusterUuid = Nothing
+    , _wmStartTime = Nothing
+    , _wmDeleteCluster = Nothing
+    , _wmCreateCluster = Nothing
+    , _wmVersion = Nothing
+    , _wmEndTime = Nothing
+    , _wmParameters = Nothing
+    , _wmClusterName = Nothing
+    , _wmTemplate = Nothing
+    }
+
+
+-- | Output only. The workflow graph.
+wmGraph :: Lens' WorkflowMetadata (Maybe WorkflowGraph)
+wmGraph = lens _wmGraph (\ s a -> s{_wmGraph = a})
+
+-- | Output only. The workflow state.
+wmState :: Lens' WorkflowMetadata (Maybe WorkflowMetadataState)
+wmState = lens _wmState (\ s a -> s{_wmState = a})
+
+-- | Output only. The UUID of target cluster.
+wmClusterUuid :: Lens' WorkflowMetadata (Maybe Text)
+wmClusterUuid
+  = lens _wmClusterUuid
+      (\ s a -> s{_wmClusterUuid = a})
+
+-- | Output only. Workflow start time.
+wmStartTime :: Lens' WorkflowMetadata (Maybe UTCTime)
+wmStartTime
+  = lens _wmStartTime (\ s a -> s{_wmStartTime = a}) .
+      mapping _DateTime
+
+-- | Output only. The delete cluster operation metadata.
+wmDeleteCluster :: Lens' WorkflowMetadata (Maybe ClusterOperation)
+wmDeleteCluster
+  = lens _wmDeleteCluster
+      (\ s a -> s{_wmDeleteCluster = a})
+
+-- | Output only. The create cluster operation metadata.
+wmCreateCluster :: Lens' WorkflowMetadata (Maybe ClusterOperation)
+wmCreateCluster
+  = lens _wmCreateCluster
+      (\ s a -> s{_wmCreateCluster = a})
+
+-- | Output only. The version of template at the time of workflow
+-- instantiation.
+wmVersion :: Lens' WorkflowMetadata (Maybe Int32)
+wmVersion
+  = lens _wmVersion (\ s a -> s{_wmVersion = a}) .
+      mapping _Coerce
+
+-- | Output only. Workflow end time.
+wmEndTime :: Lens' WorkflowMetadata (Maybe UTCTime)
+wmEndTime
+  = lens _wmEndTime (\ s a -> s{_wmEndTime = a}) .
+      mapping _DateTime
+
+-- | Map from parameter names to values that were used for those parameters.
+wmParameters :: Lens' WorkflowMetadata (Maybe WorkflowMetadataParameters)
+wmParameters
+  = lens _wmParameters (\ s a -> s{_wmParameters = a})
+
+-- | Output only. The name of the target cluster.
+wmClusterName :: Lens' WorkflowMetadata (Maybe Text)
+wmClusterName
+  = lens _wmClusterName
+      (\ s a -> s{_wmClusterName = a})
+
+-- | Output only. The \"resource name\" of the template.
+wmTemplate :: Lens' WorkflowMetadata (Maybe Text)
+wmTemplate
+  = lens _wmTemplate (\ s a -> s{_wmTemplate = a})
+
+instance FromJSON WorkflowMetadata where
+        parseJSON
+          = withObject "WorkflowMetadata"
+              (\ o ->
+                 WorkflowMetadata' <$>
+                   (o .:? "graph") <*> (o .:? "state") <*>
+                     (o .:? "clusterUuid")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "deleteCluster")
+                     <*> (o .:? "createCluster")
+                     <*> (o .:? "version")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "parameters")
+                     <*> (o .:? "clusterName")
+                     <*> (o .:? "template"))
+
+instance ToJSON WorkflowMetadata where
+        toJSON WorkflowMetadata'{..}
+          = object
+              (catMaybes
+                 [("graph" .=) <$> _wmGraph,
+                  ("state" .=) <$> _wmState,
+                  ("clusterUuid" .=) <$> _wmClusterUuid,
+                  ("startTime" .=) <$> _wmStartTime,
+                  ("deleteCluster" .=) <$> _wmDeleteCluster,
+                  ("createCluster" .=) <$> _wmCreateCluster,
+                  ("version" .=) <$> _wmVersion,
+                  ("endTime" .=) <$> _wmEndTime,
+                  ("parameters" .=) <$> _wmParameters,
+                  ("clusterName" .=) <$> _wmClusterName,
+                  ("template" .=) <$> _wmTemplate])
+
+-- | 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
+
+-- | The per-package log levels for the driver. This may include \"root\"
+-- package name to configure rootLogger. Examples: \'com.google = FATAL\',
+-- \'root = INFO\', \'org.apache = DEBUG\'
+--
+-- /See:/ 'loggingConfigDriverLogLevels' smart constructor.
+newtype LoggingConfigDriverLogLevels =
+  LoggingConfigDriverLogLevels'
+    { _lcdllAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LoggingConfigDriverLogLevels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcdllAddtional'
+loggingConfigDriverLogLevels
+    :: HashMap Text Text -- ^ 'lcdllAddtional'
+    -> LoggingConfigDriverLogLevels
+loggingConfigDriverLogLevels pLcdllAddtional_ =
+  LoggingConfigDriverLogLevels' {_lcdllAddtional = _Coerce # pLcdllAddtional_}
+
+
+lcdllAddtional :: Lens' LoggingConfigDriverLogLevels (HashMap Text Text)
+lcdllAddtional
+  = lens _lcdllAddtional
+      (\ s a -> s{_lcdllAddtional = a})
+      . _Coerce
+
+instance FromJSON LoggingConfigDriverLogLevels where
+        parseJSON
+          = withObject "LoggingConfigDriverLogLevels"
+              (\ o ->
+                 LoggingConfigDriverLogLevels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON LoggingConfigDriverLogLevels where
+        toJSON = toJSON . _lcdllAddtional
+
+-- | The status of a cluster and its instances.
+--
+-- /See:/ 'clusterStatus' smart constructor.
+data ClusterStatus =
+  ClusterStatus'
+    { _csState          :: !(Maybe ClusterStatusState)
+    , _csSubState       :: !(Maybe ClusterStatusSubState)
+    , _csStateStartTime :: !(Maybe DateTime')
+    , _csDetail         :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ClusterStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csState'
+--
+-- * 'csSubState'
+--
+-- * 'csStateStartTime'
+--
+-- * 'csDetail'
+clusterStatus
+    :: ClusterStatus
+clusterStatus =
+  ClusterStatus'
+    { _csState = Nothing
+    , _csSubState = Nothing
+    , _csStateStartTime = Nothing
+    , _csDetail = Nothing
+    }
+
+
+-- | Output only. The cluster\'s state.
+csState :: Lens' ClusterStatus (Maybe ClusterStatusState)
+csState = lens _csState (\ s a -> s{_csState = a})
+
+-- | Output only. Additional state information that includes status reported
+-- by the agent.
+csSubState :: Lens' ClusterStatus (Maybe ClusterStatusSubState)
+csSubState
+  = lens _csSubState (\ s a -> s{_csSubState = a})
+
+-- | Output only. Time when this state was entered.
+csStateStartTime :: Lens' ClusterStatus (Maybe UTCTime)
+csStateStartTime
+  = lens _csStateStartTime
+      (\ s a -> s{_csStateStartTime = a})
+      . mapping _DateTime
+
+-- | Output only. Optional details of cluster\'s state.
+csDetail :: Lens' ClusterStatus (Maybe Text)
+csDetail = lens _csDetail (\ s a -> s{_csDetail = a})
+
+instance FromJSON ClusterStatus where
+        parseJSON
+          = withObject "ClusterStatus"
+              (\ o ->
+                 ClusterStatus' <$>
+                   (o .:? "state") <*> (o .:? "substate") <*>
+                     (o .:? "stateStartTime")
+                     <*> (o .:? "detail"))
+
+instance ToJSON ClusterStatus where
+        toJSON ClusterStatus'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _csState,
+                  ("substate" .=) <$> _csSubState,
+                  ("stateStartTime" .=) <$> _csStateStartTime,
+                  ("detail" .=) <$> _csDetail])
+
+-- | A YARN application created by a job. Application information is a subset
+-- of 'org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto'.Beta
+-- Feature: This report is available for testing purposes only. It may be
+-- changed before final release.
+--
+-- /See:/ 'yarnApplication' smart constructor.
+data YarnApplication =
+  YarnApplication'
+    { _yaTrackingURL :: !(Maybe Text)
+    , _yaState       :: !(Maybe YarnApplicationState)
+    , _yaProgress    :: !(Maybe (Textual Double))
+    , _yaName        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'YarnApplication' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'yaTrackingURL'
+--
+-- * 'yaState'
+--
+-- * 'yaProgress'
+--
+-- * 'yaName'
+yarnApplication
+    :: YarnApplication
+yarnApplication =
+  YarnApplication'
+    { _yaTrackingURL = Nothing
+    , _yaState = Nothing
+    , _yaProgress = Nothing
+    , _yaName = Nothing
+    }
+
+
+-- | Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or
+-- TimelineServer that provides application-specific information. The URL
+-- uses the internal hostname, and requires a proxy server for resolution
+-- and, possibly, access.
+yaTrackingURL :: Lens' YarnApplication (Maybe Text)
+yaTrackingURL
+  = lens _yaTrackingURL
+      (\ s a -> s{_yaTrackingURL = a})
+
+-- | Required. The application state.
+yaState :: Lens' YarnApplication (Maybe YarnApplicationState)
+yaState = lens _yaState (\ s a -> s{_yaState = a})
+
+-- | Required. The numerical progress of the application, from 1 to 100.
+yaProgress :: Lens' YarnApplication (Maybe Double)
+yaProgress
+  = lens _yaProgress (\ s a -> s{_yaProgress = a}) .
+      mapping _Coerce
+
+-- | Required. The application name.
+yaName :: Lens' YarnApplication (Maybe Text)
+yaName = lens _yaName (\ s a -> s{_yaName = a})
+
+instance FromJSON YarnApplication where
+        parseJSON
+          = withObject "YarnApplication"
+              (\ o ->
+                 YarnApplication' <$>
+                   (o .:? "trackingUrl") <*> (o .:? "state") <*>
+                     (o .:? "progress")
+                     <*> (o .:? "name"))
+
+instance ToJSON YarnApplication where
+        toJSON YarnApplication'{..}
+          = object
+              (catMaybes
+                 [("trackingUrl" .=) <$> _yaTrackingURL,
+                  ("state" .=) <$> _yaState,
+                  ("progress" .=) <$> _yaProgress,
+                  ("name" .=) <$> _yaName])
+
+-- | A Cloud Dataproc job for running Apache Pig (https:\/\/pig.apache.org\/)
+-- queries on YARN.
+--
+-- /See:/ 'pigJob' smart constructor.
+data PigJob =
+  PigJob'
+    { _pjQueryFileURI      :: !(Maybe Text)
+    , _pjJarFileURIs       :: !(Maybe [Text])
+    , _pjScriptVariables   :: !(Maybe PigJobScriptVariables)
+    , _pjQueryList         :: !(Maybe QueryList)
+    , _pjContinueOnFailure :: !(Maybe Bool)
+    , _pjLoggingConfig     :: !(Maybe LoggingConfig)
+    , _pjProperties        :: !(Maybe PigJobProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PigJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pjQueryFileURI'
+--
+-- * 'pjJarFileURIs'
+--
+-- * 'pjScriptVariables'
+--
+-- * 'pjQueryList'
+--
+-- * 'pjContinueOnFailure'
+--
+-- * 'pjLoggingConfig'
+--
+-- * 'pjProperties'
+pigJob
+    :: PigJob
+pigJob =
+  PigJob'
+    { _pjQueryFileURI = Nothing
+    , _pjJarFileURIs = Nothing
+    , _pjScriptVariables = Nothing
+    , _pjQueryList = Nothing
+    , _pjContinueOnFailure = Nothing
+    , _pjLoggingConfig = Nothing
+    , _pjProperties = Nothing
+    }
+
+
+-- | The HCFS URI of the script that contains the Pig queries.
+pjQueryFileURI :: Lens' PigJob (Maybe Text)
+pjQueryFileURI
+  = lens _pjQueryFileURI
+      (\ s a -> s{_pjQueryFileURI = a})
+
+-- | Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig
+-- Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
+pjJarFileURIs :: Lens' PigJob [Text]
+pjJarFileURIs
+  = lens _pjJarFileURIs
+      (\ s a -> s{_pjJarFileURIs = a})
+      . _Default
+      . _Coerce
+
+-- | Optional. Mapping of query variable names to values (equivalent to the
+-- Pig command: name=[value]).
+pjScriptVariables :: Lens' PigJob (Maybe PigJobScriptVariables)
+pjScriptVariables
+  = lens _pjScriptVariables
+      (\ s a -> s{_pjScriptVariables = a})
+
+-- | A list of queries.
+pjQueryList :: Lens' PigJob (Maybe QueryList)
+pjQueryList
+  = lens _pjQueryList (\ s a -> s{_pjQueryList = a})
+
+-- | Optional. Whether to continue executing queries if a query fails. The
+-- default value is false. Setting to true can be useful when executing
+-- independent parallel queries.
+pjContinueOnFailure :: Lens' PigJob (Maybe Bool)
+pjContinueOnFailure
+  = lens _pjContinueOnFailure
+      (\ s a -> s{_pjContinueOnFailure = a})
+
+-- | Optional. The runtime log config for job execution.
+pjLoggingConfig :: Lens' PigJob (Maybe LoggingConfig)
+pjLoggingConfig
+  = lens _pjLoggingConfig
+      (\ s a -> s{_pjLoggingConfig = a})
+
+-- | Optional. A mapping of property names to values, used to configure Pig.
+-- Properties that conflict with values set by the Cloud Dataproc API may
+-- be overwritten. Can include properties set in
+-- \/etc\/hadoop\/conf\/*-site.xml, \/etc\/pig\/conf\/pig.properties, and
+-- classes in user code.
+pjProperties :: Lens' PigJob (Maybe PigJobProperties)
+pjProperties
+  = lens _pjProperties (\ s a -> s{_pjProperties = a})
+
+instance FromJSON PigJob where
+        parseJSON
+          = withObject "PigJob"
+              (\ o ->
+                 PigJob' <$>
+                   (o .:? "queryFileUri") <*>
+                     (o .:? "jarFileUris" .!= mempty)
+                     <*> (o .:? "scriptVariables")
+                     <*> (o .:? "queryList")
+                     <*> (o .:? "continueOnFailure")
+                     <*> (o .:? "loggingConfig")
+                     <*> (o .:? "properties"))
+
+instance ToJSON PigJob where
+        toJSON PigJob'{..}
+          = object
+              (catMaybes
+                 [("queryFileUri" .=) <$> _pjQueryFileURI,
+                  ("jarFileUris" .=) <$> _pjJarFileURIs,
+                  ("scriptVariables" .=) <$> _pjScriptVariables,
+                  ("queryList" .=) <$> _pjQueryList,
+                  ("continueOnFailure" .=) <$> _pjContinueOnFailure,
+                  ("loggingConfig" .=) <$> _pjLoggingConfig,
+                  ("properties" .=) <$> _pjProperties])
+
+-- | The runtime logging config of the job.
+--
+-- /See:/ 'loggingConfig' smart constructor.
+newtype LoggingConfig =
+  LoggingConfig'
+    { _lcDriverLogLevels :: Maybe LoggingConfigDriverLogLevels
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LoggingConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcDriverLogLevels'
+loggingConfig
+    :: LoggingConfig
+loggingConfig = LoggingConfig' {_lcDriverLogLevels = Nothing}
+
+
+-- | The per-package log levels for the driver. This may include \"root\"
+-- package name to configure rootLogger. Examples: \'com.google = FATAL\',
+-- \'root = INFO\', \'org.apache = DEBUG\'
+lcDriverLogLevels :: Lens' LoggingConfig (Maybe LoggingConfigDriverLogLevels)
+lcDriverLogLevels
+  = lens _lcDriverLogLevels
+      (\ s a -> s{_lcDriverLogLevels = a})
+
+instance FromJSON LoggingConfig where
+        parseJSON
+          = withObject "LoggingConfig"
+              (\ o -> LoggingConfig' <$> (o .:? "driverLogLevels"))
+
+instance ToJSON LoggingConfig where
+        toJSON LoggingConfig'{..}
+          = object
+              (catMaybes
+                 [("driverLogLevels" .=) <$> _lcDriverLogLevels])
+
+-- | Associates members with a role.
+--
+-- /See:/ 'binding' smart constructor.
+data Binding =
+  Binding'
+    { _bMembers   :: !(Maybe [Text])
+    , _bRole      :: !(Maybe Text)
+    , _bCondition :: !(Maybe Expr)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Binding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMembers'
+--
+-- * 'bRole'
+--
+-- * 'bCondition'
+binding
+    :: Binding
+binding =
+  Binding' {_bMembers = Nothing, _bRole = Nothing, _bCondition = Nothing}
+
+
+-- | Specifies the identities requesting access for a Cloud Platform
+-- resource. members can have the following values: allUsers: A special
+-- identifier that represents anyone who is on the internet; with or
+-- without a Google account. allAuthenticatedUsers: A special identifier
+-- that represents anyone who is authenticated with a Google account or a
+-- service account. user:{emailid}: An email address that represents a
+-- specific Google account. For example, alice\'gmail.com .
+-- serviceAccount:{emailid}: An email address that represents a service
+-- account. For example, my-other-app\'appspot.gserviceaccount.com.
+-- group:{emailid}: An email address that represents a Google group. For
+-- example, admins\'example.com. domain:{domain}: The G Suite domain
+-- (primary) that represents all the users of that domain. For example,
+-- google.com or example.com.
+bMembers :: Lens' Binding [Text]
+bMembers
+  = lens _bMembers (\ s a -> s{_bMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | Role that is assigned to members. For example, roles\/viewer,
+-- roles\/editor, or roles\/owner.
+bRole :: Lens' Binding (Maybe Text)
+bRole = lens _bRole (\ s a -> s{_bRole = a})
+
+-- | The condition that is associated with this binding. NOTE: An unsatisfied
+-- condition will not allow user access via current binding. Different
+-- bindings, including their conditions, are examined independently.
 bCondition :: Lens' Binding (Maybe Expr)
 bCondition
   = lens _bCondition (\ s a -> s{_bCondition = a})
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs
@@ -64,7 +64,8 @@
 -- | Creates new workflow template.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesCreate' smart constructor.
-data ProjectsLocationsWorkflowTemplatesCreate = ProjectsLocationsWorkflowTemplatesCreate'
+data ProjectsLocationsWorkflowTemplatesCreate =
+  ProjectsLocationsWorkflowTemplatesCreate'
     { _plwtcParent         :: !Text
     , _plwtcXgafv          :: !(Maybe Xgafv)
     , _plwtcUploadProtocol :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _plwtcUploadType     :: !(Maybe Text)
     , _plwtcPayload        :: !WorkflowTemplate
     , _plwtcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesCreate' 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 @@
     -> WorkflowTemplate -- ^ 'plwtcPayload'
     -> ProjectsLocationsWorkflowTemplatesCreate
 projectsLocationsWorkflowTemplatesCreate pPlwtcParent_ pPlwtcPayload_ =
-    ProjectsLocationsWorkflowTemplatesCreate'
+  ProjectsLocationsWorkflowTemplatesCreate'
     { _plwtcParent = pPlwtcParent_
     , _plwtcXgafv = Nothing
     , _plwtcUploadProtocol = Nothing
@@ -106,6 +109,7 @@
     , _plwtcCallback = Nothing
     }
 
+
 -- | Required. The \"resource name\" of the region, as described in
 -- https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
 -- projects\/{project_id}\/regions\/{region}
@@ -148,7 +152,8 @@
       (\ s a -> s{_plwtcCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesCreate where
+           ProjectsLocationsWorkflowTemplatesCreate
+         where
         type Rs ProjectsLocationsWorkflowTemplatesCreate =
              WorkflowTemplate
         type Scopes ProjectsLocationsWorkflowTemplatesCreate
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs
@@ -62,7 +62,8 @@
 -- | Deletes a workflow template. It does not cancel in-progress workflows.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesDelete' smart constructor.
-data ProjectsLocationsWorkflowTemplatesDelete = ProjectsLocationsWorkflowTemplatesDelete'
+data ProjectsLocationsWorkflowTemplatesDelete =
+  ProjectsLocationsWorkflowTemplatesDelete'
     { _plwtdXgafv          :: !(Maybe Xgafv)
     , _plwtdUploadProtocol :: !(Maybe Text)
     , _plwtdAccessToken    :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _plwtdName           :: !Text
     , _plwtdVersion        :: !(Maybe (Textual Int32))
     , _plwtdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     :: Text -- ^ 'plwtdName'
     -> ProjectsLocationsWorkflowTemplatesDelete
 projectsLocationsWorkflowTemplatesDelete pPlwtdName_ =
-    ProjectsLocationsWorkflowTemplatesDelete'
+  ProjectsLocationsWorkflowTemplatesDelete'
     { _plwtdXgafv = Nothing
     , _plwtdUploadProtocol = Nothing
     , _plwtdAccessToken = Nothing
@@ -103,6 +106,7 @@
     , _plwtdCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwtdXgafv :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Xgafv)
 plwtdXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_plwtdCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesDelete where
+           ProjectsLocationsWorkflowTemplatesDelete
+         where
         type Rs ProjectsLocationsWorkflowTemplatesDelete =
              Empty
         type Scopes ProjectsLocationsWorkflowTemplatesDelete
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs
@@ -64,7 +64,8 @@
 -- instantiated template by specifying optional version parameter.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesGet' smart constructor.
-data ProjectsLocationsWorkflowTemplatesGet = ProjectsLocationsWorkflowTemplatesGet'
+data ProjectsLocationsWorkflowTemplatesGet =
+  ProjectsLocationsWorkflowTemplatesGet'
     { _plwtgXgafv          :: !(Maybe Xgafv)
     , _plwtgUploadProtocol :: !(Maybe Text)
     , _plwtgAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _plwtgName           :: !Text
     , _plwtgVersion        :: !(Maybe (Textual Int32))
     , _plwtgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesGet' 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 -- ^ 'plwtgName'
     -> ProjectsLocationsWorkflowTemplatesGet
 projectsLocationsWorkflowTemplatesGet pPlwtgName_ =
-    ProjectsLocationsWorkflowTemplatesGet'
+  ProjectsLocationsWorkflowTemplatesGet'
     { _plwtgXgafv = Nothing
     , _plwtgUploadProtocol = Nothing
     , _plwtgAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _plwtgCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwtgXgafv :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Xgafv)
 plwtgXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_plwtgCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesGet where
+           ProjectsLocationsWorkflowTemplatesGet
+         where
         type Rs ProjectsLocationsWorkflowTemplatesGet =
              WorkflowTemplate
         type Scopes ProjectsLocationsWorkflowTemplatesGet =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs
@@ -65,7 +65,8 @@
 -- if the resource exists and does not have a policy set.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesGetIAMPolicy' smart constructor.
-data ProjectsLocationsWorkflowTemplatesGetIAMPolicy = ProjectsLocationsWorkflowTemplatesGetIAMPolicy'
+data ProjectsLocationsWorkflowTemplatesGetIAMPolicy =
+  ProjectsLocationsWorkflowTemplatesGetIAMPolicy'
     { _plwtgipXgafv          :: !(Maybe Xgafv)
     , _plwtgipUploadProtocol :: !(Maybe Text)
     , _plwtgipAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _plwtgipPayload        :: !GetIAMPolicyRequest
     , _plwtgipResource       :: !Text
     , _plwtgipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesGetIAMPolicy' 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 -- ^ 'plwtgipResource'
     -> ProjectsLocationsWorkflowTemplatesGetIAMPolicy
 projectsLocationsWorkflowTemplatesGetIAMPolicy pPlwtgipPayload_ pPlwtgipResource_ =
-    ProjectsLocationsWorkflowTemplatesGetIAMPolicy'
+  ProjectsLocationsWorkflowTemplatesGetIAMPolicy'
     { _plwtgipXgafv = Nothing
     , _plwtgipUploadProtocol = Nothing
     , _plwtgipAccessToken = Nothing
@@ -107,6 +110,7 @@
     , _plwtgipCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwtgipXgafv :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy (Maybe Xgafv)
 plwtgipXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_plwtgipCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesGetIAMPolicy where
+           ProjectsLocationsWorkflowTemplatesGetIAMPolicy
+         where
         type Rs
                ProjectsLocationsWorkflowTemplatesGetIAMPolicy
              = Policy
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs
@@ -75,7 +75,8 @@
 -- completion, Operation.response will be Empty.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesInstantiate' smart constructor.
-data ProjectsLocationsWorkflowTemplatesInstantiate = ProjectsLocationsWorkflowTemplatesInstantiate'
+data ProjectsLocationsWorkflowTemplatesInstantiate =
+  ProjectsLocationsWorkflowTemplatesInstantiate'
     { _plwtiXgafv          :: !(Maybe Xgafv)
     , _plwtiUploadProtocol :: !(Maybe Text)
     , _plwtiAccessToken    :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _plwtiPayload        :: !InstantiateWorkflowTemplateRequest
     , _plwtiName           :: !Text
     , _plwtiCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesInstantiate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,7 +110,7 @@
     -> Text -- ^ 'plwtiName'
     -> ProjectsLocationsWorkflowTemplatesInstantiate
 projectsLocationsWorkflowTemplatesInstantiate pPlwtiPayload_ pPlwtiName_ =
-    ProjectsLocationsWorkflowTemplatesInstantiate'
+  ProjectsLocationsWorkflowTemplatesInstantiate'
     { _plwtiXgafv = Nothing
     , _plwtiUploadProtocol = Nothing
     , _plwtiAccessToken = Nothing
@@ -117,6 +120,7 @@
     , _plwtiCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwtiXgafv :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate (Maybe Xgafv)
 plwtiXgafv
@@ -159,7 +163,8 @@
       (\ s a -> s{_plwtiCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesInstantiate where
+           ProjectsLocationsWorkflowTemplatesInstantiate
+         where
         type Rs ProjectsLocationsWorkflowTemplatesInstantiate
              = Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs
@@ -82,7 +82,8 @@
 -- successful completion, Operation.response will be Empty.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesInstantiateInline' smart constructor.
-data ProjectsLocationsWorkflowTemplatesInstantiateInline = ProjectsLocationsWorkflowTemplatesInstantiateInline'
+data ProjectsLocationsWorkflowTemplatesInstantiateInline =
+  ProjectsLocationsWorkflowTemplatesInstantiateInline'
     { _plwtiiParent         :: !Text
     , _plwtiiXgafv          :: !(Maybe Xgafv)
     , _plwtiiRequestId      :: !(Maybe Text)
@@ -91,8 +92,10 @@
     , _plwtiiUploadType     :: !(Maybe Text)
     , _plwtiiPayload        :: !WorkflowTemplate
     , _plwtiiCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesInstantiateInline' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -117,7 +120,7 @@
     -> WorkflowTemplate -- ^ 'plwtiiPayload'
     -> ProjectsLocationsWorkflowTemplatesInstantiateInline
 projectsLocationsWorkflowTemplatesInstantiateInline pPlwtiiParent_ pPlwtiiPayload_ =
-    ProjectsLocationsWorkflowTemplatesInstantiateInline'
+  ProjectsLocationsWorkflowTemplatesInstantiateInline'
     { _plwtiiParent = pPlwtiiParent_
     , _plwtiiXgafv = Nothing
     , _plwtiiRequestId = Nothing
@@ -128,6 +131,7 @@
     , _plwtiiCallback = Nothing
     }
 
+
 -- | Required. The \"resource name\" of the workflow template region, as
 -- described in https:\/\/cloud.google.com\/apis\/design\/resource_names of
 -- the form projects\/{project_id}\/regions\/{region}
@@ -183,7 +187,7 @@
       (\ s a -> s{_plwtiiCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesInstantiateInline
+           ProjectsLocationsWorkflowTemplatesInstantiateInline
          where
         type Rs
                ProjectsLocationsWorkflowTemplatesInstantiateInline
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs
@@ -65,7 +65,8 @@
 -- | Lists workflows that match the specified filter in the request.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesList' smart constructor.
-data ProjectsLocationsWorkflowTemplatesList = ProjectsLocationsWorkflowTemplatesList'
+data ProjectsLocationsWorkflowTemplatesList =
+  ProjectsLocationsWorkflowTemplatesList'
     { _plwtlParent         :: !Text
     , _plwtlXgafv          :: !(Maybe Xgafv)
     , _plwtlUploadProtocol :: !(Maybe Text)
@@ -74,8 +75,10 @@
     , _plwtlPageToken      :: !(Maybe Text)
     , _plwtlPageSize       :: !(Maybe (Textual Int32))
     , _plwtlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesList' 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 -- ^ 'plwtlParent'
     -> ProjectsLocationsWorkflowTemplatesList
 projectsLocationsWorkflowTemplatesList pPlwtlParent_ =
-    ProjectsLocationsWorkflowTemplatesList'
+  ProjectsLocationsWorkflowTemplatesList'
     { _plwtlParent = pPlwtlParent_
     , _plwtlXgafv = Nothing
     , _plwtlUploadProtocol = Nothing
@@ -110,6 +113,7 @@
     , _plwtlCallback = Nothing
     }
 
+
 -- | Required. The \"resource name\" of the region, as described in
 -- https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
 -- projects\/{project_id}\/regions\/{region}
@@ -161,7 +165,8 @@
       (\ s a -> s{_plwtlCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesList where
+           ProjectsLocationsWorkflowTemplatesList
+         where
         type Rs ProjectsLocationsWorkflowTemplatesList =
              ListWorkflowTemplatesResponse
         type Scopes ProjectsLocationsWorkflowTemplatesList =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs
@@ -65,7 +65,8 @@
 -- existing policy.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesSetIAMPolicy' smart constructor.
-data ProjectsLocationsWorkflowTemplatesSetIAMPolicy = ProjectsLocationsWorkflowTemplatesSetIAMPolicy'
+data ProjectsLocationsWorkflowTemplatesSetIAMPolicy =
+  ProjectsLocationsWorkflowTemplatesSetIAMPolicy'
     { _plwtsipXgafv          :: !(Maybe Xgafv)
     , _plwtsipUploadProtocol :: !(Maybe Text)
     , _plwtsipAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _plwtsipPayload        :: !SetIAMPolicyRequest
     , _plwtsipResource       :: !Text
     , _plwtsipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesSetIAMPolicy' 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 -- ^ 'plwtsipResource'
     -> ProjectsLocationsWorkflowTemplatesSetIAMPolicy
 projectsLocationsWorkflowTemplatesSetIAMPolicy pPlwtsipPayload_ pPlwtsipResource_ =
-    ProjectsLocationsWorkflowTemplatesSetIAMPolicy'
+  ProjectsLocationsWorkflowTemplatesSetIAMPolicy'
     { _plwtsipXgafv = Nothing
     , _plwtsipUploadProtocol = Nothing
     , _plwtsipAccessToken = Nothing
@@ -107,6 +110,7 @@
     , _plwtsipCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwtsipXgafv :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy (Maybe Xgafv)
 plwtsipXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_plwtsipCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesSetIAMPolicy where
+           ProjectsLocationsWorkflowTemplatesSetIAMPolicy
+         where
         type Rs
                ProjectsLocationsWorkflowTemplatesSetIAMPolicy
              = Policy
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs
@@ -73,7 +73,8 @@
 -- warning.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesTestIAMPermissions' smart constructor.
-data ProjectsLocationsWorkflowTemplatesTestIAMPermissions = ProjectsLocationsWorkflowTemplatesTestIAMPermissions'
+data ProjectsLocationsWorkflowTemplatesTestIAMPermissions =
+  ProjectsLocationsWorkflowTemplatesTestIAMPermissions'
     { _plwttipXgafv          :: !(Maybe Xgafv)
     , _plwttipUploadProtocol :: !(Maybe Text)
     , _plwttipAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _plwttipPayload        :: !TestIAMPermissionsRequest
     , _plwttipResource       :: !Text
     , _plwttipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesTestIAMPermissions' 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 -- ^ 'plwttipResource'
     -> ProjectsLocationsWorkflowTemplatesTestIAMPermissions
 projectsLocationsWorkflowTemplatesTestIAMPermissions pPlwttipPayload_ pPlwttipResource_ =
-    ProjectsLocationsWorkflowTemplatesTestIAMPermissions'
+  ProjectsLocationsWorkflowTemplatesTestIAMPermissions'
     { _plwttipXgafv = Nothing
     , _plwttipUploadProtocol = Nothing
     , _plwttipAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _plwttipCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwttipXgafv :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions (Maybe Xgafv)
 plwttipXgafv
@@ -159,7 +163,7 @@
       (\ s a -> s{_plwttipCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesTestIAMPermissions
+           ProjectsLocationsWorkflowTemplatesTestIAMPermissions
          where
         type Rs
                ProjectsLocationsWorkflowTemplatesTestIAMPermissions
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs
@@ -65,7 +65,8 @@
 -- version that matches the current server version.
 --
 -- /See:/ 'projectsLocationsWorkflowTemplatesUpdate' smart constructor.
-data ProjectsLocationsWorkflowTemplatesUpdate = ProjectsLocationsWorkflowTemplatesUpdate'
+data ProjectsLocationsWorkflowTemplatesUpdate =
+  ProjectsLocationsWorkflowTemplatesUpdate'
     { _plwtuXgafv          :: !(Maybe Xgafv)
     , _plwtuUploadProtocol :: !(Maybe Text)
     , _plwtuAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _plwtuPayload        :: !WorkflowTemplate
     , _plwtuName           :: !Text
     , _plwtuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsWorkflowTemplatesUpdate' 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 -- ^ 'plwtuName'
     -> ProjectsLocationsWorkflowTemplatesUpdate
 projectsLocationsWorkflowTemplatesUpdate pPlwtuPayload_ pPlwtuName_ =
-    ProjectsLocationsWorkflowTemplatesUpdate'
+  ProjectsLocationsWorkflowTemplatesUpdate'
     { _plwtuXgafv = Nothing
     , _plwtuUploadProtocol = Nothing
     , _plwtuAccessToken = Nothing
@@ -107,6 +110,7 @@
     , _plwtuCallback = Nothing
     }
 
+
 -- | V1 error format.
 plwtuXgafv :: Lens' ProjectsLocationsWorkflowTemplatesUpdate (Maybe Xgafv)
 plwtuXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_plwtuCallback = a})
 
 instance GoogleRequest
-         ProjectsLocationsWorkflowTemplatesUpdate where
+           ProjectsLocationsWorkflowTemplatesUpdate
+         where
         type Rs ProjectsLocationsWorkflowTemplatesUpdate =
              WorkflowTemplate
         type Scopes ProjectsLocationsWorkflowTemplatesUpdate
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Create.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Create.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Create.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Create.hs
@@ -68,7 +68,8 @@
 -- | Creates a cluster in a project.
 --
 -- /See:/ 'projectsRegionsClustersCreate' smart constructor.
-data ProjectsRegionsClustersCreate = ProjectsRegionsClustersCreate'
+data ProjectsRegionsClustersCreate =
+  ProjectsRegionsClustersCreate'
     { _prccXgafv          :: !(Maybe Xgafv)
     , _prccRequestId      :: !(Maybe Text)
     , _prccUploadProtocol :: !(Maybe Text)
@@ -78,8 +79,10 @@
     , _prccRegion         :: !Text
     , _prccProjectId      :: !Text
     , _prccCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,7 +110,7 @@
     -> Text -- ^ 'prccProjectId'
     -> ProjectsRegionsClustersCreate
 projectsRegionsClustersCreate pPrccPayload_ pPrccRegion_ pPrccProjectId_ =
-    ProjectsRegionsClustersCreate'
+  ProjectsRegionsClustersCreate'
     { _prccXgafv = Nothing
     , _prccRequestId = Nothing
     , _prccUploadProtocol = Nothing
@@ -118,6 +121,7 @@
     , _prccProjectId = pPrccProjectId_
     , _prccCallback = Nothing
     }
+
 
 -- | V1 error format.
 prccXgafv :: Lens' ProjectsRegionsClustersCreate (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Delete.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Delete.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Delete.hs
@@ -71,7 +71,8 @@
 -- | Deletes a cluster in a project.
 --
 -- /See:/ 'projectsRegionsClustersDelete' smart constructor.
-data ProjectsRegionsClustersDelete = ProjectsRegionsClustersDelete'
+data ProjectsRegionsClustersDelete =
+  ProjectsRegionsClustersDelete'
     { _prcdXgafv          :: !(Maybe Xgafv)
     , _prcdRequestId      :: !(Maybe Text)
     , _prcdClusterUuid    :: !(Maybe Text)
@@ -82,8 +83,10 @@
     , _prcdRegion         :: !Text
     , _prcdProjectId      :: !Text
     , _prcdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersDelete' 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 -- ^ 'prcdProjectId'
     -> ProjectsRegionsClustersDelete
 projectsRegionsClustersDelete pPrcdClusterName_ pPrcdRegion_ pPrcdProjectId_ =
-    ProjectsRegionsClustersDelete'
+  ProjectsRegionsClustersDelete'
     { _prcdXgafv = Nothing
     , _prcdRequestId = Nothing
     , _prcdClusterUuid = Nothing
@@ -125,6 +128,7 @@
     , _prcdProjectId = pPrcdProjectId_
     , _prcdCallback = Nothing
     }
+
 
 -- | V1 error format.
 prcdXgafv :: Lens' ProjectsRegionsClustersDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Diagnose.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Diagnose.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Diagnose.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Diagnose.hs
@@ -71,7 +71,8 @@
 -- Operation.response field contains DiagnoseClusterOutputLocation.
 --
 -- /See:/ 'projectsRegionsClustersDiagnose' smart constructor.
-data ProjectsRegionsClustersDiagnose = ProjectsRegionsClustersDiagnose'
+data ProjectsRegionsClustersDiagnose =
+  ProjectsRegionsClustersDiagnose'
     { _pXgafv          :: !(Maybe Xgafv)
     , _pUploadProtocol :: !(Maybe Text)
     , _pAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _pRegion         :: !Text
     , _pProjectId      :: !Text
     , _pCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersDiagnose' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,7 +114,7 @@
     -> Text -- ^ 'pProjectId'
     -> ProjectsRegionsClustersDiagnose
 projectsRegionsClustersDiagnose pPPayload_ pPClusterName_ pPRegion_ pPProjectId_ =
-    ProjectsRegionsClustersDiagnose'
+  ProjectsRegionsClustersDiagnose'
     { _pXgafv = Nothing
     , _pUploadProtocol = Nothing
     , _pAccessToken = Nothing
@@ -123,6 +126,7 @@
     , _pCallback = Nothing
     }
 
+
 -- | V1 error format.
 pXgafv :: Lens' ProjectsRegionsClustersDiagnose (Maybe Xgafv)
 pXgafv = lens _pXgafv (\ s a -> s{_pXgafv = a})
@@ -168,7 +172,8 @@
   = lens _pCallback (\ s a -> s{_pCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsClustersDiagnose where
+           ProjectsRegionsClustersDiagnose
+         where
         type Rs ProjectsRegionsClustersDiagnose = Operation
         type Scopes ProjectsRegionsClustersDiagnose =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Get.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Get.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Get.hs
@@ -66,7 +66,8 @@
 -- | Gets the resource representation for a cluster in a project.
 --
 -- /See:/ 'projectsRegionsClustersGet' smart constructor.
-data ProjectsRegionsClustersGet = ProjectsRegionsClustersGet'
+data ProjectsRegionsClustersGet =
+  ProjectsRegionsClustersGet'
     { _prcgXgafv          :: !(Maybe Xgafv)
     , _prcgUploadProtocol :: !(Maybe Text)
     , _prcgAccessToken    :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _prcgRegion         :: !Text
     , _prcgProjectId      :: !Text
     , _prcgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersGet' 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 -- ^ 'prcgProjectId'
     -> ProjectsRegionsClustersGet
 projectsRegionsClustersGet pPrcgClusterName_ pPrcgRegion_ pPrcgProjectId_ =
-    ProjectsRegionsClustersGet'
+  ProjectsRegionsClustersGet'
     { _prcgXgafv = Nothing
     , _prcgUploadProtocol = Nothing
     , _prcgAccessToken = Nothing
@@ -112,6 +115,7 @@
     , _prcgProjectId = pPrcgProjectId_
     , _prcgCallback = Nothing
     }
+
 
 -- | V1 error format.
 prcgXgafv :: Lens' ProjectsRegionsClustersGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs
@@ -64,7 +64,8 @@
 -- if the resource exists and does not have a policy set.
 --
 -- /See:/ 'projectsRegionsClustersGetIAMPolicy' smart constructor.
-data ProjectsRegionsClustersGetIAMPolicy = ProjectsRegionsClustersGetIAMPolicy'
+data ProjectsRegionsClustersGetIAMPolicy =
+  ProjectsRegionsClustersGetIAMPolicy'
     { _prcgipXgafv          :: !(Maybe Xgafv)
     , _prcgipUploadProtocol :: !(Maybe Text)
     , _prcgipAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prcgipPayload        :: !GetIAMPolicyRequest
     , _prcgipResource       :: !Text
     , _prcgipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersGetIAMPolicy' 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 -- ^ 'prcgipResource'
     -> ProjectsRegionsClustersGetIAMPolicy
 projectsRegionsClustersGetIAMPolicy pPrcgipPayload_ pPrcgipResource_ =
-    ProjectsRegionsClustersGetIAMPolicy'
+  ProjectsRegionsClustersGetIAMPolicy'
     { _prcgipXgafv = Nothing
     , _prcgipUploadProtocol = Nothing
     , _prcgipAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _prcgipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prcgipXgafv :: Lens' ProjectsRegionsClustersGetIAMPolicy (Maybe Xgafv)
 prcgipXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_prcgipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsClustersGetIAMPolicy where
+           ProjectsRegionsClustersGetIAMPolicy
+         where
         type Rs ProjectsRegionsClustersGetIAMPolicy = Policy
         type Scopes ProjectsRegionsClustersGetIAMPolicy =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/List.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/List.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/List.hs
@@ -71,7 +71,8 @@
 -- | Lists all regions\/{region}\/clusters in a project.
 --
 -- /See:/ 'projectsRegionsClustersList' smart constructor.
-data ProjectsRegionsClustersList = ProjectsRegionsClustersList'
+data ProjectsRegionsClustersList =
+  ProjectsRegionsClustersList'
     { _prclXgafv          :: !(Maybe Xgafv)
     , _prclUploadProtocol :: !(Maybe Text)
     , _prclAccessToken    :: !(Maybe Text)
@@ -82,8 +83,10 @@
     , _prclProjectId      :: !Text
     , _prclPageSize       :: !(Maybe (Textual Int32))
     , _prclCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersList' 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 -- ^ 'prclProjectId'
     -> ProjectsRegionsClustersList
 projectsRegionsClustersList pPrclRegion_ pPrclProjectId_ =
-    ProjectsRegionsClustersList'
+  ProjectsRegionsClustersList'
     { _prclXgafv = Nothing
     , _prclUploadProtocol = Nothing
     , _prclAccessToken = Nothing
@@ -124,6 +127,7 @@
     , _prclPageSize = Nothing
     , _prclCallback = Nothing
     }
+
 
 -- | V1 error format.
 prclXgafv :: Lens' ProjectsRegionsClustersList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Patch.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Patch.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Patch.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/Patch.hs
@@ -77,7 +77,8 @@
 -- | Updates a cluster in a project.
 --
 -- /See:/ 'projectsRegionsClustersPatch' smart constructor.
-data ProjectsRegionsClustersPatch = ProjectsRegionsClustersPatch'
+data ProjectsRegionsClustersPatch =
+  ProjectsRegionsClustersPatch'
     { _prcpXgafv                       :: !(Maybe Xgafv)
     , _prcpRequestId                   :: !(Maybe Text)
     , _prcpUploadProtocol              :: !(Maybe Text)
@@ -90,8 +91,10 @@
     , _prcpRegion                      :: !Text
     , _prcpProjectId                   :: !Text
     , _prcpCallback                    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -126,7 +129,7 @@
     -> Text -- ^ 'prcpProjectId'
     -> ProjectsRegionsClustersPatch
 projectsRegionsClustersPatch pPrcpPayload_ pPrcpClusterName_ pPrcpRegion_ pPrcpProjectId_ =
-    ProjectsRegionsClustersPatch'
+  ProjectsRegionsClustersPatch'
     { _prcpXgafv = Nothing
     , _prcpRequestId = Nothing
     , _prcpUploadProtocol = Nothing
@@ -141,6 +144,7 @@
     , _prcpCallback = Nothing
     }
 
+
 -- | V1 error format.
 prcpXgafv :: Lens' ProjectsRegionsClustersPatch (Maybe Xgafv)
 prcpXgafv
@@ -176,12 +180,17 @@
 -- body would be set as follows: { \"config\":{ \"secondaryWorkerConfig\":{
 -- \"numInstances\":\"5\" } } } __Note:__ Currently, only the following
 -- fields can be updated:
--- >   ---------------------------------------------------- -------------------------------
--- >   __Mask__                                             __Purpose__
--- >   __/labels/__                                         Update labels
--- >   __/config.worker_config.num_instances/__             Resize primary worker group
--- >   __/config.secondary_worker_config.num_instances/__   Resize secondary worker group
--- >   ---------------------------------------------------- -------------------------------
+-- > +-----------------------------------+-----------------------------------+
+-- > | __Mask__                          | __Purpose__                       |
+-- > +-----------------------------------+-----------------------------------+
+-- > | __/labels/__                      | Update labels                     |
+-- > +-----------------------------------+-----------------------------------+
+-- > | __/config.worker_config.num_insta | Resize primary worker group       |
+-- > | nces/__                           |                                   |
+-- > +-----------------------------------+-----------------------------------+
+-- > | __/config.secondary_worker_config | Resize secondary worker group     |
+-- > | .num_instances/__                 |                                   |
+-- > +-----------------------------------+-----------------------------------+
 prcpUpdateMask :: Lens' ProjectsRegionsClustersPatch (Maybe GFieldMask)
 prcpUpdateMask
   = lens _prcpUpdateMask
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs
@@ -64,7 +64,8 @@
 -- existing policy.
 --
 -- /See:/ 'projectsRegionsClustersSetIAMPolicy' smart constructor.
-data ProjectsRegionsClustersSetIAMPolicy = ProjectsRegionsClustersSetIAMPolicy'
+data ProjectsRegionsClustersSetIAMPolicy =
+  ProjectsRegionsClustersSetIAMPolicy'
     { _prcsipXgafv          :: !(Maybe Xgafv)
     , _prcsipUploadProtocol :: !(Maybe Text)
     , _prcsipAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prcsipPayload        :: !SetIAMPolicyRequest
     , _prcsipResource       :: !Text
     , _prcsipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersSetIAMPolicy' 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 -- ^ 'prcsipResource'
     -> ProjectsRegionsClustersSetIAMPolicy
 projectsRegionsClustersSetIAMPolicy pPrcsipPayload_ pPrcsipResource_ =
-    ProjectsRegionsClustersSetIAMPolicy'
+  ProjectsRegionsClustersSetIAMPolicy'
     { _prcsipXgafv = Nothing
     , _prcsipUploadProtocol = Nothing
     , _prcsipAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _prcsipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prcsipXgafv :: Lens' ProjectsRegionsClustersSetIAMPolicy (Maybe Xgafv)
 prcsipXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_prcsipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsClustersSetIAMPolicy where
+           ProjectsRegionsClustersSetIAMPolicy
+         where
         type Rs ProjectsRegionsClustersSetIAMPolicy = Policy
         type Scopes ProjectsRegionsClustersSetIAMPolicy =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs
@@ -73,7 +73,8 @@
 -- warning.
 --
 -- /See:/ 'projectsRegionsClustersTestIAMPermissions' smart constructor.
-data ProjectsRegionsClustersTestIAMPermissions = ProjectsRegionsClustersTestIAMPermissions'
+data ProjectsRegionsClustersTestIAMPermissions =
+  ProjectsRegionsClustersTestIAMPermissions'
     { _prctipXgafv          :: !(Maybe Xgafv)
     , _prctipUploadProtocol :: !(Maybe Text)
     , _prctipAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _prctipPayload        :: !TestIAMPermissionsRequest
     , _prctipResource       :: !Text
     , _prctipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsClustersTestIAMPermissions' 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 -- ^ 'prctipResource'
     -> ProjectsRegionsClustersTestIAMPermissions
 projectsRegionsClustersTestIAMPermissions pPrctipPayload_ pPrctipResource_ =
-    ProjectsRegionsClustersTestIAMPermissions'
+  ProjectsRegionsClustersTestIAMPermissions'
     { _prctipXgafv = Nothing
     , _prctipUploadProtocol = Nothing
     , _prctipAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _prctipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prctipXgafv :: Lens' ProjectsRegionsClustersTestIAMPermissions (Maybe Xgafv)
 prctipXgafv
@@ -159,7 +163,8 @@
       (\ s a -> s{_prctipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsClustersTestIAMPermissions where
+           ProjectsRegionsClustersTestIAMPermissions
+         where
         type Rs ProjectsRegionsClustersTestIAMPermissions =
              TestIAMPermissionsResponse
         type Scopes ProjectsRegionsClustersTestIAMPermissions
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Cancel.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Cancel.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Cancel.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Cancel.hs
@@ -73,7 +73,8 @@
 -- regions\/{region}\/jobs.get.
 --
 -- /See:/ 'projectsRegionsJobsCancel' smart constructor.
-data ProjectsRegionsJobsCancel = ProjectsRegionsJobsCancel'
+data ProjectsRegionsJobsCancel =
+  ProjectsRegionsJobsCancel'
     { _prjcXgafv          :: !(Maybe Xgafv)
     , _prjcJobId          :: !Text
     , _prjcUploadProtocol :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _prjcRegion         :: !Text
     , _prjcProjectId      :: !Text
     , _prjcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsCancel' 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 -- ^ 'prjcProjectId'
     -> ProjectsRegionsJobsCancel
 projectsRegionsJobsCancel pPrjcJobId_ pPrjcPayload_ pPrjcRegion_ pPrjcProjectId_ =
-    ProjectsRegionsJobsCancel'
+  ProjectsRegionsJobsCancel'
     { _prjcXgafv = Nothing
     , _prjcJobId = pPrjcJobId_
     , _prjcUploadProtocol = Nothing
@@ -124,6 +127,7 @@
     , _prjcProjectId = pPrjcProjectId_
     , _prjcCallback = Nothing
     }
+
 
 -- | V1 error format.
 prjcXgafv :: Lens' ProjectsRegionsJobsCancel (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Delete.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Delete.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Delete.hs
@@ -68,7 +68,8 @@
 -- fails, and the response returns FAILED_PRECONDITION.
 --
 -- /See:/ 'projectsRegionsJobsDelete' smart constructor.
-data ProjectsRegionsJobsDelete = ProjectsRegionsJobsDelete'
+data ProjectsRegionsJobsDelete =
+  ProjectsRegionsJobsDelete'
     { _prjdXgafv          :: !(Maybe Xgafv)
     , _prjdJobId          :: !Text
     , _prjdUploadProtocol :: !(Maybe Text)
@@ -77,8 +78,10 @@
     , _prjdRegion         :: !Text
     , _prjdProjectId      :: !Text
     , _prjdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -104,7 +107,7 @@
     -> Text -- ^ 'prjdProjectId'
     -> ProjectsRegionsJobsDelete
 projectsRegionsJobsDelete pPrjdJobId_ pPrjdRegion_ pPrjdProjectId_ =
-    ProjectsRegionsJobsDelete'
+  ProjectsRegionsJobsDelete'
     { _prjdXgafv = Nothing
     , _prjdJobId = pPrjdJobId_
     , _prjdUploadProtocol = Nothing
@@ -114,6 +117,7 @@
     , _prjdProjectId = pPrjdProjectId_
     , _prjdCallback = Nothing
     }
+
 
 -- | V1 error format.
 prjdXgafv :: Lens' ProjectsRegionsJobsDelete (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Get.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Get.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Get.hs
@@ -66,7 +66,8 @@
 -- | Gets the resource representation for a job in a project.
 --
 -- /See:/ 'projectsRegionsJobsGet' smart constructor.
-data ProjectsRegionsJobsGet = ProjectsRegionsJobsGet'
+data ProjectsRegionsJobsGet =
+  ProjectsRegionsJobsGet'
     { _prjgXgafv          :: !(Maybe Xgafv)
     , _prjgJobId          :: !Text
     , _prjgUploadProtocol :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _prjgRegion         :: !Text
     , _prjgProjectId      :: !Text
     , _prjgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsGet' 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 -- ^ 'prjgProjectId'
     -> ProjectsRegionsJobsGet
 projectsRegionsJobsGet pPrjgJobId_ pPrjgRegion_ pPrjgProjectId_ =
-    ProjectsRegionsJobsGet'
+  ProjectsRegionsJobsGet'
     { _prjgXgafv = Nothing
     , _prjgJobId = pPrjgJobId_
     , _prjgUploadProtocol = Nothing
@@ -112,6 +115,7 @@
     , _prjgProjectId = pPrjgProjectId_
     , _prjgCallback = Nothing
     }
+
 
 -- | V1 error format.
 prjgXgafv :: Lens' ProjectsRegionsJobsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs
@@ -64,7 +64,8 @@
 -- if the resource exists and does not have a policy set.
 --
 -- /See:/ 'projectsRegionsJobsGetIAMPolicy' smart constructor.
-data ProjectsRegionsJobsGetIAMPolicy = ProjectsRegionsJobsGetIAMPolicy'
+data ProjectsRegionsJobsGetIAMPolicy =
+  ProjectsRegionsJobsGetIAMPolicy'
     { _prjgipXgafv          :: !(Maybe Xgafv)
     , _prjgipUploadProtocol :: !(Maybe Text)
     , _prjgipAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prjgipPayload        :: !GetIAMPolicyRequest
     , _prjgipResource       :: !Text
     , _prjgipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsGetIAMPolicy' 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 -- ^ 'prjgipResource'
     -> ProjectsRegionsJobsGetIAMPolicy
 projectsRegionsJobsGetIAMPolicy pPrjgipPayload_ pPrjgipResource_ =
-    ProjectsRegionsJobsGetIAMPolicy'
+  ProjectsRegionsJobsGetIAMPolicy'
     { _prjgipXgafv = Nothing
     , _prjgipUploadProtocol = Nothing
     , _prjgipAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _prjgipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prjgipXgafv :: Lens' ProjectsRegionsJobsGetIAMPolicy (Maybe Xgafv)
 prjgipXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_prjgipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsJobsGetIAMPolicy where
+           ProjectsRegionsJobsGetIAMPolicy
+         where
         type Rs ProjectsRegionsJobsGetIAMPolicy = Policy
         type Scopes ProjectsRegionsJobsGetIAMPolicy =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/List.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/List.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/List.hs
@@ -75,7 +75,8 @@
 -- | Lists regions\/{region}\/jobs in a project.
 --
 -- /See:/ 'projectsRegionsJobsList' smart constructor.
-data ProjectsRegionsJobsList = ProjectsRegionsJobsList'
+data ProjectsRegionsJobsList =
+  ProjectsRegionsJobsList'
     { _prjlJobStateMatcher :: !(Maybe Text)
     , _prjlXgafv           :: !(Maybe Xgafv)
     , _prjlUploadProtocol  :: !(Maybe Text)
@@ -88,8 +89,10 @@
     , _prjlProjectId       :: !Text
     , _prjlPageSize        :: !(Maybe (Textual Int32))
     , _prjlCallback        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -122,7 +125,7 @@
     -> Text -- ^ 'prjlProjectId'
     -> ProjectsRegionsJobsList
 projectsRegionsJobsList pPrjlRegion_ pPrjlProjectId_ =
-    ProjectsRegionsJobsList'
+  ProjectsRegionsJobsList'
     { _prjlJobStateMatcher = Nothing
     , _prjlXgafv = Nothing
     , _prjlUploadProtocol = Nothing
@@ -136,6 +139,7 @@
     , _prjlPageSize = Nothing
     , _prjlCallback = Nothing
     }
+
 
 -- | Optional. Specifies enumerated categories of jobs to list. (default =
 -- match ALL jobs).If filter is provided, jobStateMatcher will be ignored.
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs
@@ -70,7 +70,8 @@
 -- | Updates a job in a project.
 --
 -- /See:/ 'projectsRegionsJobsPatch' smart constructor.
-data ProjectsRegionsJobsPatch = ProjectsRegionsJobsPatch'
+data ProjectsRegionsJobsPatch =
+  ProjectsRegionsJobsPatch'
     { _prjpXgafv          :: !(Maybe Xgafv)
     , _prjpJobId          :: !Text
     , _prjpUploadProtocol :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _prjpRegion         :: !Text
     , _prjpProjectId      :: !Text
     , _prjpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsPatch' 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 -- ^ 'prjpProjectId'
     -> ProjectsRegionsJobsPatch
 projectsRegionsJobsPatch pPrjpJobId_ pPrjpPayload_ pPrjpRegion_ pPrjpProjectId_ =
-    ProjectsRegionsJobsPatch'
+  ProjectsRegionsJobsPatch'
     { _prjpXgafv = Nothing
     , _prjpJobId = pPrjpJobId_
     , _prjpUploadProtocol = Nothing
@@ -125,6 +128,7 @@
     , _prjpProjectId = pPrjpProjectId_
     , _prjpCallback = Nothing
     }
+
 
 -- | V1 error format.
 prjpXgafv :: Lens' ProjectsRegionsJobsPatch (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs
@@ -64,7 +64,8 @@
 -- existing policy.
 --
 -- /See:/ 'projectsRegionsJobsSetIAMPolicy' smart constructor.
-data ProjectsRegionsJobsSetIAMPolicy = ProjectsRegionsJobsSetIAMPolicy'
+data ProjectsRegionsJobsSetIAMPolicy =
+  ProjectsRegionsJobsSetIAMPolicy'
     { _prjsipXgafv          :: !(Maybe Xgafv)
     , _prjsipUploadProtocol :: !(Maybe Text)
     , _prjsipAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prjsipPayload        :: !SetIAMPolicyRequest
     , _prjsipResource       :: !Text
     , _prjsipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsSetIAMPolicy' 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 -- ^ 'prjsipResource'
     -> ProjectsRegionsJobsSetIAMPolicy
 projectsRegionsJobsSetIAMPolicy pPrjsipPayload_ pPrjsipResource_ =
-    ProjectsRegionsJobsSetIAMPolicy'
+  ProjectsRegionsJobsSetIAMPolicy'
     { _prjsipXgafv = Nothing
     , _prjsipUploadProtocol = Nothing
     , _prjsipAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _prjsipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prjsipXgafv :: Lens' ProjectsRegionsJobsSetIAMPolicy (Maybe Xgafv)
 prjsipXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_prjsipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsJobsSetIAMPolicy where
+           ProjectsRegionsJobsSetIAMPolicy
+         where
         type Rs ProjectsRegionsJobsSetIAMPolicy = Policy
         type Scopes ProjectsRegionsJobsSetIAMPolicy =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Submit.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Submit.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Submit.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Submit.hs
@@ -67,7 +67,8 @@
 -- | Submits a job to a cluster.
 --
 -- /See:/ 'projectsRegionsJobsSubmit' smart constructor.
-data ProjectsRegionsJobsSubmit = ProjectsRegionsJobsSubmit'
+data ProjectsRegionsJobsSubmit =
+  ProjectsRegionsJobsSubmit'
     { _prjsXgafv          :: !(Maybe Xgafv)
     , _prjsUploadProtocol :: !(Maybe Text)
     , _prjsAccessToken    :: !(Maybe Text)
@@ -76,8 +77,10 @@
     , _prjsRegion         :: !Text
     , _prjsProjectId      :: !Text
     , _prjsCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsSubmit' 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 -- ^ 'prjsProjectId'
     -> ProjectsRegionsJobsSubmit
 projectsRegionsJobsSubmit pPrjsPayload_ pPrjsRegion_ pPrjsProjectId_ =
-    ProjectsRegionsJobsSubmit'
+  ProjectsRegionsJobsSubmit'
     { _prjsXgafv = Nothing
     , _prjsUploadProtocol = Nothing
     , _prjsAccessToken = Nothing
@@ -113,6 +116,7 @@
     , _prjsProjectId = pPrjsProjectId_
     , _prjsCallback = Nothing
     }
+
 
 -- | V1 error format.
 prjsXgafv :: Lens' ProjectsRegionsJobsSubmit (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs
@@ -72,7 +72,8 @@
 -- warning.
 --
 -- /See:/ 'projectsRegionsJobsTestIAMPermissions' smart constructor.
-data ProjectsRegionsJobsTestIAMPermissions = ProjectsRegionsJobsTestIAMPermissions'
+data ProjectsRegionsJobsTestIAMPermissions =
+  ProjectsRegionsJobsTestIAMPermissions'
     { _prjtipXgafv          :: !(Maybe Xgafv)
     , _prjtipUploadProtocol :: !(Maybe Text)
     , _prjtipAccessToken    :: !(Maybe Text)
@@ -80,8 +81,10 @@
     , _prjtipPayload        :: !TestIAMPermissionsRequest
     , _prjtipResource       :: !Text
     , _prjtipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsJobsTestIAMPermissions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -104,7 +107,7 @@
     -> Text -- ^ 'prjtipResource'
     -> ProjectsRegionsJobsTestIAMPermissions
 projectsRegionsJobsTestIAMPermissions pPrjtipPayload_ pPrjtipResource_ =
-    ProjectsRegionsJobsTestIAMPermissions'
+  ProjectsRegionsJobsTestIAMPermissions'
     { _prjtipXgafv = Nothing
     , _prjtipUploadProtocol = Nothing
     , _prjtipAccessToken = Nothing
@@ -114,6 +117,7 @@
     , _prjtipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prjtipXgafv :: Lens' ProjectsRegionsJobsTestIAMPermissions (Maybe Xgafv)
 prjtipXgafv
@@ -158,7 +162,8 @@
       (\ s a -> s{_prjtipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsJobsTestIAMPermissions where
+           ProjectsRegionsJobsTestIAMPermissions
+         where
         type Rs ProjectsRegionsJobsTestIAMPermissions =
              TestIAMPermissionsResponse
         type Scopes ProjectsRegionsJobsTestIAMPermissions =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Cancel.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Cancel.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Cancel.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Cancel.hs
@@ -75,15 +75,18 @@
 -- 1, corresponding to Code.CANCELLED.
 --
 -- /See:/ 'projectsRegionsOperationsCancel' smart constructor.
-data ProjectsRegionsOperationsCancel = ProjectsRegionsOperationsCancel'
+data ProjectsRegionsOperationsCancel =
+  ProjectsRegionsOperationsCancel'
     { _procXgafv          :: !(Maybe Xgafv)
     , _procUploadProtocol :: !(Maybe Text)
     , _procAccessToken    :: !(Maybe Text)
     , _procUploadType     :: !(Maybe Text)
     , _procName           :: !Text
     , _procCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsCancel' 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 -- ^ 'procName'
     -> ProjectsRegionsOperationsCancel
 projectsRegionsOperationsCancel pProcName_ =
-    ProjectsRegionsOperationsCancel'
+  ProjectsRegionsOperationsCancel'
     { _procXgafv = Nothing
     , _procUploadProtocol = Nothing
     , _procAccessToken = Nothing
@@ -112,6 +115,7 @@
     , _procCallback = Nothing
     }
 
+
 -- | V1 error format.
 procXgafv :: Lens' ProjectsRegionsOperationsCancel (Maybe Xgafv)
 procXgafv
@@ -145,7 +149,8 @@
   = lens _procCallback (\ s a -> s{_procCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsOperationsCancel where
+           ProjectsRegionsOperationsCancel
+         where
         type Rs ProjectsRegionsOperationsCancel = Empty
         type Scopes ProjectsRegionsOperationsCancel =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Delete.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Delete.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Delete.hs
@@ -65,15 +65,18 @@
 -- google.rpc.Code.UNIMPLEMENTED.
 --
 -- /See:/ 'projectsRegionsOperationsDelete' smart constructor.
-data ProjectsRegionsOperationsDelete = ProjectsRegionsOperationsDelete'
+data ProjectsRegionsOperationsDelete =
+  ProjectsRegionsOperationsDelete'
     { _prodXgafv          :: !(Maybe Xgafv)
     , _prodUploadProtocol :: !(Maybe Text)
     , _prodAccessToken    :: !(Maybe Text)
     , _prodUploadType     :: !(Maybe Text)
     , _prodName           :: !Text
     , _prodCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     :: Text -- ^ 'prodName'
     -> ProjectsRegionsOperationsDelete
 projectsRegionsOperationsDelete pProdName_ =
-    ProjectsRegionsOperationsDelete'
+  ProjectsRegionsOperationsDelete'
     { _prodXgafv = Nothing
     , _prodUploadProtocol = Nothing
     , _prodAccessToken = Nothing
@@ -102,6 +105,7 @@
     , _prodCallback = Nothing
     }
 
+
 -- | V1 error format.
 prodXgafv :: Lens' ProjectsRegionsOperationsDelete (Maybe Xgafv)
 prodXgafv
@@ -135,7 +139,8 @@
   = lens _prodCallback (\ s a -> s{_prodCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsOperationsDelete where
+           ProjectsRegionsOperationsDelete
+         where
         type Rs ProjectsRegionsOperationsDelete = Empty
         type Scopes ProjectsRegionsOperationsDelete =
              '["https://www.googleapis.com/auth/cloud-platform"]
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Get.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Get.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/Get.hs
@@ -63,15 +63,18 @@
 -- API service.
 --
 -- /See:/ 'projectsRegionsOperationsGet' smart constructor.
-data ProjectsRegionsOperationsGet = ProjectsRegionsOperationsGet'
+data ProjectsRegionsOperationsGet =
+  ProjectsRegionsOperationsGet'
     { _progXgafv          :: !(Maybe Xgafv)
     , _progUploadProtocol :: !(Maybe Text)
     , _progAccessToken    :: !(Maybe Text)
     , _progUploadType     :: !(Maybe Text)
     , _progName           :: !Text
     , _progCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -91,7 +94,7 @@
     :: Text -- ^ 'progName'
     -> ProjectsRegionsOperationsGet
 projectsRegionsOperationsGet pProgName_ =
-    ProjectsRegionsOperationsGet'
+  ProjectsRegionsOperationsGet'
     { _progXgafv = Nothing
     , _progUploadProtocol = Nothing
     , _progAccessToken = Nothing
@@ -99,6 +102,7 @@
     , _progName = pProgName_
     , _progCallback = Nothing
     }
+
 
 -- | V1 error format.
 progXgafv :: Lens' ProjectsRegionsOperationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs
@@ -64,7 +64,8 @@
 -- if the resource exists and does not have a policy set.
 --
 -- /See:/ 'projectsRegionsOperationsGetIAMPolicy' smart constructor.
-data ProjectsRegionsOperationsGetIAMPolicy = ProjectsRegionsOperationsGetIAMPolicy'
+data ProjectsRegionsOperationsGetIAMPolicy =
+  ProjectsRegionsOperationsGetIAMPolicy'
     { _progipXgafv          :: !(Maybe Xgafv)
     , _progipUploadProtocol :: !(Maybe Text)
     , _progipAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _progipPayload        :: !GetIAMPolicyRequest
     , _progipResource       :: !Text
     , _progipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsGetIAMPolicy' 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 -- ^ 'progipResource'
     -> ProjectsRegionsOperationsGetIAMPolicy
 projectsRegionsOperationsGetIAMPolicy pProgipPayload_ pProgipResource_ =
-    ProjectsRegionsOperationsGetIAMPolicy'
+  ProjectsRegionsOperationsGetIAMPolicy'
     { _progipXgafv = Nothing
     , _progipUploadProtocol = Nothing
     , _progipAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _progipCallback = Nothing
     }
 
+
 -- | V1 error format.
 progipXgafv :: Lens' ProjectsRegionsOperationsGetIAMPolicy (Maybe Xgafv)
 progipXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_progipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsOperationsGetIAMPolicy where
+           ProjectsRegionsOperationsGetIAMPolicy
+         where
         type Rs ProjectsRegionsOperationsGetIAMPolicy =
              Policy
         type Scopes ProjectsRegionsOperationsGetIAMPolicy =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/List.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/List.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/List.hs
@@ -82,7 +82,8 @@
 -- the parent resource, without the operations collection id.
 --
 -- /See:/ 'projectsRegionsOperationsList' smart constructor.
-data ProjectsRegionsOperationsList = ProjectsRegionsOperationsList'
+data ProjectsRegionsOperationsList =
+  ProjectsRegionsOperationsList'
     { _prolXgafv          :: !(Maybe Xgafv)
     , _prolUploadProtocol :: !(Maybe Text)
     , _prolAccessToken    :: !(Maybe Text)
@@ -92,8 +93,10 @@
     , _prolPageToken      :: !(Maybe Text)
     , _prolPageSize       :: !(Maybe (Textual Int32))
     , _prolCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -119,7 +122,7 @@
     :: Text -- ^ 'prolName'
     -> ProjectsRegionsOperationsList
 projectsRegionsOperationsList pProlName_ =
-    ProjectsRegionsOperationsList'
+  ProjectsRegionsOperationsList'
     { _prolXgafv = Nothing
     , _prolUploadProtocol = Nothing
     , _prolAccessToken = Nothing
@@ -130,6 +133,7 @@
     , _prolPageSize = Nothing
     , _prolCallback = Nothing
     }
+
 
 -- | V1 error format.
 prolXgafv :: Lens' ProjectsRegionsOperationsList (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs
@@ -64,7 +64,8 @@
 -- existing policy.
 --
 -- /See:/ 'projectsRegionsOperationsSetIAMPolicy' smart constructor.
-data ProjectsRegionsOperationsSetIAMPolicy = ProjectsRegionsOperationsSetIAMPolicy'
+data ProjectsRegionsOperationsSetIAMPolicy =
+  ProjectsRegionsOperationsSetIAMPolicy'
     { _prosipXgafv          :: !(Maybe Xgafv)
     , _prosipUploadProtocol :: !(Maybe Text)
     , _prosipAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prosipPayload        :: !SetIAMPolicyRequest
     , _prosipResource       :: !Text
     , _prosipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsSetIAMPolicy' 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 -- ^ 'prosipResource'
     -> ProjectsRegionsOperationsSetIAMPolicy
 projectsRegionsOperationsSetIAMPolicy pProsipPayload_ pProsipResource_ =
-    ProjectsRegionsOperationsSetIAMPolicy'
+  ProjectsRegionsOperationsSetIAMPolicy'
     { _prosipXgafv = Nothing
     , _prosipUploadProtocol = Nothing
     , _prosipAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _prosipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prosipXgafv :: Lens' ProjectsRegionsOperationsSetIAMPolicy (Maybe Xgafv)
 prosipXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_prosipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsOperationsSetIAMPolicy where
+           ProjectsRegionsOperationsSetIAMPolicy
+         where
         type Rs ProjectsRegionsOperationsSetIAMPolicy =
              Policy
         type Scopes ProjectsRegionsOperationsSetIAMPolicy =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs
@@ -73,7 +73,8 @@
 -- warning.
 --
 -- /See:/ 'projectsRegionsOperationsTestIAMPermissions' smart constructor.
-data ProjectsRegionsOperationsTestIAMPermissions = ProjectsRegionsOperationsTestIAMPermissions'
+data ProjectsRegionsOperationsTestIAMPermissions =
+  ProjectsRegionsOperationsTestIAMPermissions'
     { _protipXgafv          :: !(Maybe Xgafv)
     , _protipUploadProtocol :: !(Maybe Text)
     , _protipAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _protipPayload        :: !TestIAMPermissionsRequest
     , _protipResource       :: !Text
     , _protipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsOperationsTestIAMPermissions' 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 -- ^ 'protipResource'
     -> ProjectsRegionsOperationsTestIAMPermissions
 projectsRegionsOperationsTestIAMPermissions pProtipPayload_ pProtipResource_ =
-    ProjectsRegionsOperationsTestIAMPermissions'
+  ProjectsRegionsOperationsTestIAMPermissions'
     { _protipXgafv = Nothing
     , _protipUploadProtocol = Nothing
     , _protipAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _protipCallback = Nothing
     }
 
+
 -- | V1 error format.
 protipXgafv :: Lens' ProjectsRegionsOperationsTestIAMPermissions (Maybe Xgafv)
 protipXgafv
@@ -159,7 +163,8 @@
       (\ s a -> s{_protipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsOperationsTestIAMPermissions where
+           ProjectsRegionsOperationsTestIAMPermissions
+         where
         type Rs ProjectsRegionsOperationsTestIAMPermissions =
              TestIAMPermissionsResponse
         type Scopes
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs
@@ -63,7 +63,8 @@
 -- | Creates new workflow template.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesCreate' smart constructor.
-data ProjectsRegionsWorkflowTemplatesCreate = ProjectsRegionsWorkflowTemplatesCreate'
+data ProjectsRegionsWorkflowTemplatesCreate =
+  ProjectsRegionsWorkflowTemplatesCreate'
     { _prwtcParent         :: !Text
     , _prwtcXgafv          :: !(Maybe Xgafv)
     , _prwtcUploadProtocol :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _prwtcUploadType     :: !(Maybe Text)
     , _prwtcPayload        :: !WorkflowTemplate
     , _prwtcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesCreate' 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 @@
     -> WorkflowTemplate -- ^ 'prwtcPayload'
     -> ProjectsRegionsWorkflowTemplatesCreate
 projectsRegionsWorkflowTemplatesCreate pPrwtcParent_ pPrwtcPayload_ =
-    ProjectsRegionsWorkflowTemplatesCreate'
+  ProjectsRegionsWorkflowTemplatesCreate'
     { _prwtcParent = pPrwtcParent_
     , _prwtcXgafv = Nothing
     , _prwtcUploadProtocol = Nothing
@@ -105,6 +108,7 @@
     , _prwtcCallback = Nothing
     }
 
+
 -- | Required. The \"resource name\" of the region, as described in
 -- https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
 -- projects\/{project_id}\/regions\/{region}
@@ -147,7 +151,8 @@
       (\ s a -> s{_prwtcCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesCreate where
+           ProjectsRegionsWorkflowTemplatesCreate
+         where
         type Rs ProjectsRegionsWorkflowTemplatesCreate =
              WorkflowTemplate
         type Scopes ProjectsRegionsWorkflowTemplatesCreate =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs
@@ -61,7 +61,8 @@
 -- | Deletes a workflow template. It does not cancel in-progress workflows.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesDelete' smart constructor.
-data ProjectsRegionsWorkflowTemplatesDelete = ProjectsRegionsWorkflowTemplatesDelete'
+data ProjectsRegionsWorkflowTemplatesDelete =
+  ProjectsRegionsWorkflowTemplatesDelete'
     { _prwtdXgafv          :: !(Maybe Xgafv)
     , _prwtdUploadProtocol :: !(Maybe Text)
     , _prwtdAccessToken    :: !(Maybe Text)
@@ -69,8 +70,10 @@
     , _prwtdName           :: !Text
     , _prwtdVersion        :: !(Maybe (Textual Int32))
     , _prwtdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,7 +95,7 @@
     :: Text -- ^ 'prwtdName'
     -> ProjectsRegionsWorkflowTemplatesDelete
 projectsRegionsWorkflowTemplatesDelete pPrwtdName_ =
-    ProjectsRegionsWorkflowTemplatesDelete'
+  ProjectsRegionsWorkflowTemplatesDelete'
     { _prwtdXgafv = Nothing
     , _prwtdUploadProtocol = Nothing
     , _prwtdAccessToken = Nothing
@@ -102,6 +105,7 @@
     , _prwtdCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwtdXgafv :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Xgafv)
 prwtdXgafv
@@ -147,7 +151,8 @@
       (\ s a -> s{_prwtdCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesDelete where
+           ProjectsRegionsWorkflowTemplatesDelete
+         where
         type Rs ProjectsRegionsWorkflowTemplatesDelete =
              Empty
         type Scopes ProjectsRegionsWorkflowTemplatesDelete =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs
@@ -64,7 +64,8 @@
 -- instantiated template by specifying optional version parameter.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesGet' smart constructor.
-data ProjectsRegionsWorkflowTemplatesGet = ProjectsRegionsWorkflowTemplatesGet'
+data ProjectsRegionsWorkflowTemplatesGet =
+  ProjectsRegionsWorkflowTemplatesGet'
     { _prwtgXgafv          :: !(Maybe Xgafv)
     , _prwtgUploadProtocol :: !(Maybe Text)
     , _prwtgAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prwtgName           :: !Text
     , _prwtgVersion        :: !(Maybe (Textual Int32))
     , _prwtgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesGet' 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 -- ^ 'prwtgName'
     -> ProjectsRegionsWorkflowTemplatesGet
 projectsRegionsWorkflowTemplatesGet pPrwtgName_ =
-    ProjectsRegionsWorkflowTemplatesGet'
+  ProjectsRegionsWorkflowTemplatesGet'
     { _prwtgXgafv = Nothing
     , _prwtgUploadProtocol = Nothing
     , _prwtgAccessToken = Nothing
@@ -105,6 +108,7 @@
     , _prwtgCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwtgXgafv :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Xgafv)
 prwtgXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_prwtgCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesGet where
+           ProjectsRegionsWorkflowTemplatesGet
+         where
         type Rs ProjectsRegionsWorkflowTemplatesGet =
              WorkflowTemplate
         type Scopes ProjectsRegionsWorkflowTemplatesGet =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs
@@ -65,7 +65,8 @@
 -- if the resource exists and does not have a policy set.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesGetIAMPolicy' smart constructor.
-data ProjectsRegionsWorkflowTemplatesGetIAMPolicy = ProjectsRegionsWorkflowTemplatesGetIAMPolicy'
+data ProjectsRegionsWorkflowTemplatesGetIAMPolicy =
+  ProjectsRegionsWorkflowTemplatesGetIAMPolicy'
     { _prwtgipXgafv          :: !(Maybe Xgafv)
     , _prwtgipUploadProtocol :: !(Maybe Text)
     , _prwtgipAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _prwtgipPayload        :: !GetIAMPolicyRequest
     , _prwtgipResource       :: !Text
     , _prwtgipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesGetIAMPolicy' 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 -- ^ 'prwtgipResource'
     -> ProjectsRegionsWorkflowTemplatesGetIAMPolicy
 projectsRegionsWorkflowTemplatesGetIAMPolicy pPrwtgipPayload_ pPrwtgipResource_ =
-    ProjectsRegionsWorkflowTemplatesGetIAMPolicy'
+  ProjectsRegionsWorkflowTemplatesGetIAMPolicy'
     { _prwtgipXgafv = Nothing
     , _prwtgipUploadProtocol = Nothing
     , _prwtgipAccessToken = Nothing
@@ -107,6 +110,7 @@
     , _prwtgipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwtgipXgafv :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy (Maybe Xgafv)
 prwtgipXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_prwtgipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesGetIAMPolicy where
+           ProjectsRegionsWorkflowTemplatesGetIAMPolicy
+         where
         type Rs ProjectsRegionsWorkflowTemplatesGetIAMPolicy
              = Policy
         type Scopes
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs
@@ -75,7 +75,8 @@
 -- completion, Operation.response will be Empty.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesInstantiate' smart constructor.
-data ProjectsRegionsWorkflowTemplatesInstantiate = ProjectsRegionsWorkflowTemplatesInstantiate'
+data ProjectsRegionsWorkflowTemplatesInstantiate =
+  ProjectsRegionsWorkflowTemplatesInstantiate'
     { _prwtiXgafv          :: !(Maybe Xgafv)
     , _prwtiUploadProtocol :: !(Maybe Text)
     , _prwtiAccessToken    :: !(Maybe Text)
@@ -83,8 +84,10 @@
     , _prwtiPayload        :: !InstantiateWorkflowTemplateRequest
     , _prwtiName           :: !Text
     , _prwtiCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesInstantiate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -107,7 +110,7 @@
     -> Text -- ^ 'prwtiName'
     -> ProjectsRegionsWorkflowTemplatesInstantiate
 projectsRegionsWorkflowTemplatesInstantiate pPrwtiPayload_ pPrwtiName_ =
-    ProjectsRegionsWorkflowTemplatesInstantiate'
+  ProjectsRegionsWorkflowTemplatesInstantiate'
     { _prwtiXgafv = Nothing
     , _prwtiUploadProtocol = Nothing
     , _prwtiAccessToken = Nothing
@@ -117,6 +120,7 @@
     , _prwtiCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwtiXgafv :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate (Maybe Xgafv)
 prwtiXgafv
@@ -159,7 +163,8 @@
       (\ s a -> s{_prwtiCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesInstantiate where
+           ProjectsRegionsWorkflowTemplatesInstantiate
+         where
         type Rs ProjectsRegionsWorkflowTemplatesInstantiate =
              Operation
         type Scopes
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs
@@ -82,7 +82,8 @@
 -- successful completion, Operation.response will be Empty.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesInstantiateInline' smart constructor.
-data ProjectsRegionsWorkflowTemplatesInstantiateInline = ProjectsRegionsWorkflowTemplatesInstantiateInline'
+data ProjectsRegionsWorkflowTemplatesInstantiateInline =
+  ProjectsRegionsWorkflowTemplatesInstantiateInline'
     { _prwtiiParent         :: !Text
     , _prwtiiXgafv          :: !(Maybe Xgafv)
     , _prwtiiRequestId      :: !(Maybe Text)
@@ -91,8 +92,10 @@
     , _prwtiiUploadType     :: !(Maybe Text)
     , _prwtiiPayload        :: !WorkflowTemplate
     , _prwtiiCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesInstantiateInline' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -117,7 +120,7 @@
     -> WorkflowTemplate -- ^ 'prwtiiPayload'
     -> ProjectsRegionsWorkflowTemplatesInstantiateInline
 projectsRegionsWorkflowTemplatesInstantiateInline pPrwtiiParent_ pPrwtiiPayload_ =
-    ProjectsRegionsWorkflowTemplatesInstantiateInline'
+  ProjectsRegionsWorkflowTemplatesInstantiateInline'
     { _prwtiiParent = pPrwtiiParent_
     , _prwtiiXgafv = Nothing
     , _prwtiiRequestId = Nothing
@@ -128,6 +131,7 @@
     , _prwtiiCallback = Nothing
     }
 
+
 -- | Required. The \"resource name\" of the workflow template region, as
 -- described in https:\/\/cloud.google.com\/apis\/design\/resource_names of
 -- the form projects\/{project_id}\/regions\/{region}
@@ -183,7 +187,7 @@
       (\ s a -> s{_prwtiiCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesInstantiateInline
+           ProjectsRegionsWorkflowTemplatesInstantiateInline
          where
         type Rs
                ProjectsRegionsWorkflowTemplatesInstantiateInline
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs
@@ -65,7 +65,8 @@
 -- | Lists workflows that match the specified filter in the request.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesList' smart constructor.
-data ProjectsRegionsWorkflowTemplatesList = ProjectsRegionsWorkflowTemplatesList'
+data ProjectsRegionsWorkflowTemplatesList =
+  ProjectsRegionsWorkflowTemplatesList'
     { _prwtlParent         :: !Text
     , _prwtlXgafv          :: !(Maybe Xgafv)
     , _prwtlUploadProtocol :: !(Maybe Text)
@@ -74,8 +75,10 @@
     , _prwtlPageToken      :: !(Maybe Text)
     , _prwtlPageSize       :: !(Maybe (Textual Int32))
     , _prwtlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesList' 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 -- ^ 'prwtlParent'
     -> ProjectsRegionsWorkflowTemplatesList
 projectsRegionsWorkflowTemplatesList pPrwtlParent_ =
-    ProjectsRegionsWorkflowTemplatesList'
+  ProjectsRegionsWorkflowTemplatesList'
     { _prwtlParent = pPrwtlParent_
     , _prwtlXgafv = Nothing
     , _prwtlUploadProtocol = Nothing
@@ -110,6 +113,7 @@
     , _prwtlCallback = Nothing
     }
 
+
 -- | Required. The \"resource name\" of the region, as described in
 -- https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
 -- projects\/{project_id}\/regions\/{region}
@@ -161,7 +165,8 @@
       (\ s a -> s{_prwtlCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesList where
+           ProjectsRegionsWorkflowTemplatesList
+         where
         type Rs ProjectsRegionsWorkflowTemplatesList =
              ListWorkflowTemplatesResponse
         type Scopes ProjectsRegionsWorkflowTemplatesList =
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs
@@ -65,7 +65,8 @@
 -- existing policy.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesSetIAMPolicy' smart constructor.
-data ProjectsRegionsWorkflowTemplatesSetIAMPolicy = ProjectsRegionsWorkflowTemplatesSetIAMPolicy'
+data ProjectsRegionsWorkflowTemplatesSetIAMPolicy =
+  ProjectsRegionsWorkflowTemplatesSetIAMPolicy'
     { _prwtsipXgafv          :: !(Maybe Xgafv)
     , _prwtsipUploadProtocol :: !(Maybe Text)
     , _prwtsipAccessToken    :: !(Maybe Text)
@@ -73,8 +74,10 @@
     , _prwtsipPayload        :: !SetIAMPolicyRequest
     , _prwtsipResource       :: !Text
     , _prwtsipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesSetIAMPolicy' 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 -- ^ 'prwtsipResource'
     -> ProjectsRegionsWorkflowTemplatesSetIAMPolicy
 projectsRegionsWorkflowTemplatesSetIAMPolicy pPrwtsipPayload_ pPrwtsipResource_ =
-    ProjectsRegionsWorkflowTemplatesSetIAMPolicy'
+  ProjectsRegionsWorkflowTemplatesSetIAMPolicy'
     { _prwtsipXgafv = Nothing
     , _prwtsipUploadProtocol = Nothing
     , _prwtsipAccessToken = Nothing
@@ -107,6 +110,7 @@
     , _prwtsipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwtsipXgafv :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy (Maybe Xgafv)
 prwtsipXgafv
@@ -150,7 +154,8 @@
       (\ s a -> s{_prwtsipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesSetIAMPolicy where
+           ProjectsRegionsWorkflowTemplatesSetIAMPolicy
+         where
         type Rs ProjectsRegionsWorkflowTemplatesSetIAMPolicy
              = Policy
         type Scopes
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs
@@ -73,7 +73,8 @@
 -- warning.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesTestIAMPermissions' smart constructor.
-data ProjectsRegionsWorkflowTemplatesTestIAMPermissions = ProjectsRegionsWorkflowTemplatesTestIAMPermissions'
+data ProjectsRegionsWorkflowTemplatesTestIAMPermissions =
+  ProjectsRegionsWorkflowTemplatesTestIAMPermissions'
     { _prwttipXgafv          :: !(Maybe Xgafv)
     , _prwttipUploadProtocol :: !(Maybe Text)
     , _prwttipAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _prwttipPayload        :: !TestIAMPermissionsRequest
     , _prwttipResource       :: !Text
     , _prwttipCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesTestIAMPermissions' 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 -- ^ 'prwttipResource'
     -> ProjectsRegionsWorkflowTemplatesTestIAMPermissions
 projectsRegionsWorkflowTemplatesTestIAMPermissions pPrwttipPayload_ pPrwttipResource_ =
-    ProjectsRegionsWorkflowTemplatesTestIAMPermissions'
+  ProjectsRegionsWorkflowTemplatesTestIAMPermissions'
     { _prwttipXgafv = Nothing
     , _prwttipUploadProtocol = Nothing
     , _prwttipAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _prwttipCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwttipXgafv :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions (Maybe Xgafv)
 prwttipXgafv
@@ -159,7 +163,7 @@
       (\ s a -> s{_prwttipCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesTestIAMPermissions
+           ProjectsRegionsWorkflowTemplatesTestIAMPermissions
          where
         type Rs
                ProjectsRegionsWorkflowTemplatesTestIAMPermissions
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs
--- a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs
@@ -64,7 +64,8 @@
 -- version that matches the current server version.
 --
 -- /See:/ 'projectsRegionsWorkflowTemplatesUpdate' smart constructor.
-data ProjectsRegionsWorkflowTemplatesUpdate = ProjectsRegionsWorkflowTemplatesUpdate'
+data ProjectsRegionsWorkflowTemplatesUpdate =
+  ProjectsRegionsWorkflowTemplatesUpdate'
     { _prwtuXgafv          :: !(Maybe Xgafv)
     , _prwtuUploadProtocol :: !(Maybe Text)
     , _prwtuAccessToken    :: !(Maybe Text)
@@ -72,8 +73,10 @@
     , _prwtuPayload        :: !WorkflowTemplate
     , _prwtuName           :: !Text
     , _prwtuCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsRegionsWorkflowTemplatesUpdate' 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 -- ^ 'prwtuName'
     -> ProjectsRegionsWorkflowTemplatesUpdate
 projectsRegionsWorkflowTemplatesUpdate pPrwtuPayload_ pPrwtuName_ =
-    ProjectsRegionsWorkflowTemplatesUpdate'
+  ProjectsRegionsWorkflowTemplatesUpdate'
     { _prwtuXgafv = Nothing
     , _prwtuUploadProtocol = Nothing
     , _prwtuAccessToken = Nothing
@@ -106,6 +109,7 @@
     , _prwtuCallback = Nothing
     }
 
+
 -- | V1 error format.
 prwtuXgafv :: Lens' ProjectsRegionsWorkflowTemplatesUpdate (Maybe Xgafv)
 prwtuXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_prwtuCallback = a})
 
 instance GoogleRequest
-         ProjectsRegionsWorkflowTemplatesUpdate where
+           ProjectsRegionsWorkflowTemplatesUpdate
+         where
         type Rs ProjectsRegionsWorkflowTemplatesUpdate =
              WorkflowTemplate
         type Scopes ProjectsRegionsWorkflowTemplatesUpdate =
diff --git a/gogol-dataproc.cabal b/gogol-dataproc.cabal
--- a/gogol-dataproc.cabal
+++ b/gogol-dataproc.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-dataproc
-version:               0.4.0
+version:               0.5.0
 synopsis:              Google Cloud Dataproc SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -86,5 +86,5 @@
         , Network.Google.Dataproc.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
