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
@@ -13,10 +13,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- An API for managing Hadoop-based clusters and jobs on Google Cloud
--- Platform.
+-- Manages Hadoop-based clusters and jobs on Google Cloud Platform.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference>
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference>
 module Network.Google.Dataproc
     (
     -- * Service Configuration
@@ -30,6 +29,36 @@
 
     -- * Resources
 
+    -- ** dataproc.projects.locations.workflowTemplates.create
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Create
+
+    -- ** dataproc.projects.locations.workflowTemplates.delete
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Delete
+
+    -- ** dataproc.projects.locations.workflowTemplates.get
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Get
+
+    -- ** dataproc.projects.locations.workflowTemplates.getIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.GetIAMPolicy
+
+    -- ** dataproc.projects.locations.workflowTemplates.instantiate
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Instantiate
+
+    -- ** dataproc.projects.locations.workflowTemplates.instantiateInline
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.InstantiateInline
+
+    -- ** dataproc.projects.locations.workflowTemplates.list
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.List
+
+    -- ** dataproc.projects.locations.workflowTemplates.setIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.SetIAMPolicy
+
+    -- ** dataproc.projects.locations.workflowTemplates.testIamPermissions
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.TestIAMPermissions
+
+    -- ** dataproc.projects.locations.workflowTemplates.update
+    , module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Update
+
     -- ** dataproc.projects.regions.clusters.create
     , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Create
 
@@ -42,12 +71,21 @@
     -- ** dataproc.projects.regions.clusters.get
     , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Get
 
+    -- ** dataproc.projects.regions.clusters.getIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.GetIAMPolicy
+
     -- ** dataproc.projects.regions.clusters.list
     , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.List
 
     -- ** dataproc.projects.regions.clusters.patch
     , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Patch
 
+    -- ** dataproc.projects.regions.clusters.setIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.SetIAMPolicy
+
+    -- ** dataproc.projects.regions.clusters.testIamPermissions
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.TestIAMPermissions
+
     -- ** dataproc.projects.regions.jobs.cancel
     , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Cancel
 
@@ -57,12 +95,24 @@
     -- ** dataproc.projects.regions.jobs.get
     , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Get
 
+    -- ** dataproc.projects.regions.jobs.getIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.GetIAMPolicy
+
     -- ** dataproc.projects.regions.jobs.list
     , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.List
 
+    -- ** dataproc.projects.regions.jobs.patch
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Patch
+
+    -- ** dataproc.projects.regions.jobs.setIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.SetIAMPolicy
+
     -- ** dataproc.projects.regions.jobs.submit
     , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Submit
 
+    -- ** dataproc.projects.regions.jobs.testIamPermissions
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.TestIAMPermissions
+
     -- ** dataproc.projects.regions.operations.cancel
     , module Network.Google.Resource.Dataproc.Projects.Regions.Operations.Cancel
 
@@ -72,9 +122,48 @@
     -- ** dataproc.projects.regions.operations.get
     , module Network.Google.Resource.Dataproc.Projects.Regions.Operations.Get
 
+    -- ** dataproc.projects.regions.operations.getIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Operations.GetIAMPolicy
+
     -- ** dataproc.projects.regions.operations.list
     , module Network.Google.Resource.Dataproc.Projects.Regions.Operations.List
 
+    -- ** dataproc.projects.regions.operations.setIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Operations.SetIAMPolicy
+
+    -- ** dataproc.projects.regions.operations.testIamPermissions
+    , module Network.Google.Resource.Dataproc.Projects.Regions.Operations.TestIAMPermissions
+
+    -- ** dataproc.projects.regions.workflowTemplates.create
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Create
+
+    -- ** dataproc.projects.regions.workflowTemplates.delete
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Delete
+
+    -- ** dataproc.projects.regions.workflowTemplates.get
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Get
+
+    -- ** dataproc.projects.regions.workflowTemplates.getIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.GetIAMPolicy
+
+    -- ** dataproc.projects.regions.workflowTemplates.instantiate
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Instantiate
+
+    -- ** dataproc.projects.regions.workflowTemplates.instantiateInline
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.InstantiateInline
+
+    -- ** dataproc.projects.regions.workflowTemplates.list
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.List
+
+    -- ** dataproc.projects.regions.workflowTemplates.setIamPolicy
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.SetIAMPolicy
+
+    -- ** dataproc.projects.regions.workflowTemplates.testIamPermissions
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.TestIAMPermissions
+
+    -- ** dataproc.projects.regions.workflowTemplates.update
+    , module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Update
+
     -- * Types
 
     -- ** JobReference
@@ -83,6 +172,12 @@
     , jrJobId
     , jrProjectId
 
+    -- ** JobStatusState
+    , JobStatusState (..)
+
+    -- ** WorkflowNodeState
+    , WorkflowNodeState (..)
+
     -- ** Status
     , Status
     , status
@@ -90,11 +185,6 @@
     , sCode
     , sMessage
 
-    -- ** OperationSchema
-    , OperationSchema
-    , operationSchema
-    , osAddtional
-
     -- ** PySparkJobProperties
     , PySparkJobProperties
     , pySparkJobProperties
@@ -112,6 +202,7 @@
     , igcDiskConfig
     , igcIsPreemptible
     , igcImageURI
+    , igcAccelerators
     , igcInstanceNames
     , igcManagedGroupConfig
     , igcMachineTypeURI
@@ -133,10 +224,34 @@
     , softwareConfigProperties
     , scpAddtional
 
+    -- ** WorkflowGraph
+    , WorkflowGraph
+    , workflowGraph
+    , wgNodes
+
+    -- ** ClusterOperation
+    , ClusterOperation
+    , clusterOperation
+    , coDone
+    , coError
+    , coOperationId
+
+    -- ** ClusterSelector
+    , ClusterSelector
+    , clusterSelector
+    , csZone
+    , csClusterLabels
+
+    -- ** JobScheduling
+    , JobScheduling
+    , jobScheduling
+    , jsMaxFailuresPerHour
+
     -- ** DiskConfig
     , DiskConfig
     , diskConfig
     , dcNumLocalSsds
+    , dcBootDiskType
     , dcBootDiskSizeGb
 
     -- ** ClusterOperationMetadataLabels
@@ -144,6 +259,14 @@
     , clusterOperationMetadataLabels
     , comlAddtional
 
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
     -- ** ListOperationsResponse
     , ListOperationsResponse
     , listOperationsResponse
@@ -155,6 +278,16 @@
     , hiveJobScriptVariables
     , hjsvAddtional
 
+    -- ** GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- ** WorkflowTemplatePlacement
+    , WorkflowTemplatePlacement
+    , workflowTemplatePlacement
+    , wtpClusterSelector
+    , wtpManagedCluster
+
     -- ** Cluster
     , Cluster
     , cluster
@@ -167,6 +300,17 @@
     , cProjectId
     , cStatusHistory
 
+    -- ** ManagedClusterLabels
+    , ManagedClusterLabels
+    , managedClusterLabels
+    , mclAddtional
+
+    -- ** ParameterValidation
+    , ParameterValidation
+    , parameterValidation
+    , pvRegex
+    , pvValues
+
     -- ** JobLabels
     , JobLabels
     , jobLabels
@@ -175,8 +319,12 @@
     -- ** SubmitJobRequest
     , SubmitJobRequest
     , submitJobRequest
+    , sjrRequestId
     , sjrJob
 
+    -- ** ClusterStatusSubState
+    , ClusterStatusSubState (..)
+
     -- ** ClusterMetrics
     , ClusterMetrics
     , clusterMetrics
@@ -206,6 +354,16 @@
     , hjContinueOnFailure
     , hjProperties
 
+    -- ** OrderedJobLabels
+    , OrderedJobLabels
+    , orderedJobLabels
+    , ojlAddtional
+
+    -- ** ClusterSelectorClusterLabels
+    , ClusterSelectorClusterLabels
+    , clusterSelectorClusterLabels
+    , csclAddtional
+
     -- ** SparkSQLJobScriptVariables
     , SparkSQLJobScriptVariables
     , sparkSQLJobScriptVariables
@@ -224,14 +382,35 @@
     , ccMasterConfig
     , ccGceClusterConfig
     , ccConfigBucket
+    , ccEncryptionConfig
     , ccSoftwareConfig
     , ccSecondaryWorkerConfig
 
+    -- ** InstantiateWorkflowTemplateRequest
+    , InstantiateWorkflowTemplateRequest
+    , instantiateWorkflowTemplateRequest
+    , iwtrRequestId
+    , iwtrVersion
+    , iwtrParameters
+
     -- ** HadoopJobProperties
     , HadoopJobProperties
     , hadoopJobProperties
     , hjpAddtional
 
+    -- ** WorkflowTemplate
+    , WorkflowTemplate
+    , workflowTemplate
+    , wtJobs
+    , wtUpdateTime
+    , wtName
+    , wtVersion
+    , wtParameters
+    , wtId
+    , wtLabels
+    , wtCreateTime
+    , wtPlacement
+
     -- ** ClusterOperationStatus
     , ClusterOperationStatus
     , clusterOperationStatus
@@ -250,6 +429,11 @@
     , sparkSQLJobProperties
     , ssqljpAddtional
 
+    -- ** WorkflowTemplateLabels
+    , WorkflowTemplateLabels
+    , workflowTemplateLabels
+    , wtlAddtional
+
     -- ** NodeInitializationAction
     , NodeInitializationAction
     , nodeInitializationAction
@@ -261,12 +445,30 @@
     , clusterMetricsYarnMetrics
     , cmymAddtional
 
+    -- ** RegexValidation
+    , RegexValidation
+    , regexValidation
+    , rvRegexes
+
     -- ** JobPlacement
     , JobPlacement
     , jobPlacement
     , jpClusterUuid
     , jpClusterName
 
+    -- ** SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprPolicy
+
+    -- ** TemplateParameter
+    , TemplateParameter
+    , templateParameter
+    , tpName
+    , tpValidation
+    , tpDescription
+    , tpFields
+
     -- ** GceClusterConfig
     , GceClusterConfig
     , gceClusterConfig
@@ -274,33 +476,51 @@
     , gccInternalIPOnly
     , gccNetworkURI
     , gccZoneURI
+    , gccServiceAccount
     , gccMetadata
     , gccServiceAccountScopes
     , gccTags
 
-    -- ** OperationStatus
-    , OperationStatus
-    , operationStatus
-    , osState
-    , osInnerState
-    , osStateStartTime
-    , osDetails
+    -- ** WorkflowMetadataState
+    , WorkflowMetadataState (..)
 
+    -- ** YarnApplicationState
+    , YarnApplicationState (..)
+
+    -- ** ClusterStatusState
+    , ClusterStatusState (..)
+
+    -- ** ListWorkflowTemplatesResponse
+    , ListWorkflowTemplatesResponse
+    , listWorkflowTemplatesResponse
+    , lwtrNextPageToken
+    , lwtrTemplates
+
     -- ** GceClusterConfigMetadata
     , GceClusterConfigMetadata
     , gceClusterConfigMetadata
     , gccmAddtional
 
+    -- ** ClusterOperationStatusState
+    , ClusterOperationStatusState (..)
+
     -- ** HiveJobProperties
     , HiveJobProperties
     , hiveJobProperties
     , hAddtional
 
-    -- ** DiagnoseClusterOutputLocation
-    , DiagnoseClusterOutputLocation
-    , diagnoseClusterOutputLocation
-    , dcolOutputURI
+    -- ** WorkflowMetadataParameters
+    , WorkflowMetadataParameters
+    , workflowMetadataParameters
+    , wmpAddtional
 
+    -- ** ManagedCluster
+    , ManagedCluster
+    , managedCluster
+    , mcConfig
+    , mcClusterName
+    , mcLabels
+
     -- ** ClusterLabels
     , ClusterLabels
     , clusterLabels
@@ -316,10 +536,12 @@
     , jReference
     , jSparkSQLJob
     , jHadoopJob
+    , jJobUuid
     , jYarnApplications
     , jLabels
     , jPysparkJob
     , jDriverOutputResourceURI
+    , jScheduling
     , jStatusHistory
     , jPlacement
     , jPigJob
@@ -340,17 +562,31 @@
     , hLoggingConfig
     , hProperties
 
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** InstantiateWorkflowTemplateRequestParameters
+    , InstantiateWorkflowTemplateRequestParameters
+    , instantiateWorkflowTemplateRequestParameters
+    , iwtrpAddtional
+
     -- ** ClusterOperationMetadata
     , ClusterOperationMetadata
     , clusterOperationMetadata
     , comStatus
     , comClusterUuid
+    , comWarnings
     , comClusterName
     , comLabels
     , comOperationType
     , comStatusHistory
     , comDescription
 
+    -- ** TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
     -- ** SparkSQLJob
     , SparkSQLJob
     , sparkSQLJob
@@ -373,11 +609,22 @@
     , ljrNextPageToken
     , ljrJobs
 
+    -- ** AcceleratorConfig
+    , AcceleratorConfig
+    , acceleratorConfig
+    , acAcceleratorCount
+    , acAcceleratorTypeURI
+
     -- ** SparkJobProperties
     , SparkJobProperties
     , sparkJobProperties
     , sjpAddtional
 
+    -- ** EncryptionConfig
+    , EncryptionConfig
+    , encryptionConfig
+    , ecGcePdKmsKeyName
+
     -- ** PySparkJob
     , PySparkJob
     , pySparkJob
@@ -396,12 +643,46 @@
     , mgcInstanceTemplateName
     , mgcInstanceGroupManagerName
 
+    -- ** TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
     -- ** ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
     , lcrNextPageToken
     , lcrClusters
 
+    -- ** ValueValidation
+    , ValueValidation
+    , valueValidation
+    , vvValues
+
+    -- ** JobStatusSubState
+    , JobStatusSubState (..)
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- ** OrderedJob
+    , OrderedJob
+    , orderedJob
+    , ojSparkJob
+    , ojStepId
+    , ojPrerequisiteStepIds
+    , ojHiveJob
+    , ojSparkSQLJob
+    , ojHadoopJob
+    , ojLabels
+    , ojPysparkJob
+    , ojScheduling
+    , ojPigJob
+
     -- ** CancelJobRequest
     , CancelJobRequest
     , cancelJobRequest
@@ -414,23 +695,13 @@
     -- ** OperationMetadata
     , OperationMetadata
     , operationMetadata
-    , omStatus
-    , omState
-    , omClusterUuid
-    , omInsertTime
-    , omStartTime
-    , omInnerState
-    , omEndTime
-    , omDetails
-    , omClusterName
-    , omOperationType
-    , omStatusHistory
-    , omDescription
+    , omAddtional
 
     -- ** JobStatus
     , JobStatus
     , jobStatus
     , jsState
+    , jsSubState
     , jsStateStartTime
     , jsDetails
 
@@ -444,6 +715,30 @@
     , clusterMetricsHdfsMetrics
     , cmhmAddtional
 
+    -- ** WorkflowNode
+    , WorkflowNode
+    , workflowNode
+    , wnState
+    , wnStepId
+    , wnJobId
+    , wnPrerequisiteStepIds
+    , wnError
+
+    -- ** WorkflowMetadata
+    , WorkflowMetadata
+    , workflowMetadata
+    , wmGraph
+    , wmState
+    , wmClusterUuid
+    , wmStartTime
+    , wmDeleteCluster
+    , wmCreateCluster
+    , wmVersion
+    , wmEndTime
+    , wmParameters
+    , wmClusterName
+    , wmTemplate
+
     -- ** OperationResponse
     , OperationResponse
     , operationResponse
@@ -458,6 +753,7 @@
     , ClusterStatus
     , clusterStatus
     , csState
+    , csSubState
     , csStateStartTime
     , csDetail
 
@@ -484,44 +780,122 @@
     , LoggingConfig
     , loggingConfig
     , lcDriverLogLevels
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
     ) where
 
 import           Network.Google.Dataproc.Types
 import           Network.Google.Prelude
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Create
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Delete
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Get
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.GetIAMPolicy
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Instantiate
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.InstantiateInline
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.List
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.SetIAMPolicy
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.TestIAMPermissions
+import           Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Update
 import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Create
 import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Delete
 import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Diagnose
 import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Get
+import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.GetIAMPolicy
 import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.List
 import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Patch
+import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.SetIAMPolicy
+import           Network.Google.Resource.Dataproc.Projects.Regions.Clusters.TestIAMPermissions
 import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Cancel
 import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Delete
 import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Get
+import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.GetIAMPolicy
 import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.List
+import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Patch
+import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.SetIAMPolicy
 import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Submit
+import           Network.Google.Resource.Dataproc.Projects.Regions.Jobs.TestIAMPermissions
 import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.Cancel
 import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.Delete
 import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.Get
+import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.GetIAMPolicy
 import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.List
+import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.SetIAMPolicy
+import           Network.Google.Resource.Dataproc.Projects.Regions.Operations.TestIAMPermissions
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Create
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Delete
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Get
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.GetIAMPolicy
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Instantiate
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.InstantiateInline
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.List
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.SetIAMPolicy
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.TestIAMPermissions
+import           Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Update
 
 {- $resources
 TODO
 -}
 
--- | Represents the entirety of the methods and resources available for the Google Cloud Dataproc API service.
+-- | Represents the entirety of the methods and resources available for the Cloud Dataproc API service.
 type DataprocAPI =
-     ProjectsRegionsJobsListResource :<|>
-       ProjectsRegionsJobsGetResource
+     ProjectsRegionsWorkflowTemplatesListResource :<|>
+       ProjectsRegionsWorkflowTemplatesInstantiateResource
+       :<|>
+       ProjectsRegionsWorkflowTemplatesInstantiateInlineResource
+       :<|>
+       ProjectsRegionsWorkflowTemplatesGetIAMPolicyResource
+       :<|> ProjectsRegionsWorkflowTemplatesGetResource
+       :<|> ProjectsRegionsWorkflowTemplatesCreateResource
+       :<|>
+       ProjectsRegionsWorkflowTemplatesSetIAMPolicyResource
+       :<|>
+       ProjectsRegionsWorkflowTemplatesTestIAMPermissionsResource
+       :<|> ProjectsRegionsWorkflowTemplatesDeleteResource
+       :<|> ProjectsRegionsWorkflowTemplatesUpdateResource
+       :<|> ProjectsRegionsJobsListResource
+       :<|> ProjectsRegionsJobsGetIAMPolicyResource
+       :<|> ProjectsRegionsJobsPatchResource
+       :<|> ProjectsRegionsJobsGetResource
        :<|> ProjectsRegionsJobsSubmitResource
+       :<|> ProjectsRegionsJobsSetIAMPolicyResource
+       :<|> ProjectsRegionsJobsTestIAMPermissionsResource
        :<|> ProjectsRegionsJobsCancelResource
        :<|> ProjectsRegionsJobsDeleteResource
        :<|> ProjectsRegionsOperationsListResource
+       :<|> ProjectsRegionsOperationsGetIAMPolicyResource
        :<|> ProjectsRegionsOperationsGetResource
+       :<|> ProjectsRegionsOperationsSetIAMPolicyResource
+       :<|>
+       ProjectsRegionsOperationsTestIAMPermissionsResource
        :<|> ProjectsRegionsOperationsCancelResource
        :<|> ProjectsRegionsOperationsDeleteResource
        :<|> ProjectsRegionsClustersDiagnoseResource
        :<|> ProjectsRegionsClustersListResource
+       :<|> ProjectsRegionsClustersGetIAMPolicyResource
        :<|> ProjectsRegionsClustersPatchResource
        :<|> ProjectsRegionsClustersGetResource
        :<|> ProjectsRegionsClustersCreateResource
+       :<|> ProjectsRegionsClustersSetIAMPolicyResource
+       :<|>
+       ProjectsRegionsClustersTestIAMPermissionsResource
        :<|> ProjectsRegionsClustersDeleteResource
+       :<|> ProjectsLocationsWorkflowTemplatesListResource
+       :<|>
+       ProjectsLocationsWorkflowTemplatesInstantiateResource
+       :<|>
+       ProjectsLocationsWorkflowTemplatesInstantiateInlineResource
+       :<|>
+       ProjectsLocationsWorkflowTemplatesGetIAMPolicyResource
+       :<|> ProjectsLocationsWorkflowTemplatesGetResource
+       :<|> ProjectsLocationsWorkflowTemplatesCreateResource
+       :<|>
+       ProjectsLocationsWorkflowTemplatesSetIAMPolicyResource
+       :<|>
+       ProjectsLocationsWorkflowTemplatesTestIAMPermissionsResource
+       :<|> ProjectsLocationsWorkflowTemplatesDeleteResource
+       :<|> ProjectsLocationsWorkflowTemplatesUpdateResource
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
@@ -28,6 +28,12 @@
     , jrJobId
     , jrProjectId
 
+    -- * JobStatusState
+    , JobStatusState (..)
+
+    -- * WorkflowNodeState
+    , WorkflowNodeState (..)
+
     -- * Status
     , Status
     , status
@@ -35,11 +41,6 @@
     , sCode
     , sMessage
 
-    -- * OperationSchema
-    , OperationSchema
-    , operationSchema
-    , osAddtional
-
     -- * PySparkJobProperties
     , PySparkJobProperties
     , pySparkJobProperties
@@ -57,6 +58,7 @@
     , igcDiskConfig
     , igcIsPreemptible
     , igcImageURI
+    , igcAccelerators
     , igcInstanceNames
     , igcManagedGroupConfig
     , igcMachineTypeURI
@@ -78,10 +80,34 @@
     , softwareConfigProperties
     , scpAddtional
 
+    -- * WorkflowGraph
+    , WorkflowGraph
+    , workflowGraph
+    , wgNodes
+
+    -- * ClusterOperation
+    , ClusterOperation
+    , clusterOperation
+    , coDone
+    , coError
+    , coOperationId
+
+    -- * ClusterSelector
+    , ClusterSelector
+    , clusterSelector
+    , csZone
+    , csClusterLabels
+
+    -- * JobScheduling
+    , JobScheduling
+    , jobScheduling
+    , jsMaxFailuresPerHour
+
     -- * DiskConfig
     , DiskConfig
     , diskConfig
     , dcNumLocalSsds
+    , dcBootDiskType
     , dcBootDiskSizeGb
 
     -- * ClusterOperationMetadataLabels
@@ -89,6 +115,14 @@
     , clusterOperationMetadataLabels
     , comlAddtional
 
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
     -- * ListOperationsResponse
     , ListOperationsResponse
     , listOperationsResponse
@@ -100,6 +134,16 @@
     , hiveJobScriptVariables
     , hjsvAddtional
 
+    -- * GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- * WorkflowTemplatePlacement
+    , WorkflowTemplatePlacement
+    , workflowTemplatePlacement
+    , wtpClusterSelector
+    , wtpManagedCluster
+
     -- * Cluster
     , Cluster
     , cluster
@@ -112,6 +156,17 @@
     , cProjectId
     , cStatusHistory
 
+    -- * ManagedClusterLabels
+    , ManagedClusterLabels
+    , managedClusterLabels
+    , mclAddtional
+
+    -- * ParameterValidation
+    , ParameterValidation
+    , parameterValidation
+    , pvRegex
+    , pvValues
+
     -- * JobLabels
     , JobLabels
     , jobLabels
@@ -120,8 +175,12 @@
     -- * SubmitJobRequest
     , SubmitJobRequest
     , submitJobRequest
+    , sjrRequestId
     , sjrJob
 
+    -- * ClusterStatusSubState
+    , ClusterStatusSubState (..)
+
     -- * ClusterMetrics
     , ClusterMetrics
     , clusterMetrics
@@ -151,6 +210,16 @@
     , hjContinueOnFailure
     , hjProperties
 
+    -- * OrderedJobLabels
+    , OrderedJobLabels
+    , orderedJobLabels
+    , ojlAddtional
+
+    -- * ClusterSelectorClusterLabels
+    , ClusterSelectorClusterLabels
+    , clusterSelectorClusterLabels
+    , csclAddtional
+
     -- * SparkSQLJobScriptVariables
     , SparkSQLJobScriptVariables
     , sparkSQLJobScriptVariables
@@ -169,14 +238,35 @@
     , ccMasterConfig
     , ccGceClusterConfig
     , ccConfigBucket
+    , ccEncryptionConfig
     , ccSoftwareConfig
     , ccSecondaryWorkerConfig
 
+    -- * InstantiateWorkflowTemplateRequest
+    , InstantiateWorkflowTemplateRequest
+    , instantiateWorkflowTemplateRequest
+    , iwtrRequestId
+    , iwtrVersion
+    , iwtrParameters
+
     -- * HadoopJobProperties
     , HadoopJobProperties
     , hadoopJobProperties
     , hjpAddtional
 
+    -- * WorkflowTemplate
+    , WorkflowTemplate
+    , workflowTemplate
+    , wtJobs
+    , wtUpdateTime
+    , wtName
+    , wtVersion
+    , wtParameters
+    , wtId
+    , wtLabels
+    , wtCreateTime
+    , wtPlacement
+
     -- * ClusterOperationStatus
     , ClusterOperationStatus
     , clusterOperationStatus
@@ -195,6 +285,11 @@
     , sparkSQLJobProperties
     , ssqljpAddtional
 
+    -- * WorkflowTemplateLabels
+    , WorkflowTemplateLabels
+    , workflowTemplateLabels
+    , wtlAddtional
+
     -- * NodeInitializationAction
     , NodeInitializationAction
     , nodeInitializationAction
@@ -206,12 +301,30 @@
     , clusterMetricsYarnMetrics
     , cmymAddtional
 
+    -- * RegexValidation
+    , RegexValidation
+    , regexValidation
+    , rvRegexes
+
     -- * JobPlacement
     , JobPlacement
     , jobPlacement
     , jpClusterUuid
     , jpClusterName
 
+    -- * SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprPolicy
+
+    -- * TemplateParameter
+    , TemplateParameter
+    , templateParameter
+    , tpName
+    , tpValidation
+    , tpDescription
+    , tpFields
+
     -- * GceClusterConfig
     , GceClusterConfig
     , gceClusterConfig
@@ -219,33 +332,51 @@
     , gccInternalIPOnly
     , gccNetworkURI
     , gccZoneURI
+    , gccServiceAccount
     , gccMetadata
     , gccServiceAccountScopes
     , gccTags
 
-    -- * OperationStatus
-    , OperationStatus
-    , operationStatus
-    , osState
-    , osInnerState
-    , osStateStartTime
-    , osDetails
+    -- * WorkflowMetadataState
+    , WorkflowMetadataState (..)
 
+    -- * YarnApplicationState
+    , YarnApplicationState (..)
+
+    -- * ClusterStatusState
+    , ClusterStatusState (..)
+
+    -- * ListWorkflowTemplatesResponse
+    , ListWorkflowTemplatesResponse
+    , listWorkflowTemplatesResponse
+    , lwtrNextPageToken
+    , lwtrTemplates
+
     -- * GceClusterConfigMetadata
     , GceClusterConfigMetadata
     , gceClusterConfigMetadata
     , gccmAddtional
 
+    -- * ClusterOperationStatusState
+    , ClusterOperationStatusState (..)
+
     -- * HiveJobProperties
     , HiveJobProperties
     , hiveJobProperties
     , hAddtional
 
-    -- * DiagnoseClusterOutputLocation
-    , DiagnoseClusterOutputLocation
-    , diagnoseClusterOutputLocation
-    , dcolOutputURI
+    -- * WorkflowMetadataParameters
+    , WorkflowMetadataParameters
+    , workflowMetadataParameters
+    , wmpAddtional
 
+    -- * ManagedCluster
+    , ManagedCluster
+    , managedCluster
+    , mcConfig
+    , mcClusterName
+    , mcLabels
+
     -- * ClusterLabels
     , ClusterLabels
     , clusterLabels
@@ -261,10 +392,12 @@
     , jReference
     , jSparkSQLJob
     , jHadoopJob
+    , jJobUuid
     , jYarnApplications
     , jLabels
     , jPysparkJob
     , jDriverOutputResourceURI
+    , jScheduling
     , jStatusHistory
     , jPlacement
     , jPigJob
@@ -285,17 +418,31 @@
     , hLoggingConfig
     , hProperties
 
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * InstantiateWorkflowTemplateRequestParameters
+    , InstantiateWorkflowTemplateRequestParameters
+    , instantiateWorkflowTemplateRequestParameters
+    , iwtrpAddtional
+
     -- * ClusterOperationMetadata
     , ClusterOperationMetadata
     , clusterOperationMetadata
     , comStatus
     , comClusterUuid
+    , comWarnings
     , comClusterName
     , comLabels
     , comOperationType
     , comStatusHistory
     , comDescription
 
+    -- * TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
     -- * SparkSQLJob
     , SparkSQLJob
     , sparkSQLJob
@@ -318,11 +465,22 @@
     , ljrNextPageToken
     , ljrJobs
 
+    -- * AcceleratorConfig
+    , AcceleratorConfig
+    , acceleratorConfig
+    , acAcceleratorCount
+    , acAcceleratorTypeURI
+
     -- * SparkJobProperties
     , SparkJobProperties
     , sparkJobProperties
     , sjpAddtional
 
+    -- * EncryptionConfig
+    , EncryptionConfig
+    , encryptionConfig
+    , ecGcePdKmsKeyName
+
     -- * PySparkJob
     , PySparkJob
     , pySparkJob
@@ -341,12 +499,46 @@
     , mgcInstanceTemplateName
     , mgcInstanceGroupManagerName
 
+    -- * TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
     -- * ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
     , lcrNextPageToken
     , lcrClusters
 
+    -- * ValueValidation
+    , ValueValidation
+    , valueValidation
+    , vvValues
+
+    -- * JobStatusSubState
+    , JobStatusSubState (..)
+
+    -- * Policy
+    , Policy
+    , policy
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- * OrderedJob
+    , OrderedJob
+    , orderedJob
+    , ojSparkJob
+    , ojStepId
+    , ojPrerequisiteStepIds
+    , ojHiveJob
+    , ojSparkSQLJob
+    , ojHadoopJob
+    , ojLabels
+    , ojPysparkJob
+    , ojScheduling
+    , ojPigJob
+
     -- * CancelJobRequest
     , CancelJobRequest
     , cancelJobRequest
@@ -359,23 +551,13 @@
     -- * OperationMetadata
     , OperationMetadata
     , operationMetadata
-    , omStatus
-    , omState
-    , omClusterUuid
-    , omInsertTime
-    , omStartTime
-    , omInnerState
-    , omEndTime
-    , omDetails
-    , omClusterName
-    , omOperationType
-    , omStatusHistory
-    , omDescription
+    , omAddtional
 
     -- * JobStatus
     , JobStatus
     , jobStatus
     , jsState
+    , jsSubState
     , jsStateStartTime
     , jsDetails
 
@@ -389,6 +571,30 @@
     , clusterMetricsHdfsMetrics
     , cmhmAddtional
 
+    -- * WorkflowNode
+    , WorkflowNode
+    , workflowNode
+    , wnState
+    , wnStepId
+    , wnJobId
+    , wnPrerequisiteStepIds
+    , wnError
+
+    -- * WorkflowMetadata
+    , WorkflowMetadata
+    , workflowMetadata
+    , wmGraph
+    , wmState
+    , wmClusterUuid
+    , wmStartTime
+    , wmDeleteCluster
+    , wmCreateCluster
+    , wmVersion
+    , wmEndTime
+    , wmParameters
+    , wmClusterName
+    , wmTemplate
+
     -- * OperationResponse
     , OperationResponse
     , operationResponse
@@ -403,6 +609,7 @@
     , ClusterStatus
     , clusterStatus
     , csState
+    , csSubState
     , csStateStartTime
     , csDetail
 
@@ -429,13 +636,20 @@
     , LoggingConfig
     , loggingConfig
     , lcDriverLogLevels
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
     ) where
 
 import           Network.Google.Dataproc.Types.Product
 import           Network.Google.Dataproc.Types.Sum
 import           Network.Google.Prelude
 
--- | Default request referring to version 'v1' of the Google Cloud Dataproc API. This contains the host and root path used as a starting point for constructing service requests.
+-- | Default request referring to version 'v1' of the Cloud Dataproc API. This contains the host and root path used as a starting point for constructing service requests.
 dataprocService :: ServiceConfig
 dataprocService
   = defaultService (ServiceId "dataproc:v1")
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
@@ -43,3748 +43,5503 @@
     , _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 512 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 needs # Overview The \`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\` which can be used for common error conditions. #
--- Language mapping The \`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 uses The 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
--- purpose. - 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 will be a common
--- set of message types for APIs to use.
-sDetails :: Lens' Status [StatusDetailsItem]
-sDetails
-  = lens _sDetails (\ s a -> s{_sDetails = a}) .
-      _Default
-      . _Coerce
-
--- | The status code, which should be an enum value of google.rpc.Code.
-sCode :: Lens' Status (Maybe Int32)
-sCode
-  = lens _sCode (\ s a -> s{_sCode = a}) .
-      mapping _Coerce
-
--- | A developer-facing error message, which should be in English. Any
--- user-facing error message should be localized and sent in the
--- google.rpc.Status.details field, or localized by the client.
-sMessage :: Lens' Status (Maybe Text)
-sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
-
-instance FromJSON Status where
-        parseJSON
-          = withObject "Status"
-              (\ o ->
-                 Status' <$>
-                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON Status where
-        toJSON Status'{..}
-          = object
-              (catMaybes
-                 [("details" .=) <$> _sDetails,
-                  ("code" .=) <$> _sCode,
-                  ("message" .=) <$> _sMessage])
-
--- | Service-specific metadata associated with the operation. It typically
--- contains progress information and common metadata such as create time.
--- Some services might not provide such metadata. Any method that returns a
--- long-running operation should document the metadata type, if any.
---
--- /See:/ 'operationSchema' smart constructor.
-newtype OperationSchema = OperationSchema'
-    { _osAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'osAddtional'
-operationSchema
-    :: HashMap Text JSONValue -- ^ 'osAddtional'
-    -> OperationSchema
-operationSchema pOsAddtional_ =
-    OperationSchema'
-    { _osAddtional = _Coerce # pOsAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-osAddtional :: Lens' OperationSchema (HashMap Text JSONValue)
-osAddtional
-  = lens _osAddtional (\ s a -> s{_osAddtional = a}) .
-      _Coerce
-
-instance FromJSON OperationSchema where
-        parseJSON
-          = withObject "OperationSchema"
-              (\ o -> OperationSchema' <$> (parseJSONObject o))
-
-instance ToJSON OperationSchema where
-        toJSON = toJSON . _osAddtional
-
--- | [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 Google 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 Google 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)
-    , _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'
---
--- * 'igcInstanceNames'
---
--- * 'igcManagedGroupConfig'
---
--- * 'igcMachineTypeURI'
-instanceGroupConfig
-    :: InstanceGroupConfig
-instanceGroupConfig =
-    InstanceGroupConfig'
-    { _igcNumInstances = Nothing
-    , _igcDiskConfig = Nothing
-    , _igcIsPreemptible = Nothing
-    , _igcImageURI = Nothing
-    , _igcInstanceNames = Nothing
-    , _igcManagedGroupConfig = Nothing
-    , _igcMachineTypeURI = Nothing
-    }
-
--- | [Required] 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})
-
--- | [Output-only] The Google Compute Engine image resource used for cluster
--- instances. Inferred from \`SoftwareConfig.image_version\`.
-igcImageURI :: Lens' InstanceGroupConfig (Maybe Text)
-igcImageURI
-  = lens _igcImageURI (\ s a -> s{_igcImageURI = a})
-
--- | [Optional] The list of instance names. Cloud Dataproc derives the names
--- from \`cluster_name\`, \`num_instances\`, and the instance group if not
--- set by user (recommended practice is to let Cloud Dataproc derive the
--- name).
-igcInstanceNames :: Lens' InstanceGroupConfig [Text]
-igcInstanceNames
-  = lens _igcInstanceNames
-      (\ s a -> s{_igcInstanceNames = a})
-      . _Default
-      . _Coerce
-
--- | [Output-only] The config for Google 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})
-
--- | [Required] The Google Compute Engine machine type used for cluster
--- instances. Example:
--- \`https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/zones\/us-east1-a\/machineTypes\/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 .:? "instanceNames" .!= mempty)
-                     <*> (o .:? "managedGroupConfig")
-                     <*> (o .:? "machineTypeUri"))
-
-instance ToJSON InstanceGroupConfig where
-        toJSON InstanceGroupConfig'{..}
-          = object
-              (catMaybes
-                 [("numInstances" .=) <$> _igcNumInstances,
-                  ("diskConfig" .=) <$> _igcDiskConfig,
-                  ("isPreemptible" .=) <$> _igcIsPreemptible,
-                  ("imageUri" .=) <$> _igcImageURI,
-                  ("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: * core: \`core-site.xml\` * hdfs: \`hdfs-site.xml\` * mapred:
--- \`mapred-site.xml\` * yarn: \`yarn-site.xml\` * hive: \`hive-site.xml\`
--- * pig: \`pig.properties\` * spark: \`spark-defaults.conf\`
---
--- /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
-
--- | Specifies the config of disk options for a group of VM instances.
---
--- /See:/ 'diskConfig' smart constructor.
-data DiskConfig = DiskConfig'
-    { _dcNumLocalSsds   :: !(Maybe (Textual Int32))
-    , _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'
---
--- * 'dcBootDiskSizeGb'
-diskConfig
-    :: DiskConfig
-diskConfig =
-    DiskConfig'
-    { _dcNumLocalSsds = 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] 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 .:? "bootDiskSizeGb"))
-
-instance ToJSON DiskConfig where
-        toJSON DiskConfig'{..}
-          = object
-              (catMaybes
-                 [("numLocalSsds" .=) <$> _dcNumLocalSsds,
-                  ("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
-
--- | 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
-
--- | Describes the identifying information, config, and status of a cluster
--- of Google 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 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.
-newtype SubmitJobRequest = SubmitJobRequest'
-    { _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:
---
--- * 'sjrJob'
-submitJobRequest
-    :: SubmitJobRequest
-submitJobRequest =
-    SubmitJobRequest'
-    { _sjrJob = Nothing
-    }
-
--- | [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 .:? "job"))
-
-instance ToJSON SubmitJobRequest where
-        toJSON SubmitJobRequest'{..}
-          = object (catMaybes [("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 OperationSchema)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Operation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oDone'
---
--- * 'oError'
---
--- * 'oResponse'
---
--- * 'oName'
---
--- * 'oMetadata'
-operation
-    :: Operation
-operation =
-    Operation'
-    { _oDone = Nothing
-    , _oError = Nothing
-    , _oResponse = Nothing
-    , _oName = Nothing
-    , _oMetadata = Nothing
-    }
-
--- | If the value is \`false\`, it means the operation is still in progress.
--- If true, the operation is completed, and either \`error\` or
--- \`response\` is available.
-oDone :: Lens' Operation (Maybe Bool)
-oDone = lens _oDone (\ s a -> s{_oDone = a})
-
--- | The error result of the operation in case of failure or cancellation.
-oError :: Lens' Operation (Maybe Status)
-oError = lens _oError (\ s a -> s{_oError = a})
-
--- | The normal response of the operation in case of success. If the original
--- method returns no data on success, such as \`Delete\`, the response is
--- \`google.protobuf.Empty\`. If the original method is standard
--- \`Get\`\/\`Create\`\/\`Update\`, the response should be the resource.
--- For other methods, the response should have the type \`XxxResponse\`,
--- where \`Xxx\` is the original method name. For example, if the original
--- method name is \`TakeSnapshot()\`, the inferred response type is
--- \`TakeSnapshotResponse\`.
-oResponse :: Lens' Operation (Maybe OperationResponse)
-oResponse
-  = lens _oResponse (\ s a -> s{_oResponse = a})
-
--- | The server-assigned name, which is only unique within the same service
--- that originally returns it. If you use the default HTTP mapping, the
--- \`name\` should have the format of \`operations\/some\/unique\/name\`.
-oName :: Lens' Operation (Maybe Text)
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | Service-specific metadata associated with the operation. It typically
--- contains progress information and common metadata such as create time.
--- Some services might not provide such metadata. Any method that returns a
--- long-running operation should document the metadata type, if any.
-oMetadata :: Lens' Operation (Maybe OperationSchema)
-oMetadata
-  = lens _oMetadata (\ s a -> s{_oMetadata = a})
-
-instance FromJSON Operation where
-        parseJSON
-          = withObject "Operation"
-              (\ o ->
-                 Operation' <$>
-                   (o .:? "done") <*> (o .:? "error") <*>
-                     (o .:? "response")
-                     <*> (o .:? "name")
-                     <*> (o .:? "metadata"))
-
-instance ToJSON Operation where
-        toJSON Operation'{..}
-          = object
-              (catMaybes
-                 [("done" .=) <$> _oDone, ("error" .=) <$> _oError,
-                  ("response" .=) <$> _oResponse,
-                  ("name" .=) <$> _oName,
-                  ("metadata" .=) <$> _oMetadata])
-
--- | 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] 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)
-    , _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'
---
--- * 'ccSoftwareConfig'
---
--- * 'ccSecondaryWorkerConfig'
-clusterConfig
-    :: ClusterConfig
-clusterConfig =
-    ClusterConfig'
-    { _ccWorkerConfig = Nothing
-    , _ccInitializationActions = Nothing
-    , _ccMasterConfig = Nothing
-    , _ccGceClusterConfig = Nothing
-    , _ccConfigBucket = Nothing
-    , _ccSoftwareConfig = Nothing
-    , _ccSecondaryWorkerConfig = Nothing
-    }
-
--- | [Optional] The Google 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 Google 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 Google 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 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] The config settings for software inside the cluster.
-ccSoftwareConfig :: Lens' ClusterConfig (Maybe SoftwareConfig)
-ccSoftwareConfig
-  = lens _ccSoftwareConfig
-      (\ s a -> s{_ccSoftwareConfig = a})
-
--- | [Optional] The Google 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 .:? "softwareConfig")
-                     <*> (o .:? "secondaryWorkerConfig"))
-
-instance ToJSON ClusterConfig where
-        toJSON ClusterConfig'{..}
-          = object
-              (catMaybes
-                 [("workerConfig" .=) <$> _ccWorkerConfig,
-                  ("initializationActions" .=) <$>
-                    _ccInitializationActions,
-                  ("masterConfig" .=) <$> _ccMasterConfig,
-                  ("gceClusterConfig" .=) <$> _ccGceClusterConfig,
-                  ("configBucket" .=) <$> _ccConfigBucket,
-                  ("softwareConfig" .=) <$> _ccSoftwareConfig,
-                  ("secondaryWorkerConfig" .=) <$>
-                    _ccSecondaryWorkerConfig])
-
--- | [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
-
--- | The status of the operation.
---
--- /See:/ 'clusterOperationStatus' smart constructor.
-data ClusterOperationStatus = ClusterOperationStatus'
-    { _cosState          :: !(Maybe Text)
-    , _cosInnerState     :: !(Maybe Text)
-    , _cosStateStartTime :: !(Maybe Text)
-    , _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 Text)
-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 Text)
-cosStateStartTime
-  = lens _cosStateStartTime
-      (\ s a -> s{_cosStateStartTime = a})
-
--- | [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
-
--- | 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 Text)
-    , _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 Text)
-niaExecutionTimeout
-  = lens _niaExecutionTimeout
-      (\ s a -> s{_niaExecutionTimeout = a})
-
--- | [Required] Google 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
-
--- | 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])
-
--- | Common config settings for resources of Google 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)
-    , _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'
---
--- * 'gccMetadata'
---
--- * 'gccServiceAccountScopes'
---
--- * 'gccTags'
-gceClusterConfig
-    :: GceClusterConfig
-gceClusterConfig =
-    GceClusterConfig'
-    { _gccSubnetworkURI = Nothing
-    , _gccInternalIPOnly = Nothing
-    , _gccNetworkURI = Nothing
-    , _gccZoneURI = Nothing
-    , _gccMetadata = Nothing
-    , _gccServiceAccountScopes = Nothing
-    , _gccTags = Nothing
-    }
-
--- | [Optional] The Google Compute Engine subnetwork to be used for machine
--- communications. Cannot be specified with network_uri. Example:
--- \`https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/regions\/us-east1\/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 Google 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](\/compute\/docs\/subnetworks)
--- for more information). Example:
--- \`https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/regions\/global\/default\`.
-gccNetworkURI :: Lens' GceClusterConfig (Maybe Text)
-gccNetworkURI
-  = lens _gccNetworkURI
-      (\ s a -> s{_gccNetworkURI = a})
-
--- | [Required] The zone where the Google Compute Engine cluster will be
--- located. Example:
--- \`https:\/\/www.googleapis.com\/compute\/v1\/projects\/[project_id]\/zones\/[zone]\`.
-gccZoneURI :: Lens' GceClusterConfig (Maybe Text)
-gccZoneURI
-  = lens _gccZoneURI (\ s a -> s{_gccZoneURI = a})
-
--- | The Google 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 Google
--- 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.write If 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 Google Compute Engine tags to add to all instances (see [Tagging
--- instances](\/compute\/docs\/label-or-tag-resources#tags)).
-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 .:? "metadata")
-                     <*> (o .:? "serviceAccountScopes" .!= mempty)
-                     <*> (o .:? "tags" .!= mempty))
-
-instance ToJSON GceClusterConfig where
-        toJSON GceClusterConfig'{..}
-          = object
-              (catMaybes
-                 [("subnetworkUri" .=) <$> _gccSubnetworkURI,
-                  ("internalIpOnly" .=) <$> _gccInternalIPOnly,
-                  ("networkUri" .=) <$> _gccNetworkURI,
-                  ("zoneUri" .=) <$> _gccZoneURI,
-                  ("metadata" .=) <$> _gccMetadata,
-                  ("serviceAccountScopes" .=) <$>
-                    _gccServiceAccountScopes,
-                  ("tags" .=) <$> _gccTags])
-
--- | The status of the operation.
---
--- /See:/ 'operationStatus' smart constructor.
-data OperationStatus = OperationStatus'
-    { _osState          :: !(Maybe Text)
-    , _osInnerState     :: !(Maybe Text)
-    , _osStateStartTime :: !(Maybe Text)
-    , _osDetails        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'osState'
---
--- * 'osInnerState'
---
--- * 'osStateStartTime'
---
--- * 'osDetails'
-operationStatus
-    :: OperationStatus
-operationStatus =
-    OperationStatus'
-    { _osState = Nothing
-    , _osInnerState = Nothing
-    , _osStateStartTime = Nothing
-    , _osDetails = Nothing
-    }
-
--- | A message containing the operation state.
-osState :: Lens' OperationStatus (Maybe Text)
-osState = lens _osState (\ s a -> s{_osState = a})
-
--- | A message containing the detailed operation state.
-osInnerState :: Lens' OperationStatus (Maybe Text)
-osInnerState
-  = lens _osInnerState (\ s a -> s{_osInnerState = a})
-
--- | The time this state was entered.
-osStateStartTime :: Lens' OperationStatus (Maybe Text)
-osStateStartTime
-  = lens _osStateStartTime
-      (\ s a -> s{_osStateStartTime = a})
-
--- | A message containing any operation metadata details.
-osDetails :: Lens' OperationStatus (Maybe Text)
-osDetails
-  = lens _osDetails (\ s a -> s{_osDetails = a})
-
-instance FromJSON OperationStatus where
-        parseJSON
-          = withObject "OperationStatus"
-              (\ o ->
-                 OperationStatus' <$>
-                   (o .:? "state") <*> (o .:? "innerState") <*>
-                     (o .:? "stateStartTime")
-                     <*> (o .:? "details"))
-
-instance ToJSON OperationStatus where
-        toJSON OperationStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _osState,
-                  ("innerState" .=) <$> _osInnerState,
-                  ("stateStartTime" .=) <$> _osStateStartTime,
-                  ("details" .=) <$> _osDetails])
-
--- | The Google 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
-
--- | The location where output from diagnostic command can be found.
---
--- /See:/ 'diagnoseClusterOutputLocation' smart constructor.
-newtype DiagnoseClusterOutputLocation = DiagnoseClusterOutputLocation'
-    { _dcolOutputURI :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DiagnoseClusterOutputLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcolOutputURI'
-diagnoseClusterOutputLocation
-    :: DiagnoseClusterOutputLocation
-diagnoseClusterOutputLocation =
-    DiagnoseClusterOutputLocation'
-    { _dcolOutputURI = Nothing
-    }
-
--- | [Output-only] The Google Cloud Storage URI of the diagnostic output.
--- This will be a plain text file with summary of collected diagnostics.
-dcolOutputURI :: Lens' DiagnoseClusterOutputLocation (Maybe Text)
-dcolOutputURI
-  = lens _dcolOutputURI
-      (\ s a -> s{_dcolOutputURI = a})
-
-instance FromJSON DiagnoseClusterOutputLocation where
-        parseJSON
-          = withObject "DiagnoseClusterOutputLocation"
-              (\ o ->
-                 DiagnoseClusterOutputLocation' <$>
-                   (o .:? "outputUri"))
-
-instance ToJSON DiagnoseClusterOutputLocation where
-        toJSON DiagnoseClusterOutputLocation'{..}
-          = object
-              (catMaybes [("outputUri" .=) <$> _dcolOutputURI])
-
--- | [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)
-    , _jYarnApplications        :: !(Maybe [YarnApplication])
-    , _jLabels                  :: !(Maybe JobLabels)
-    , _jPysparkJob              :: !(Maybe PySparkJob)
-    , _jDriverOutputResourceURI :: !(Maybe Text)
-    , _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'
---
--- * 'jYarnApplications'
---
--- * 'jLabels'
---
--- * 'jPysparkJob'
---
--- * 'jDriverOutputResourceURI'
---
--- * 'jStatusHistory'
---
--- * 'jPlacement'
---
--- * 'jPigJob'
-job
-    :: Job
-job =
-    Job'
-    { _jSparkJob = Nothing
-    , _jStatus = Nothing
-    , _jDriverControlFilesURI = Nothing
-    , _jHiveJob = Nothing
-    , _jReference = Nothing
-    , _jSparkSQLJob = Nothing
-    , _jHadoopJob = Nothing
-    , _jYarnApplications = Nothing
-    , _jLabels = Nothing
-    , _jPysparkJob = Nothing
-    , _jDriverOutputResourceURI = 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] 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})
-
--- | [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 .:? "yarnApplications" .!= mempty)
-                     <*> (o .:? "labels")
-                     <*> (o .:? "pysparkJob")
-                     <*> (o .:? "driverOutputResourceUri")
-                     <*> (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,
-                  ("yarnApplications" .=) <$> _jYarnApplications,
-                  ("labels" .=) <$> _jLabels,
-                  ("pysparkJob" .=) <$> _jPysparkJob,
-                  ("driverOutputResourceUri" .=) <$>
-                    _jDriverOutputResourceURI,
-                  ("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])
-
--- | Metadata describing the operation.
---
--- /See:/ 'clusterOperationMetadata' smart constructor.
-data ClusterOperationMetadata = ClusterOperationMetadata'
-    { _comStatus        :: !(Maybe ClusterOperationStatus)
-    , _comClusterUuid   :: !(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'
---
--- * 'comClusterName'
---
--- * 'comLabels'
---
--- * 'comOperationType'
---
--- * 'comStatusHistory'
---
--- * 'comDescription'
-clusterOperationMetadata
-    :: ClusterOperationMetadata
-clusterOperationMetadata =
-    ClusterOperationMetadata'
-    { _comStatus = Nothing
-    , _comClusterUuid = 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] 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 .:? "clusterName")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "statusHistory" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON ClusterOperationMetadata where
-        toJSON ClusterOperationMetadata'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _comStatus,
-                  ("clusterUuid" .=) <$> _comClusterUuid,
-                  ("clusterName" .=) <$> _comClusterName,
-                  ("labels" .=) <$> _comLabels,
-                  ("operationType" .=) <$> _comOperationType,
-                  ("statusHistory" .=) <$> _comStatusHistory,
-                  ("description" .=) <$> _comDescription])
-
--- | 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 match the
--- regular expression \`[0-9]+\\.[0-9]+\`. If unspecified, it defaults to
--- the latest version (see [Cloud Dataproc
--- Versioning](\/dataproc\/versioning)).
-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: * core: \`core-site.xml\` * hdfs: \`hdfs-site.xml\` * mapred:
--- \`mapred-site.xml\` * yarn: \`yarn-site.xml\` * hive: \`hive-site.xml\`
--- * pig: \`pig.properties\` * spark: \`spark-defaults.conf\`
-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])
-
--- | [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
-
--- | 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])
-
--- | 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])
-
--- | 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])
-
--- | Metadata describing the operation.
---
--- /See:/ 'operationMetadata' smart constructor.
-data OperationMetadata = OperationMetadata'
-    { _omStatus        :: !(Maybe OperationStatus)
-    , _omState         :: !(Maybe Text)
-    , _omClusterUuid   :: !(Maybe Text)
-    , _omInsertTime    :: !(Maybe Text)
-    , _omStartTime     :: !(Maybe Text)
-    , _omInnerState    :: !(Maybe Text)
-    , _omEndTime       :: !(Maybe Text)
-    , _omDetails       :: !(Maybe Text)
-    , _omClusterName   :: !(Maybe Text)
-    , _omOperationType :: !(Maybe Text)
-    , _omStatusHistory :: !(Maybe [OperationStatus])
-    , _omDescription   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'omStatus'
---
--- * 'omState'
---
--- * 'omClusterUuid'
---
--- * 'omInsertTime'
---
--- * 'omStartTime'
---
--- * 'omInnerState'
---
--- * 'omEndTime'
---
--- * 'omDetails'
---
--- * 'omClusterName'
---
--- * 'omOperationType'
---
--- * 'omStatusHistory'
---
--- * 'omDescription'
-operationMetadata
-    :: OperationMetadata
-operationMetadata =
-    OperationMetadata'
-    { _omStatus = Nothing
-    , _omState = Nothing
-    , _omClusterUuid = Nothing
-    , _omInsertTime = Nothing
-    , _omStartTime = Nothing
-    , _omInnerState = Nothing
-    , _omEndTime = Nothing
-    , _omDetails = Nothing
-    , _omClusterName = Nothing
-    , _omOperationType = Nothing
-    , _omStatusHistory = Nothing
-    , _omDescription = Nothing
-    }
-
--- | [Output-only] Current operation status.
-omStatus :: Lens' OperationMetadata (Maybe OperationStatus)
-omStatus = lens _omStatus (\ s a -> s{_omStatus = a})
-
--- | A message containing the operation state.
-omState :: Lens' OperationMetadata (Maybe Text)
-omState = lens _omState (\ s a -> s{_omState = a})
-
--- | Cluster UUId for the operation.
-omClusterUuid :: Lens' OperationMetadata (Maybe Text)
-omClusterUuid
-  = lens _omClusterUuid
-      (\ s a -> s{_omClusterUuid = a})
-
--- | The time that the operation was requested.
-omInsertTime :: Lens' OperationMetadata (Maybe Text)
-omInsertTime
-  = lens _omInsertTime (\ s a -> s{_omInsertTime = a})
-
--- | The time that the operation was started by the server.
-omStartTime :: Lens' OperationMetadata (Maybe Text)
-omStartTime
-  = lens _omStartTime (\ s a -> s{_omStartTime = a})
-
--- | A message containing the detailed operation state.
-omInnerState :: Lens' OperationMetadata (Maybe Text)
-omInnerState
-  = lens _omInnerState (\ s a -> s{_omInnerState = a})
-
--- | The time that the operation completed.
-omEndTime :: Lens' OperationMetadata (Maybe Text)
-omEndTime
-  = lens _omEndTime (\ s a -> s{_omEndTime = a})
-
--- | A message containing any operation metadata details.
-omDetails :: Lens' OperationMetadata (Maybe Text)
-omDetails
-  = lens _omDetails (\ s a -> s{_omDetails = a})
-
--- | Name of the cluster for the operation.
-omClusterName :: Lens' OperationMetadata (Maybe Text)
-omClusterName
-  = lens _omClusterName
-      (\ s a -> s{_omClusterName = a})
-
--- | [Output-only] The operation type.
-omOperationType :: Lens' OperationMetadata (Maybe Text)
-omOperationType
-  = lens _omOperationType
-      (\ s a -> s{_omOperationType = a})
-
--- | [Output-only] Previous operation status.
-omStatusHistory :: Lens' OperationMetadata [OperationStatus]
-omStatusHistory
-  = lens _omStatusHistory
-      (\ s a -> s{_omStatusHistory = a})
-      . _Default
-      . _Coerce
-
--- | [Output-only] Short description of operation.
-omDescription :: Lens' OperationMetadata (Maybe Text)
-omDescription
-  = lens _omDescription
-      (\ s a -> s{_omDescription = a})
-
-instance FromJSON OperationMetadata where
-        parseJSON
-          = withObject "OperationMetadata"
-              (\ o ->
-                 OperationMetadata' <$>
-                   (o .:? "status") <*> (o .:? "state") <*>
-                     (o .:? "clusterUuid")
-                     <*> (o .:? "insertTime")
-                     <*> (o .:? "startTime")
-                     <*> (o .:? "innerState")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "details")
-                     <*> (o .:? "clusterName")
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "statusHistory" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON OperationMetadata where
-        toJSON OperationMetadata'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _omStatus,
-                  ("state" .=) <$> _omState,
-                  ("clusterUuid" .=) <$> _omClusterUuid,
-                  ("insertTime" .=) <$> _omInsertTime,
-                  ("startTime" .=) <$> _omStartTime,
-                  ("innerState" .=) <$> _omInnerState,
-                  ("endTime" .=) <$> _omEndTime,
-                  ("details" .=) <$> _omDetails,
-                  ("clusterName" .=) <$> _omClusterName,
-                  ("operationType" .=) <$> _omOperationType,
-                  ("statusHistory" .=) <$> _omStatusHistory,
-                  ("description" .=) <$> _omDescription])
-
--- | Cloud Dataproc job status.
---
--- /See:/ 'jobStatus' smart constructor.
-data JobStatus = JobStatus'
-    { _jsState          :: !(Maybe Text)
-    , _jsStateStartTime :: !(Maybe Text)
-    , _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'
---
--- * 'jsStateStartTime'
---
--- * 'jsDetails'
-jobStatus
-    :: JobStatus
-jobStatus =
-    JobStatus'
-    { _jsState = Nothing
-    , _jsStateStartTime = Nothing
-    , _jsDetails = Nothing
-    }
-
--- | [Output-only] A state message specifying the overall job state.
-jsState :: Lens' JobStatus (Maybe Text)
-jsState = lens _jsState (\ s a -> s{_jsState = a})
-
--- | [Output-only] The time when this state was entered.
-jsStateStartTime :: Lens' JobStatus (Maybe Text)
-jsStateStartTime
-  = lens _jsStateStartTime
-      (\ s a -> s{_jsStateStartTime = a})
-
--- | [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 .:? "stateStartTime") <*>
-                     (o .:? "details"))
-
-instance ToJSON JobStatus where
-        toJSON JobStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _jsState,
-                  ("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 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 Text)
-    , _csStateStartTime :: !(Maybe Text)
-    , _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'
---
--- * 'csStateStartTime'
---
--- * 'csDetail'
-clusterStatus
-    :: ClusterStatus
-clusterStatus =
-    ClusterStatus'
-    { _csState = Nothing
-    , _csStateStartTime = Nothing
-    , _csDetail = Nothing
-    }
-
--- | [Output-only] The cluster\'s state.
-csState :: Lens' ClusterStatus (Maybe Text)
-csState = lens _csState (\ s a -> s{_csState = a})
-
--- | [Output-only] Time when this state was entered.
-csStateStartTime :: Lens' ClusterStatus (Maybe Text)
-csStateStartTime
-  = lens _csStateStartTime
-      (\ s a -> s{_csStateStartTime = a})
-
--- | [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 .:? "stateStartTime") <*>
-                     (o .:? "detail"))
-
-instance ToJSON ClusterStatus where
-        toJSON ClusterStatus'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _csState,
-                  ("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 Text)
-    , _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 Text)
-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])
+-- | 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.
+bCondition :: Lens' Binding (Maybe Expr)
+bCondition
+  = lens _bCondition (\ s a -> s{_bCondition = a})
+
+instance FromJSON Binding where
+        parseJSON
+          = withObject "Binding"
+              (\ o ->
+                 Binding' <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "role") <*>
+                     (o .:? "condition"))
+
+instance ToJSON Binding where
+        toJSON Binding'{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _bMembers,
+                  ("role" .=) <$> _bRole,
+                  ("condition" .=) <$> _bCondition])
diff --git a/gen/Network/Google/Dataproc/Types/Sum.hs b/gen/Network/Google/Dataproc/Types/Sum.hs
--- a/gen/Network/Google/Dataproc/Types/Sum.hs
+++ b/gen/Network/Google/Dataproc/Types/Sum.hs
@@ -16,4 +16,428 @@
 --
 module Network.Google.Dataproc.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | Output only. A state message specifying the overall job state.
+data JobStatusState
+    = StateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- The job state is unknown.
+    | Pending
+      -- ^ @PENDING@
+      -- The job is pending; it has been submitted, but is not yet running.
+    | SetupDone
+      -- ^ @SETUP_DONE@
+      -- Job has been received by the service and completed initial setup; it
+      -- will soon be submitted to the cluster.
+    | Running
+      -- ^ @RUNNING@
+      -- The job is running on the cluster.
+    | CancelPending
+      -- ^ @CANCEL_PENDING@
+      -- A CancelJob request has been received, but is pending.
+    | CancelStarted
+      -- ^ @CANCEL_STARTED@
+      -- Transient in-flight resources have been canceled, and the request to
+      -- cancel the running job has been issued to the cluster.
+    | Cancelled
+      -- ^ @CANCELLED@
+      -- The job cancellation was successful.
+    | Done
+      -- ^ @DONE@
+      -- The job has completed successfully.
+    | Error'
+      -- ^ @ERROR@
+      -- The job has completed, but encountered an error.
+    | AttemptFailure
+      -- ^ @ATTEMPT_FAILURE@
+      -- Job attempt has failed. The detail field contains failure details for
+      -- this attempt.Applies to restartable jobs only.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable JobStatusState
+
+instance FromHttpApiData JobStatusState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right StateUnspecified
+        "PENDING" -> Right Pending
+        "SETUP_DONE" -> Right SetupDone
+        "RUNNING" -> Right Running
+        "CANCEL_PENDING" -> Right CancelPending
+        "CANCEL_STARTED" -> Right CancelStarted
+        "CANCELLED" -> Right Cancelled
+        "DONE" -> Right Done
+        "ERROR" -> Right Error'
+        "ATTEMPT_FAILURE" -> Right AttemptFailure
+        x -> Left ("Unable to parse JobStatusState from: " <> x)
+
+instance ToHttpApiData JobStatusState where
+    toQueryParam = \case
+        StateUnspecified -> "STATE_UNSPECIFIED"
+        Pending -> "PENDING"
+        SetupDone -> "SETUP_DONE"
+        Running -> "RUNNING"
+        CancelPending -> "CANCEL_PENDING"
+        CancelStarted -> "CANCEL_STARTED"
+        Cancelled -> "CANCELLED"
+        Done -> "DONE"
+        Error' -> "ERROR"
+        AttemptFailure -> "ATTEMPT_FAILURE"
+
+instance FromJSON JobStatusState where
+    parseJSON = parseJSONText "JobStatusState"
+
+instance ToJSON JobStatusState where
+    toJSON = toJSONText
+
+-- | Output only. The node state.
+data WorkflowNodeState
+    = WNSNodeStateUnspecified
+      -- ^ @NODE_STATE_UNSPECIFIED@
+      -- State is unspecified.
+    | WNSBlocked
+      -- ^ @BLOCKED@
+      -- The node is awaiting prerequisite node to finish.
+    | WNSRunnable
+      -- ^ @RUNNABLE@
+      -- The node is runnable but not running.
+    | WNSRunning
+      -- ^ @RUNNING@
+      -- The node is running.
+    | WNSCompleted
+      -- ^ @COMPLETED@
+      -- The node completed successfully.
+    | WNSFailed
+      -- ^ @FAILED@
+      -- The node failed. A node can be marked FAILED because its ancestor or
+      -- peer failed.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable WorkflowNodeState
+
+instance FromHttpApiData WorkflowNodeState where
+    parseQueryParam = \case
+        "NODE_STATE_UNSPECIFIED" -> Right WNSNodeStateUnspecified
+        "BLOCKED" -> Right WNSBlocked
+        "RUNNABLE" -> Right WNSRunnable
+        "RUNNING" -> Right WNSRunning
+        "COMPLETED" -> Right WNSCompleted
+        "FAILED" -> Right WNSFailed
+        x -> Left ("Unable to parse WorkflowNodeState from: " <> x)
+
+instance ToHttpApiData WorkflowNodeState where
+    toQueryParam = \case
+        WNSNodeStateUnspecified -> "NODE_STATE_UNSPECIFIED"
+        WNSBlocked -> "BLOCKED"
+        WNSRunnable -> "RUNNABLE"
+        WNSRunning -> "RUNNING"
+        WNSCompleted -> "COMPLETED"
+        WNSFailed -> "FAILED"
+
+instance FromJSON WorkflowNodeState where
+    parseJSON = parseJSONText "WorkflowNodeState"
+
+instance ToJSON WorkflowNodeState where
+    toJSON = toJSONText
+
+-- | Output only. Additional state information that includes status reported
+-- by the agent.
+data ClusterStatusSubState
+    = Unspecified
+      -- ^ @UNSPECIFIED@
+      -- The cluster substate is unknown.
+    | Unhealthy
+      -- ^ @UNHEALTHY@
+      -- The cluster is known to be in an unhealthy state (for example, critical
+      -- daemons are not running or HDFS capacity is exhausted).Applies to
+      -- RUNNING state.
+    | StaleStatus
+      -- ^ @STALE_STATUS@
+      -- The agent-reported status is out of date (may occur if Cloud Dataproc
+      -- loses communication with Agent).Applies to RUNNING state.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterStatusSubState
+
+instance FromHttpApiData ClusterStatusSubState where
+    parseQueryParam = \case
+        "UNSPECIFIED" -> Right Unspecified
+        "UNHEALTHY" -> Right Unhealthy
+        "STALE_STATUS" -> Right StaleStatus
+        x -> Left ("Unable to parse ClusterStatusSubState from: " <> x)
+
+instance ToHttpApiData ClusterStatusSubState where
+    toQueryParam = \case
+        Unspecified -> "UNSPECIFIED"
+        Unhealthy -> "UNHEALTHY"
+        StaleStatus -> "STALE_STATUS"
+
+instance FromJSON ClusterStatusSubState where
+    parseJSON = parseJSONText "ClusterStatusSubState"
+
+instance ToJSON ClusterStatusSubState where
+    toJSON = toJSONText
+
+-- | Output only. The workflow state.
+data WorkflowMetadataState
+    = WMSUnknown
+      -- ^ @UNKNOWN@
+      -- Unused.
+    | WMSPending
+      -- ^ @PENDING@
+      -- The operation has been created.
+    | WMSRunning
+      -- ^ @RUNNING@
+      -- The operation is running.
+    | WMSDone
+      -- ^ @DONE@
+      -- The operation is done; either cancelled or completed.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable WorkflowMetadataState
+
+instance FromHttpApiData WorkflowMetadataState where
+    parseQueryParam = \case
+        "UNKNOWN" -> Right WMSUnknown
+        "PENDING" -> Right WMSPending
+        "RUNNING" -> Right WMSRunning
+        "DONE" -> Right WMSDone
+        x -> Left ("Unable to parse WorkflowMetadataState from: " <> x)
+
+instance ToHttpApiData WorkflowMetadataState where
+    toQueryParam = \case
+        WMSUnknown -> "UNKNOWN"
+        WMSPending -> "PENDING"
+        WMSRunning -> "RUNNING"
+        WMSDone -> "DONE"
+
+instance FromJSON WorkflowMetadataState where
+    parseJSON = parseJSONText "WorkflowMetadataState"
+
+instance ToJSON WorkflowMetadataState where
+    toJSON = toJSONText
+
+-- | Required. The application state.
+data YarnApplicationState
+    = YASStateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- Status is unspecified.
+    | YASNew
+      -- ^ @NEW@
+      -- Status is NEW.
+    | YASNewSaving
+      -- ^ @NEW_SAVING@
+      -- Status is NEW_SAVING.
+    | YASSubmitted
+      -- ^ @SUBMITTED@
+      -- Status is SUBMITTED.
+    | YASAccepted
+      -- ^ @ACCEPTED@
+      -- Status is ACCEPTED.
+    | YASRunning
+      -- ^ @RUNNING@
+      -- Status is RUNNING.
+    | YASFinished
+      -- ^ @FINISHED@
+      -- Status is FINISHED.
+    | YASFailed
+      -- ^ @FAILED@
+      -- Status is FAILED.
+    | YASKilled
+      -- ^ @KILLED@
+      -- Status is KILLED.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable YarnApplicationState
+
+instance FromHttpApiData YarnApplicationState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right YASStateUnspecified
+        "NEW" -> Right YASNew
+        "NEW_SAVING" -> Right YASNewSaving
+        "SUBMITTED" -> Right YASSubmitted
+        "ACCEPTED" -> Right YASAccepted
+        "RUNNING" -> Right YASRunning
+        "FINISHED" -> Right YASFinished
+        "FAILED" -> Right YASFailed
+        "KILLED" -> Right YASKilled
+        x -> Left ("Unable to parse YarnApplicationState from: " <> x)
+
+instance ToHttpApiData YarnApplicationState where
+    toQueryParam = \case
+        YASStateUnspecified -> "STATE_UNSPECIFIED"
+        YASNew -> "NEW"
+        YASNewSaving -> "NEW_SAVING"
+        YASSubmitted -> "SUBMITTED"
+        YASAccepted -> "ACCEPTED"
+        YASRunning -> "RUNNING"
+        YASFinished -> "FINISHED"
+        YASFailed -> "FAILED"
+        YASKilled -> "KILLED"
+
+instance FromJSON YarnApplicationState where
+    parseJSON = parseJSONText "YarnApplicationState"
+
+instance ToJSON YarnApplicationState where
+    toJSON = toJSONText
+
+-- | Output only. The cluster\'s state.
+data ClusterStatusState
+    = CSSUnknown
+      -- ^ @UNKNOWN@
+      -- The cluster state is unknown.
+    | CSSCreating
+      -- ^ @CREATING@
+      -- The cluster is being created and set up. It is not ready for use.
+    | CSSRunning
+      -- ^ @RUNNING@
+      -- The cluster is currently running and healthy. It is ready for use.
+    | CSSError'
+      -- ^ @ERROR@
+      -- The cluster encountered an error. It is not ready for use.
+    | CSSDeleting
+      -- ^ @DELETING@
+      -- The cluster is being deleted. It cannot be used.
+    | CSSUpdating
+      -- ^ @UPDATING@
+      -- The cluster is being updated. It continues to accept and process jobs.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterStatusState
+
+instance FromHttpApiData ClusterStatusState where
+    parseQueryParam = \case
+        "UNKNOWN" -> Right CSSUnknown
+        "CREATING" -> Right CSSCreating
+        "RUNNING" -> Right CSSRunning
+        "ERROR" -> Right CSSError'
+        "DELETING" -> Right CSSDeleting
+        "UPDATING" -> Right CSSUpdating
+        x -> Left ("Unable to parse ClusterStatusState from: " <> x)
+
+instance ToHttpApiData ClusterStatusState where
+    toQueryParam = \case
+        CSSUnknown -> "UNKNOWN"
+        CSSCreating -> "CREATING"
+        CSSRunning -> "RUNNING"
+        CSSError' -> "ERROR"
+        CSSDeleting -> "DELETING"
+        CSSUpdating -> "UPDATING"
+
+instance FromJSON ClusterStatusState where
+    parseJSON = parseJSONText "ClusterStatusState"
+
+instance ToJSON ClusterStatusState where
+    toJSON = toJSONText
+
+-- | Output only. A message containing the operation state.
+data ClusterOperationStatusState
+    = COSSUnknown
+      -- ^ @UNKNOWN@
+      -- Unused.
+    | COSSPending
+      -- ^ @PENDING@
+      -- The operation has been created.
+    | COSSRunning
+      -- ^ @RUNNING@
+      -- The operation is running.
+    | COSSDone
+      -- ^ @DONE@
+      -- The operation is done; either cancelled or completed.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterOperationStatusState
+
+instance FromHttpApiData ClusterOperationStatusState where
+    parseQueryParam = \case
+        "UNKNOWN" -> Right COSSUnknown
+        "PENDING" -> Right COSSPending
+        "RUNNING" -> Right COSSRunning
+        "DONE" -> Right COSSDone
+        x -> Left ("Unable to parse ClusterOperationStatusState from: " <> x)
+
+instance ToHttpApiData ClusterOperationStatusState where
+    toQueryParam = \case
+        COSSUnknown -> "UNKNOWN"
+        COSSPending -> "PENDING"
+        COSSRunning -> "RUNNING"
+        COSSDone -> "DONE"
+
+instance FromJSON ClusterOperationStatusState where
+    parseJSON = parseJSONText "ClusterOperationStatusState"
+
+instance ToJSON ClusterOperationStatusState where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
+
+-- | Output only. Additional state information, which includes status
+-- reported by the agent.
+data JobStatusSubState
+    = JSSSUnspecified
+      -- ^ @UNSPECIFIED@
+      -- The job substate is unknown.
+    | JSSSSubmitted
+      -- ^ @SUBMITTED@
+      -- The Job is submitted to the agent.Applies to RUNNING state.
+    | JSSSQueued
+      -- ^ @QUEUED@
+      -- The Job has been received and is awaiting execution (it may be waiting
+      -- for a condition to be met). See the \"details\" field for the reason for
+      -- the delay.Applies to RUNNING state.
+    | JSSSStaleStatus
+      -- ^ @STALE_STATUS@
+      -- The agent-reported status is out of date, which may be caused by a loss
+      -- of communication between the agent and Cloud Dataproc. If the agent does
+      -- not send a timely update, the job will fail.Applies to RUNNING state.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable JobStatusSubState
+
+instance FromHttpApiData JobStatusSubState where
+    parseQueryParam = \case
+        "UNSPECIFIED" -> Right JSSSUnspecified
+        "SUBMITTED" -> Right JSSSSubmitted
+        "QUEUED" -> Right JSSSQueued
+        "STALE_STATUS" -> Right JSSSStaleStatus
+        x -> Left ("Unable to parse JobStatusSubState from: " <> x)
+
+instance ToHttpApiData JobStatusSubState where
+    toQueryParam = \case
+        JSSSUnspecified -> "UNSPECIFIED"
+        JSSSSubmitted -> "SUBMITTED"
+        JSSSQueued -> "QUEUED"
+        JSSSStaleStatus -> "STALE_STATUS"
+
+instance FromJSON JobStatusSubState where
+    parseJSON = parseJSONText "JobStatusSubState"
+
+instance ToJSON JobStatusSubState where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Create.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates new workflow template.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.create@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesCreate
+    , ProjectsLocationsWorkflowTemplatesCreate
+
+    -- * Request Lenses
+    , plwtcParent
+    , plwtcXgafv
+    , plwtcUploadProtocol
+    , plwtcAccessToken
+    , plwtcUploadType
+    , plwtcPayload
+    , plwtcCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.create@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesCreate' request conforms to.
+type ProjectsLocationsWorkflowTemplatesCreateResource
+     =
+     "v1" :>
+       Capture "parent" Text :>
+         "workflowTemplates" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] WorkflowTemplate :>
+                         Post '[JSON] WorkflowTemplate
+
+-- | Creates new workflow template.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesCreate' smart constructor.
+data ProjectsLocationsWorkflowTemplatesCreate = ProjectsLocationsWorkflowTemplatesCreate'
+    { _plwtcParent         :: !Text
+    , _plwtcXgafv          :: !(Maybe Xgafv)
+    , _plwtcUploadProtocol :: !(Maybe Text)
+    , _plwtcAccessToken    :: !(Maybe Text)
+    , _plwtcUploadType     :: !(Maybe Text)
+    , _plwtcPayload        :: !WorkflowTemplate
+    , _plwtcCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtcParent'
+--
+-- * 'plwtcXgafv'
+--
+-- * 'plwtcUploadProtocol'
+--
+-- * 'plwtcAccessToken'
+--
+-- * 'plwtcUploadType'
+--
+-- * 'plwtcPayload'
+--
+-- * 'plwtcCallback'
+projectsLocationsWorkflowTemplatesCreate
+    :: Text -- ^ 'plwtcParent'
+    -> WorkflowTemplate -- ^ 'plwtcPayload'
+    -> ProjectsLocationsWorkflowTemplatesCreate
+projectsLocationsWorkflowTemplatesCreate pPlwtcParent_ pPlwtcPayload_ =
+    ProjectsLocationsWorkflowTemplatesCreate'
+    { _plwtcParent = pPlwtcParent_
+    , _plwtcXgafv = Nothing
+    , _plwtcUploadProtocol = Nothing
+    , _plwtcAccessToken = Nothing
+    , _plwtcUploadType = Nothing
+    , _plwtcPayload = pPlwtcPayload_
+    , _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}
+plwtcParent :: Lens' ProjectsLocationsWorkflowTemplatesCreate Text
+plwtcParent
+  = lens _plwtcParent (\ s a -> s{_plwtcParent = a})
+
+-- | V1 error format.
+plwtcXgafv :: Lens' ProjectsLocationsWorkflowTemplatesCreate (Maybe Xgafv)
+plwtcXgafv
+  = lens _plwtcXgafv (\ s a -> s{_plwtcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtcUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesCreate (Maybe Text)
+plwtcUploadProtocol
+  = lens _plwtcUploadProtocol
+      (\ s a -> s{_plwtcUploadProtocol = a})
+
+-- | OAuth access token.
+plwtcAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesCreate (Maybe Text)
+plwtcAccessToken
+  = lens _plwtcAccessToken
+      (\ s a -> s{_plwtcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtcUploadType :: Lens' ProjectsLocationsWorkflowTemplatesCreate (Maybe Text)
+plwtcUploadType
+  = lens _plwtcUploadType
+      (\ s a -> s{_plwtcUploadType = a})
+
+-- | Multipart request metadata.
+plwtcPayload :: Lens' ProjectsLocationsWorkflowTemplatesCreate WorkflowTemplate
+plwtcPayload
+  = lens _plwtcPayload (\ s a -> s{_plwtcPayload = a})
+
+-- | JSONP
+plwtcCallback :: Lens' ProjectsLocationsWorkflowTemplatesCreate (Maybe Text)
+plwtcCallback
+  = lens _plwtcCallback
+      (\ s a -> s{_plwtcCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesCreate where
+        type Rs ProjectsLocationsWorkflowTemplatesCreate =
+             WorkflowTemplate
+        type Scopes ProjectsLocationsWorkflowTemplatesCreate
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesCreate'{..}
+          = go _plwtcParent _plwtcXgafv _plwtcUploadProtocol
+              _plwtcAccessToken
+              _plwtcUploadType
+              _plwtcCallback
+              (Just AltJSON)
+              _plwtcPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Delete.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a workflow template. It does not cancel in-progress workflows.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.delete@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesDelete
+    , ProjectsLocationsWorkflowTemplatesDelete
+
+    -- * Request Lenses
+    , plwtdXgafv
+    , plwtdUploadProtocol
+    , plwtdAccessToken
+    , plwtdUploadType
+    , plwtdName
+    , plwtdVersion
+    , plwtdCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.delete@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesDelete' request conforms to.
+type ProjectsLocationsWorkflowTemplatesDeleteResource
+     =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "version" (Textual Int32) :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes a workflow template. It does not cancel in-progress workflows.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesDelete' smart constructor.
+data ProjectsLocationsWorkflowTemplatesDelete = ProjectsLocationsWorkflowTemplatesDelete'
+    { _plwtdXgafv          :: !(Maybe Xgafv)
+    , _plwtdUploadProtocol :: !(Maybe Text)
+    , _plwtdAccessToken    :: !(Maybe Text)
+    , _plwtdUploadType     :: !(Maybe Text)
+    , _plwtdName           :: !Text
+    , _plwtdVersion        :: !(Maybe (Textual Int32))
+    , _plwtdCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtdXgafv'
+--
+-- * 'plwtdUploadProtocol'
+--
+-- * 'plwtdAccessToken'
+--
+-- * 'plwtdUploadType'
+--
+-- * 'plwtdName'
+--
+-- * 'plwtdVersion'
+--
+-- * 'plwtdCallback'
+projectsLocationsWorkflowTemplatesDelete
+    :: Text -- ^ 'plwtdName'
+    -> ProjectsLocationsWorkflowTemplatesDelete
+projectsLocationsWorkflowTemplatesDelete pPlwtdName_ =
+    ProjectsLocationsWorkflowTemplatesDelete'
+    { _plwtdXgafv = Nothing
+    , _plwtdUploadProtocol = Nothing
+    , _plwtdAccessToken = Nothing
+    , _plwtdUploadType = Nothing
+    , _plwtdName = pPlwtdName_
+    , _plwtdVersion = Nothing
+    , _plwtdCallback = Nothing
+    }
+
+-- | V1 error format.
+plwtdXgafv :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Xgafv)
+plwtdXgafv
+  = lens _plwtdXgafv (\ s a -> s{_plwtdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtdUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Text)
+plwtdUploadProtocol
+  = lens _plwtdUploadProtocol
+      (\ s a -> s{_plwtdUploadProtocol = a})
+
+-- | OAuth access token.
+plwtdAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Text)
+plwtdAccessToken
+  = lens _plwtdAccessToken
+      (\ s a -> s{_plwtdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtdUploadType :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Text)
+plwtdUploadType
+  = lens _plwtdUploadType
+      (\ s a -> s{_plwtdUploadType = a})
+
+-- | Required. The \"resource name\" of the workflow template, as described
+-- in https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+plwtdName :: Lens' ProjectsLocationsWorkflowTemplatesDelete Text
+plwtdName
+  = lens _plwtdName (\ s a -> s{_plwtdName = a})
+
+-- | Optional. The version of workflow template to delete. If specified, will
+-- only delete the template if the current server version matches specified
+-- version.
+plwtdVersion :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Int32)
+plwtdVersion
+  = lens _plwtdVersion (\ s a -> s{_plwtdVersion = a})
+      . mapping _Coerce
+
+-- | JSONP
+plwtdCallback :: Lens' ProjectsLocationsWorkflowTemplatesDelete (Maybe Text)
+plwtdCallback
+  = lens _plwtdCallback
+      (\ s a -> s{_plwtdCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesDelete where
+        type Rs ProjectsLocationsWorkflowTemplatesDelete =
+             Empty
+        type Scopes ProjectsLocationsWorkflowTemplatesDelete
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesDelete'{..}
+          = go _plwtdName _plwtdXgafv _plwtdUploadProtocol
+              _plwtdAccessToken
+              _plwtdUploadType
+              _plwtdVersion
+              _plwtdCallback
+              (Just AltJSON)
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Get.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the latest workflow template.Can retrieve previously
+-- instantiated template by specifying optional version parameter.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.get@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesGetResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesGet
+    , ProjectsLocationsWorkflowTemplatesGet
+
+    -- * Request Lenses
+    , plwtgXgafv
+    , plwtgUploadProtocol
+    , plwtgAccessToken
+    , plwtgUploadType
+    , plwtgName
+    , plwtgVersion
+    , plwtgCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.get@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesGet' request conforms to.
+type ProjectsLocationsWorkflowTemplatesGetResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "version" (Textual Int32) :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] WorkflowTemplate
+
+-- | Retrieves the latest workflow template.Can retrieve previously
+-- instantiated template by specifying optional version parameter.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesGet' smart constructor.
+data ProjectsLocationsWorkflowTemplatesGet = ProjectsLocationsWorkflowTemplatesGet'
+    { _plwtgXgafv          :: !(Maybe Xgafv)
+    , _plwtgUploadProtocol :: !(Maybe Text)
+    , _plwtgAccessToken    :: !(Maybe Text)
+    , _plwtgUploadType     :: !(Maybe Text)
+    , _plwtgName           :: !Text
+    , _plwtgVersion        :: !(Maybe (Textual Int32))
+    , _plwtgCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtgXgafv'
+--
+-- * 'plwtgUploadProtocol'
+--
+-- * 'plwtgAccessToken'
+--
+-- * 'plwtgUploadType'
+--
+-- * 'plwtgName'
+--
+-- * 'plwtgVersion'
+--
+-- * 'plwtgCallback'
+projectsLocationsWorkflowTemplatesGet
+    :: Text -- ^ 'plwtgName'
+    -> ProjectsLocationsWorkflowTemplatesGet
+projectsLocationsWorkflowTemplatesGet pPlwtgName_ =
+    ProjectsLocationsWorkflowTemplatesGet'
+    { _plwtgXgafv = Nothing
+    , _plwtgUploadProtocol = Nothing
+    , _plwtgAccessToken = Nothing
+    , _plwtgUploadType = Nothing
+    , _plwtgName = pPlwtgName_
+    , _plwtgVersion = Nothing
+    , _plwtgCallback = Nothing
+    }
+
+-- | V1 error format.
+plwtgXgafv :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Xgafv)
+plwtgXgafv
+  = lens _plwtgXgafv (\ s a -> s{_plwtgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtgUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Text)
+plwtgUploadProtocol
+  = lens _plwtgUploadProtocol
+      (\ s a -> s{_plwtgUploadProtocol = a})
+
+-- | OAuth access token.
+plwtgAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Text)
+plwtgAccessToken
+  = lens _plwtgAccessToken
+      (\ s a -> s{_plwtgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtgUploadType :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Text)
+plwtgUploadType
+  = lens _plwtgUploadType
+      (\ s a -> s{_plwtgUploadType = a})
+
+-- | Required. The \"resource name\" of the workflow template, as described
+-- in https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+plwtgName :: Lens' ProjectsLocationsWorkflowTemplatesGet Text
+plwtgName
+  = lens _plwtgName (\ s a -> s{_plwtgName = a})
+
+-- | Optional. The version of workflow template to retrieve. Only previously
+-- instatiated versions can be retrieved.If unspecified, retrieves the
+-- current version.
+plwtgVersion :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Int32)
+plwtgVersion
+  = lens _plwtgVersion (\ s a -> s{_plwtgVersion = a})
+      . mapping _Coerce
+
+-- | JSONP
+plwtgCallback :: Lens' ProjectsLocationsWorkflowTemplatesGet (Maybe Text)
+plwtgCallback
+  = lens _plwtgCallback
+      (\ s a -> s{_plwtgCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesGet where
+        type Rs ProjectsLocationsWorkflowTemplatesGet =
+             WorkflowTemplate
+        type Scopes ProjectsLocationsWorkflowTemplatesGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesGet'{..}
+          = go _plwtgName _plwtgXgafv _plwtgUploadProtocol
+              _plwtgAccessToken
+              _plwtgUploadType
+              _plwtgVersion
+              _plwtgCallback
+              (Just AltJSON)
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsWorkflowTemplatesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/GetIAMPolicy.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.getIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesGetIAMPolicy
+    , ProjectsLocationsWorkflowTemplatesGetIAMPolicy
+
+    -- * Request Lenses
+    , plwtgipXgafv
+    , plwtgipUploadProtocol
+    , plwtgipAccessToken
+    , plwtgipUploadType
+    , plwtgipPayload
+    , plwtgipResource
+    , plwtgipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.getIamPolicy@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesGetIAMPolicy' request conforms to.
+type ProjectsLocationsWorkflowTemplatesGetIAMPolicyResource
+     =
+     "v1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesGetIAMPolicy' smart constructor.
+data ProjectsLocationsWorkflowTemplatesGetIAMPolicy = ProjectsLocationsWorkflowTemplatesGetIAMPolicy'
+    { _plwtgipXgafv          :: !(Maybe Xgafv)
+    , _plwtgipUploadProtocol :: !(Maybe Text)
+    , _plwtgipAccessToken    :: !(Maybe Text)
+    , _plwtgipUploadType     :: !(Maybe Text)
+    , _plwtgipPayload        :: !GetIAMPolicyRequest
+    , _plwtgipResource       :: !Text
+    , _plwtgipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtgipXgafv'
+--
+-- * 'plwtgipUploadProtocol'
+--
+-- * 'plwtgipAccessToken'
+--
+-- * 'plwtgipUploadType'
+--
+-- * 'plwtgipPayload'
+--
+-- * 'plwtgipResource'
+--
+-- * 'plwtgipCallback'
+projectsLocationsWorkflowTemplatesGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'plwtgipPayload'
+    -> Text -- ^ 'plwtgipResource'
+    -> ProjectsLocationsWorkflowTemplatesGetIAMPolicy
+projectsLocationsWorkflowTemplatesGetIAMPolicy pPlwtgipPayload_ pPlwtgipResource_ =
+    ProjectsLocationsWorkflowTemplatesGetIAMPolicy'
+    { _plwtgipXgafv = Nothing
+    , _plwtgipUploadProtocol = Nothing
+    , _plwtgipAccessToken = Nothing
+    , _plwtgipUploadType = Nothing
+    , _plwtgipPayload = pPlwtgipPayload_
+    , _plwtgipResource = pPlwtgipResource_
+    , _plwtgipCallback = Nothing
+    }
+
+-- | V1 error format.
+plwtgipXgafv :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy (Maybe Xgafv)
+plwtgipXgafv
+  = lens _plwtgipXgafv (\ s a -> s{_plwtgipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtgipUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+plwtgipUploadProtocol
+  = lens _plwtgipUploadProtocol
+      (\ s a -> s{_plwtgipUploadProtocol = a})
+
+-- | OAuth access token.
+plwtgipAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+plwtgipAccessToken
+  = lens _plwtgipAccessToken
+      (\ s a -> s{_plwtgipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtgipUploadType :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+plwtgipUploadType
+  = lens _plwtgipUploadType
+      (\ s a -> s{_plwtgipUploadType = a})
+
+-- | Multipart request metadata.
+plwtgipPayload :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy GetIAMPolicyRequest
+plwtgipPayload
+  = lens _plwtgipPayload
+      (\ s a -> s{_plwtgipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+plwtgipResource :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy Text
+plwtgipResource
+  = lens _plwtgipResource
+      (\ s a -> s{_plwtgipResource = a})
+
+-- | JSONP
+plwtgipCallback :: Lens' ProjectsLocationsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+plwtgipCallback
+  = lens _plwtgipCallback
+      (\ s a -> s{_plwtgipCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesGetIAMPolicy where
+        type Rs
+               ProjectsLocationsWorkflowTemplatesGetIAMPolicy
+             = Policy
+        type Scopes
+               ProjectsLocationsWorkflowTemplatesGetIAMPolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesGetIAMPolicy'{..}
+          = go _plwtgipResource _plwtgipXgafv
+              _plwtgipUploadProtocol
+              _plwtgipAccessToken
+              _plwtgipUploadType
+              _plwtgipCallback
+              (Just AltJSON)
+              _plwtgipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Instantiate.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Instantiate
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Instantiates a template and begins execution.The returned Operation can
+-- be used to track execution of workflow by polling operations.get. The
+-- Operation will complete when entire workflow is finished.The running
+-- workflow can be aborted via operations.cancel. This will cause any
+-- inflight jobs to be cancelled and workflow-owned clusters to be
+-- deleted.The Operation.metadata will be WorkflowMetadata.On successful
+-- completion, Operation.response will be Empty.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.instantiate@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Instantiate
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesInstantiateResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesInstantiate
+    , ProjectsLocationsWorkflowTemplatesInstantiate
+
+    -- * Request Lenses
+    , plwtiXgafv
+    , plwtiUploadProtocol
+    , plwtiAccessToken
+    , plwtiUploadType
+    , plwtiPayload
+    , plwtiName
+    , plwtiCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.instantiate@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesInstantiate' request conforms to.
+type ProjectsLocationsWorkflowTemplatesInstantiateResource
+     =
+     "v1" :>
+       CaptureMode "name" "instantiate" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] InstantiateWorkflowTemplateRequest :>
+                       Post '[JSON] Operation
+
+-- | Instantiates a template and begins execution.The returned Operation can
+-- be used to track execution of workflow by polling operations.get. The
+-- Operation will complete when entire workflow is finished.The running
+-- workflow can be aborted via operations.cancel. This will cause any
+-- inflight jobs to be cancelled and workflow-owned clusters to be
+-- deleted.The Operation.metadata will be WorkflowMetadata.On successful
+-- completion, Operation.response will be Empty.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesInstantiate' smart constructor.
+data ProjectsLocationsWorkflowTemplatesInstantiate = ProjectsLocationsWorkflowTemplatesInstantiate'
+    { _plwtiXgafv          :: !(Maybe Xgafv)
+    , _plwtiUploadProtocol :: !(Maybe Text)
+    , _plwtiAccessToken    :: !(Maybe Text)
+    , _plwtiUploadType     :: !(Maybe Text)
+    , _plwtiPayload        :: !InstantiateWorkflowTemplateRequest
+    , _plwtiName           :: !Text
+    , _plwtiCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtiXgafv'
+--
+-- * 'plwtiUploadProtocol'
+--
+-- * 'plwtiAccessToken'
+--
+-- * 'plwtiUploadType'
+--
+-- * 'plwtiPayload'
+--
+-- * 'plwtiName'
+--
+-- * 'plwtiCallback'
+projectsLocationsWorkflowTemplatesInstantiate
+    :: InstantiateWorkflowTemplateRequest -- ^ 'plwtiPayload'
+    -> Text -- ^ 'plwtiName'
+    -> ProjectsLocationsWorkflowTemplatesInstantiate
+projectsLocationsWorkflowTemplatesInstantiate pPlwtiPayload_ pPlwtiName_ =
+    ProjectsLocationsWorkflowTemplatesInstantiate'
+    { _plwtiXgafv = Nothing
+    , _plwtiUploadProtocol = Nothing
+    , _plwtiAccessToken = Nothing
+    , _plwtiUploadType = Nothing
+    , _plwtiPayload = pPlwtiPayload_
+    , _plwtiName = pPlwtiName_
+    , _plwtiCallback = Nothing
+    }
+
+-- | V1 error format.
+plwtiXgafv :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate (Maybe Xgafv)
+plwtiXgafv
+  = lens _plwtiXgafv (\ s a -> s{_plwtiXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtiUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate (Maybe Text)
+plwtiUploadProtocol
+  = lens _plwtiUploadProtocol
+      (\ s a -> s{_plwtiUploadProtocol = a})
+
+-- | OAuth access token.
+plwtiAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate (Maybe Text)
+plwtiAccessToken
+  = lens _plwtiAccessToken
+      (\ s a -> s{_plwtiAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtiUploadType :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate (Maybe Text)
+plwtiUploadType
+  = lens _plwtiUploadType
+      (\ s a -> s{_plwtiUploadType = a})
+
+-- | Multipart request metadata.
+plwtiPayload :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate InstantiateWorkflowTemplateRequest
+plwtiPayload
+  = lens _plwtiPayload (\ s a -> s{_plwtiPayload = a})
+
+-- | Required. The \"resource name\" of the workflow template, as described
+-- in https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+plwtiName :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate Text
+plwtiName
+  = lens _plwtiName (\ s a -> s{_plwtiName = a})
+
+-- | JSONP
+plwtiCallback :: Lens' ProjectsLocationsWorkflowTemplatesInstantiate (Maybe Text)
+plwtiCallback
+  = lens _plwtiCallback
+      (\ s a -> s{_plwtiCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesInstantiate where
+        type Rs ProjectsLocationsWorkflowTemplatesInstantiate
+             = Operation
+        type Scopes
+               ProjectsLocationsWorkflowTemplatesInstantiate
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesInstantiate'{..}
+          = go _plwtiName _plwtiXgafv _plwtiUploadProtocol
+              _plwtiAccessToken
+              _plwtiUploadType
+              _plwtiCallback
+              (Just AltJSON)
+              _plwtiPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesInstantiateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/InstantiateInline.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.InstantiateInline
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Instantiates a template and begins execution.This method is equivalent
+-- to executing the sequence CreateWorkflowTemplate,
+-- InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned
+-- Operation can be used to track execution of workflow by polling
+-- operations.get. The Operation will complete when entire workflow is
+-- finished.The running workflow can be aborted via operations.cancel. This
+-- will cause any inflight jobs to be cancelled and workflow-owned clusters
+-- to be deleted.The Operation.metadata will be WorkflowMetadata.On
+-- successful completion, Operation.response will be Empty.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.instantiateInline@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.InstantiateInline
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesInstantiateInlineResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesInstantiateInline
+    , ProjectsLocationsWorkflowTemplatesInstantiateInline
+
+    -- * Request Lenses
+    , plwtiiParent
+    , plwtiiXgafv
+    , plwtiiRequestId
+    , plwtiiUploadProtocol
+    , plwtiiAccessToken
+    , plwtiiUploadType
+    , plwtiiPayload
+    , plwtiiCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.instantiateInline@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesInstantiateInline' request conforms to.
+type ProjectsLocationsWorkflowTemplatesInstantiateInlineResource
+     =
+     "v1" :>
+       Capture "parent" Text :>
+         "workflowTemplates:instantiateInline" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "requestId" Text :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] WorkflowTemplate :>
+                           Post '[JSON] Operation
+
+-- | Instantiates a template and begins execution.This method is equivalent
+-- to executing the sequence CreateWorkflowTemplate,
+-- InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned
+-- Operation can be used to track execution of workflow by polling
+-- operations.get. The Operation will complete when entire workflow is
+-- finished.The running workflow can be aborted via operations.cancel. This
+-- will cause any inflight jobs to be cancelled and workflow-owned clusters
+-- to be deleted.The Operation.metadata will be WorkflowMetadata.On
+-- successful completion, Operation.response will be Empty.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesInstantiateInline' smart constructor.
+data ProjectsLocationsWorkflowTemplatesInstantiateInline = ProjectsLocationsWorkflowTemplatesInstantiateInline'
+    { _plwtiiParent         :: !Text
+    , _plwtiiXgafv          :: !(Maybe Xgafv)
+    , _plwtiiRequestId      :: !(Maybe Text)
+    , _plwtiiUploadProtocol :: !(Maybe Text)
+    , _plwtiiAccessToken    :: !(Maybe Text)
+    , _plwtiiUploadType     :: !(Maybe Text)
+    , _plwtiiPayload        :: !WorkflowTemplate
+    , _plwtiiCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtiiParent'
+--
+-- * 'plwtiiXgafv'
+--
+-- * 'plwtiiRequestId'
+--
+-- * 'plwtiiUploadProtocol'
+--
+-- * 'plwtiiAccessToken'
+--
+-- * 'plwtiiUploadType'
+--
+-- * 'plwtiiPayload'
+--
+-- * 'plwtiiCallback'
+projectsLocationsWorkflowTemplatesInstantiateInline
+    :: Text -- ^ 'plwtiiParent'
+    -> WorkflowTemplate -- ^ 'plwtiiPayload'
+    -> ProjectsLocationsWorkflowTemplatesInstantiateInline
+projectsLocationsWorkflowTemplatesInstantiateInline pPlwtiiParent_ pPlwtiiPayload_ =
+    ProjectsLocationsWorkflowTemplatesInstantiateInline'
+    { _plwtiiParent = pPlwtiiParent_
+    , _plwtiiXgafv = Nothing
+    , _plwtiiRequestId = Nothing
+    , _plwtiiUploadProtocol = Nothing
+    , _plwtiiAccessToken = Nothing
+    , _plwtiiUploadType = Nothing
+    , _plwtiiPayload = pPlwtiiPayload_
+    , _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}
+plwtiiParent :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline Text
+plwtiiParent
+  = lens _plwtiiParent (\ s a -> s{_plwtiiParent = a})
+
+-- | V1 error format.
+plwtiiXgafv :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline (Maybe Xgafv)
+plwtiiXgafv
+  = lens _plwtiiXgafv (\ s a -> s{_plwtiiXgafv = a})
+
+-- | 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.
+plwtiiRequestId :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline (Maybe Text)
+plwtiiRequestId
+  = lens _plwtiiRequestId
+      (\ s a -> s{_plwtiiRequestId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtiiUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline (Maybe Text)
+plwtiiUploadProtocol
+  = lens _plwtiiUploadProtocol
+      (\ s a -> s{_plwtiiUploadProtocol = a})
+
+-- | OAuth access token.
+plwtiiAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline (Maybe Text)
+plwtiiAccessToken
+  = lens _plwtiiAccessToken
+      (\ s a -> s{_plwtiiAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtiiUploadType :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline (Maybe Text)
+plwtiiUploadType
+  = lens _plwtiiUploadType
+      (\ s a -> s{_plwtiiUploadType = a})
+
+-- | Multipart request metadata.
+plwtiiPayload :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline WorkflowTemplate
+plwtiiPayload
+  = lens _plwtiiPayload
+      (\ s a -> s{_plwtiiPayload = a})
+
+-- | JSONP
+plwtiiCallback :: Lens' ProjectsLocationsWorkflowTemplatesInstantiateInline (Maybe Text)
+plwtiiCallback
+  = lens _plwtiiCallback
+      (\ s a -> s{_plwtiiCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesInstantiateInline
+         where
+        type Rs
+               ProjectsLocationsWorkflowTemplatesInstantiateInline
+             = Operation
+        type Scopes
+               ProjectsLocationsWorkflowTemplatesInstantiateInline
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesInstantiateInline'{..}
+          = go _plwtiiParent _plwtiiXgafv _plwtiiRequestId
+              _plwtiiUploadProtocol
+              _plwtiiAccessToken
+              _plwtiiUploadType
+              _plwtiiCallback
+              (Just AltJSON)
+              _plwtiiPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesInstantiateInlineResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/List.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists workflows that match the specified filter in the request.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.list@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.List
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesListResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesList
+    , ProjectsLocationsWorkflowTemplatesList
+
+    -- * Request Lenses
+    , plwtlParent
+    , plwtlXgafv
+    , plwtlUploadProtocol
+    , plwtlAccessToken
+    , plwtlUploadType
+    , plwtlPageToken
+    , plwtlPageSize
+    , plwtlCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.list@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesList' request conforms to.
+type ProjectsLocationsWorkflowTemplatesListResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "workflowTemplates" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListWorkflowTemplatesResponse
+
+-- | Lists workflows that match the specified filter in the request.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesList' smart constructor.
+data ProjectsLocationsWorkflowTemplatesList = ProjectsLocationsWorkflowTemplatesList'
+    { _plwtlParent         :: !Text
+    , _plwtlXgafv          :: !(Maybe Xgafv)
+    , _plwtlUploadProtocol :: !(Maybe Text)
+    , _plwtlAccessToken    :: !(Maybe Text)
+    , _plwtlUploadType     :: !(Maybe Text)
+    , _plwtlPageToken      :: !(Maybe Text)
+    , _plwtlPageSize       :: !(Maybe (Textual Int32))
+    , _plwtlCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtlParent'
+--
+-- * 'plwtlXgafv'
+--
+-- * 'plwtlUploadProtocol'
+--
+-- * 'plwtlAccessToken'
+--
+-- * 'plwtlUploadType'
+--
+-- * 'plwtlPageToken'
+--
+-- * 'plwtlPageSize'
+--
+-- * 'plwtlCallback'
+projectsLocationsWorkflowTemplatesList
+    :: Text -- ^ 'plwtlParent'
+    -> ProjectsLocationsWorkflowTemplatesList
+projectsLocationsWorkflowTemplatesList pPlwtlParent_ =
+    ProjectsLocationsWorkflowTemplatesList'
+    { _plwtlParent = pPlwtlParent_
+    , _plwtlXgafv = Nothing
+    , _plwtlUploadProtocol = Nothing
+    , _plwtlAccessToken = Nothing
+    , _plwtlUploadType = Nothing
+    , _plwtlPageToken = Nothing
+    , _plwtlPageSize = Nothing
+    , _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}
+plwtlParent :: Lens' ProjectsLocationsWorkflowTemplatesList Text
+plwtlParent
+  = lens _plwtlParent (\ s a -> s{_plwtlParent = a})
+
+-- | V1 error format.
+plwtlXgafv :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Xgafv)
+plwtlXgafv
+  = lens _plwtlXgafv (\ s a -> s{_plwtlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtlUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Text)
+plwtlUploadProtocol
+  = lens _plwtlUploadProtocol
+      (\ s a -> s{_plwtlUploadProtocol = a})
+
+-- | OAuth access token.
+plwtlAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Text)
+plwtlAccessToken
+  = lens _plwtlAccessToken
+      (\ s a -> s{_plwtlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtlUploadType :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Text)
+plwtlUploadType
+  = lens _plwtlUploadType
+      (\ s a -> s{_plwtlUploadType = a})
+
+-- | Optional. The page token, returned by a previous call, to request the
+-- next page of results.
+plwtlPageToken :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Text)
+plwtlPageToken
+  = lens _plwtlPageToken
+      (\ s a -> s{_plwtlPageToken = a})
+
+-- | Optional. The maximum number of results to return in each response.
+plwtlPageSize :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Int32)
+plwtlPageSize
+  = lens _plwtlPageSize
+      (\ s a -> s{_plwtlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+plwtlCallback :: Lens' ProjectsLocationsWorkflowTemplatesList (Maybe Text)
+plwtlCallback
+  = lens _plwtlCallback
+      (\ s a -> s{_plwtlCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesList where
+        type Rs ProjectsLocationsWorkflowTemplatesList =
+             ListWorkflowTemplatesResponse
+        type Scopes ProjectsLocationsWorkflowTemplatesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesList'{..}
+          = go _plwtlParent _plwtlXgafv _plwtlUploadProtocol
+              _plwtlAccessToken
+              _plwtlUploadType
+              _plwtlPageToken
+              _plwtlPageSize
+              _plwtlCallback
+              (Just AltJSON)
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsWorkflowTemplatesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/SetIAMPolicy.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.setIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesSetIAMPolicy
+    , ProjectsLocationsWorkflowTemplatesSetIAMPolicy
+
+    -- * Request Lenses
+    , plwtsipXgafv
+    , plwtsipUploadProtocol
+    , plwtsipAccessToken
+    , plwtsipUploadType
+    , plwtsipPayload
+    , plwtsipResource
+    , plwtsipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.setIamPolicy@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesSetIAMPolicy' request conforms to.
+type ProjectsLocationsWorkflowTemplatesSetIAMPolicyResource
+     =
+     "v1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesSetIAMPolicy' smart constructor.
+data ProjectsLocationsWorkflowTemplatesSetIAMPolicy = ProjectsLocationsWorkflowTemplatesSetIAMPolicy'
+    { _plwtsipXgafv          :: !(Maybe Xgafv)
+    , _plwtsipUploadProtocol :: !(Maybe Text)
+    , _plwtsipAccessToken    :: !(Maybe Text)
+    , _plwtsipUploadType     :: !(Maybe Text)
+    , _plwtsipPayload        :: !SetIAMPolicyRequest
+    , _plwtsipResource       :: !Text
+    , _plwtsipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtsipXgafv'
+--
+-- * 'plwtsipUploadProtocol'
+--
+-- * 'plwtsipAccessToken'
+--
+-- * 'plwtsipUploadType'
+--
+-- * 'plwtsipPayload'
+--
+-- * 'plwtsipResource'
+--
+-- * 'plwtsipCallback'
+projectsLocationsWorkflowTemplatesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'plwtsipPayload'
+    -> Text -- ^ 'plwtsipResource'
+    -> ProjectsLocationsWorkflowTemplatesSetIAMPolicy
+projectsLocationsWorkflowTemplatesSetIAMPolicy pPlwtsipPayload_ pPlwtsipResource_ =
+    ProjectsLocationsWorkflowTemplatesSetIAMPolicy'
+    { _plwtsipXgafv = Nothing
+    , _plwtsipUploadProtocol = Nothing
+    , _plwtsipAccessToken = Nothing
+    , _plwtsipUploadType = Nothing
+    , _plwtsipPayload = pPlwtsipPayload_
+    , _plwtsipResource = pPlwtsipResource_
+    , _plwtsipCallback = Nothing
+    }
+
+-- | V1 error format.
+plwtsipXgafv :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy (Maybe Xgafv)
+plwtsipXgafv
+  = lens _plwtsipXgafv (\ s a -> s{_plwtsipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtsipUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+plwtsipUploadProtocol
+  = lens _plwtsipUploadProtocol
+      (\ s a -> s{_plwtsipUploadProtocol = a})
+
+-- | OAuth access token.
+plwtsipAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+plwtsipAccessToken
+  = lens _plwtsipAccessToken
+      (\ s a -> s{_plwtsipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtsipUploadType :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+plwtsipUploadType
+  = lens _plwtsipUploadType
+      (\ s a -> s{_plwtsipUploadType = a})
+
+-- | Multipart request metadata.
+plwtsipPayload :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy SetIAMPolicyRequest
+plwtsipPayload
+  = lens _plwtsipPayload
+      (\ s a -> s{_plwtsipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+plwtsipResource :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy Text
+plwtsipResource
+  = lens _plwtsipResource
+      (\ s a -> s{_plwtsipResource = a})
+
+-- | JSONP
+plwtsipCallback :: Lens' ProjectsLocationsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+plwtsipCallback
+  = lens _plwtsipCallback
+      (\ s a -> s{_plwtsipCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesSetIAMPolicy where
+        type Rs
+               ProjectsLocationsWorkflowTemplatesSetIAMPolicy
+             = Policy
+        type Scopes
+               ProjectsLocationsWorkflowTemplatesSetIAMPolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesSetIAMPolicy'{..}
+          = go _plwtsipResource _plwtsipXgafv
+              _plwtsipUploadProtocol
+              _plwtsipAccessToken
+              _plwtsipUploadType
+              _plwtsipCallback
+              (Just AltJSON)
+              _plwtsipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/TestIAMPermissions.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.testIamPermissions@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesTestIAMPermissions
+    , ProjectsLocationsWorkflowTemplatesTestIAMPermissions
+
+    -- * Request Lenses
+    , plwttipXgafv
+    , plwttipUploadProtocol
+    , plwttipAccessToken
+    , plwttipUploadType
+    , plwttipPayload
+    , plwttipResource
+    , plwttipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.testIamPermissions@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesTestIAMPermissions' request conforms to.
+type ProjectsLocationsWorkflowTemplatesTestIAMPermissionsResource
+     =
+     "v1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesTestIAMPermissions' smart constructor.
+data ProjectsLocationsWorkflowTemplatesTestIAMPermissions = ProjectsLocationsWorkflowTemplatesTestIAMPermissions'
+    { _plwttipXgafv          :: !(Maybe Xgafv)
+    , _plwttipUploadProtocol :: !(Maybe Text)
+    , _plwttipAccessToken    :: !(Maybe Text)
+    , _plwttipUploadType     :: !(Maybe Text)
+    , _plwttipPayload        :: !TestIAMPermissionsRequest
+    , _plwttipResource       :: !Text
+    , _plwttipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwttipXgafv'
+--
+-- * 'plwttipUploadProtocol'
+--
+-- * 'plwttipAccessToken'
+--
+-- * 'plwttipUploadType'
+--
+-- * 'plwttipPayload'
+--
+-- * 'plwttipResource'
+--
+-- * 'plwttipCallback'
+projectsLocationsWorkflowTemplatesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'plwttipPayload'
+    -> Text -- ^ 'plwttipResource'
+    -> ProjectsLocationsWorkflowTemplatesTestIAMPermissions
+projectsLocationsWorkflowTemplatesTestIAMPermissions pPlwttipPayload_ pPlwttipResource_ =
+    ProjectsLocationsWorkflowTemplatesTestIAMPermissions'
+    { _plwttipXgafv = Nothing
+    , _plwttipUploadProtocol = Nothing
+    , _plwttipAccessToken = Nothing
+    , _plwttipUploadType = Nothing
+    , _plwttipPayload = pPlwttipPayload_
+    , _plwttipResource = pPlwttipResource_
+    , _plwttipCallback = Nothing
+    }
+
+-- | V1 error format.
+plwttipXgafv :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions (Maybe Xgafv)
+plwttipXgafv
+  = lens _plwttipXgafv (\ s a -> s{_plwttipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwttipUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+plwttipUploadProtocol
+  = lens _plwttipUploadProtocol
+      (\ s a -> s{_plwttipUploadProtocol = a})
+
+-- | OAuth access token.
+plwttipAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+plwttipAccessToken
+  = lens _plwttipAccessToken
+      (\ s a -> s{_plwttipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwttipUploadType :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+plwttipUploadType
+  = lens _plwttipUploadType
+      (\ s a -> s{_plwttipUploadType = a})
+
+-- | Multipart request metadata.
+plwttipPayload :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions TestIAMPermissionsRequest
+plwttipPayload
+  = lens _plwttipPayload
+      (\ s a -> s{_plwttipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+plwttipResource :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions Text
+plwttipResource
+  = lens _plwttipResource
+      (\ s a -> s{_plwttipResource = a})
+
+-- | JSONP
+plwttipCallback :: Lens' ProjectsLocationsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+plwttipCallback
+  = lens _plwttipCallback
+      (\ s a -> s{_plwttipCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesTestIAMPermissions
+         where
+        type Rs
+               ProjectsLocationsWorkflowTemplatesTestIAMPermissions
+             = TestIAMPermissionsResponse
+        type Scopes
+               ProjectsLocationsWorkflowTemplatesTestIAMPermissions
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesTestIAMPermissions'{..}
+          = go _plwttipResource _plwttipXgafv
+              _plwttipUploadProtocol
+              _plwttipAccessToken
+              _plwttipUploadType
+              _plwttipCallback
+              (Just AltJSON)
+              _plwttipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Locations/WorkflowTemplates/Update.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates (replaces) workflow template. The updated template must contain
+-- version that matches the current server version.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.locations.workflowTemplates.update@.
+module Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Update
+    (
+    -- * REST Resource
+      ProjectsLocationsWorkflowTemplatesUpdateResource
+
+    -- * Creating a Request
+    , projectsLocationsWorkflowTemplatesUpdate
+    , ProjectsLocationsWorkflowTemplatesUpdate
+
+    -- * Request Lenses
+    , plwtuXgafv
+    , plwtuUploadProtocol
+    , plwtuAccessToken
+    , plwtuUploadType
+    , plwtuPayload
+    , plwtuName
+    , plwtuCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.locations.workflowTemplates.update@ method which the
+-- 'ProjectsLocationsWorkflowTemplatesUpdate' request conforms to.
+type ProjectsLocationsWorkflowTemplatesUpdateResource
+     =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] WorkflowTemplate :>
+                       Put '[JSON] WorkflowTemplate
+
+-- | Updates (replaces) workflow template. The updated template must contain
+-- version that matches the current server version.
+--
+-- /See:/ 'projectsLocationsWorkflowTemplatesUpdate' smart constructor.
+data ProjectsLocationsWorkflowTemplatesUpdate = ProjectsLocationsWorkflowTemplatesUpdate'
+    { _plwtuXgafv          :: !(Maybe Xgafv)
+    , _plwtuUploadProtocol :: !(Maybe Text)
+    , _plwtuAccessToken    :: !(Maybe Text)
+    , _plwtuUploadType     :: !(Maybe Text)
+    , _plwtuPayload        :: !WorkflowTemplate
+    , _plwtuName           :: !Text
+    , _plwtuCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'plwtuXgafv'
+--
+-- * 'plwtuUploadProtocol'
+--
+-- * 'plwtuAccessToken'
+--
+-- * 'plwtuUploadType'
+--
+-- * 'plwtuPayload'
+--
+-- * 'plwtuName'
+--
+-- * 'plwtuCallback'
+projectsLocationsWorkflowTemplatesUpdate
+    :: WorkflowTemplate -- ^ 'plwtuPayload'
+    -> Text -- ^ 'plwtuName'
+    -> ProjectsLocationsWorkflowTemplatesUpdate
+projectsLocationsWorkflowTemplatesUpdate pPlwtuPayload_ pPlwtuName_ =
+    ProjectsLocationsWorkflowTemplatesUpdate'
+    { _plwtuXgafv = Nothing
+    , _plwtuUploadProtocol = Nothing
+    , _plwtuAccessToken = Nothing
+    , _plwtuUploadType = Nothing
+    , _plwtuPayload = pPlwtuPayload_
+    , _plwtuName = pPlwtuName_
+    , _plwtuCallback = Nothing
+    }
+
+-- | V1 error format.
+plwtuXgafv :: Lens' ProjectsLocationsWorkflowTemplatesUpdate (Maybe Xgafv)
+plwtuXgafv
+  = lens _plwtuXgafv (\ s a -> s{_plwtuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plwtuUploadProtocol :: Lens' ProjectsLocationsWorkflowTemplatesUpdate (Maybe Text)
+plwtuUploadProtocol
+  = lens _plwtuUploadProtocol
+      (\ s a -> s{_plwtuUploadProtocol = a})
+
+-- | OAuth access token.
+plwtuAccessToken :: Lens' ProjectsLocationsWorkflowTemplatesUpdate (Maybe Text)
+plwtuAccessToken
+  = lens _plwtuAccessToken
+      (\ s a -> s{_plwtuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plwtuUploadType :: Lens' ProjectsLocationsWorkflowTemplatesUpdate (Maybe Text)
+plwtuUploadType
+  = lens _plwtuUploadType
+      (\ s a -> s{_plwtuUploadType = a})
+
+-- | Multipart request metadata.
+plwtuPayload :: Lens' ProjectsLocationsWorkflowTemplatesUpdate WorkflowTemplate
+plwtuPayload
+  = lens _plwtuPayload (\ s a -> s{_plwtuPayload = a})
+
+-- | 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}
+plwtuName :: Lens' ProjectsLocationsWorkflowTemplatesUpdate Text
+plwtuName
+  = lens _plwtuName (\ s a -> s{_plwtuName = a})
+
+-- | JSONP
+plwtuCallback :: Lens' ProjectsLocationsWorkflowTemplatesUpdate (Maybe Text)
+plwtuCallback
+  = lens _plwtuCallback
+      (\ s a -> s{_plwtuCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsWorkflowTemplatesUpdate where
+        type Rs ProjectsLocationsWorkflowTemplatesUpdate =
+             WorkflowTemplate
+        type Scopes ProjectsLocationsWorkflowTemplatesUpdate
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsWorkflowTemplatesUpdate'{..}
+          = go _plwtuName _plwtuXgafv _plwtuUploadProtocol
+              _plwtuAccessToken
+              _plwtuUploadType
+              _plwtuCallback
+              (Just AltJSON)
+              _plwtuPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsWorkflowTemplatesUpdateResource)
+                      mempty
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
@@ -22,7 +22,7 @@
 --
 -- Creates a cluster in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.create@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.create@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Create
     (
     -- * REST Resource
@@ -34,12 +34,11 @@
 
     -- * Request Lenses
     , prccXgafv
+    , prccRequestId
     , prccUploadProtocol
-    , prccPp
     , prccAccessToken
     , prccUploadType
     , prccPayload
-    , prccBearerToken
     , prccRegion
     , prccProjectId
     , prccCallback
@@ -57,28 +56,25 @@
            "regions" :>
              Capture "region" Text :>
                "clusters" :>
-                 QueryParam "$.xgafv" Text :>
-                   QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
+                 QueryParam "$.xgafv" Xgafv :>
+                   QueryParam "requestId" Text :>
+                     QueryParam "upload_protocol" Text :>
                        QueryParam "access_token" Text :>
                          QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 ReqBody '[JSON] Cluster :>
-                                   Post '[JSON] Operation
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] Cluster :> Post '[JSON] Operation
 
 -- | Creates a cluster in a project.
 --
 -- /See:/ 'projectsRegionsClustersCreate' smart constructor.
 data ProjectsRegionsClustersCreate = ProjectsRegionsClustersCreate'
-    { _prccXgafv          :: !(Maybe Text)
+    { _prccXgafv          :: !(Maybe Xgafv)
+    , _prccRequestId      :: !(Maybe Text)
     , _prccUploadProtocol :: !(Maybe Text)
-    , _prccPp             :: !Bool
     , _prccAccessToken    :: !(Maybe Text)
     , _prccUploadType     :: !(Maybe Text)
     , _prccPayload        :: !Cluster
-    , _prccBearerToken    :: !(Maybe Text)
     , _prccRegion         :: !Text
     , _prccProjectId      :: !Text
     , _prccCallback       :: !(Maybe Text)
@@ -90,9 +86,9 @@
 --
 -- * 'prccXgafv'
 --
--- * 'prccUploadProtocol'
+-- * 'prccRequestId'
 --
--- * 'prccPp'
+-- * 'prccUploadProtocol'
 --
 -- * 'prccAccessToken'
 --
@@ -100,8 +96,6 @@
 --
 -- * 'prccPayload'
 --
--- * 'prccBearerToken'
---
 -- * 'prccRegion'
 --
 -- * 'prccProjectId'
@@ -115,32 +109,40 @@
 projectsRegionsClustersCreate pPrccPayload_ pPrccRegion_ pPrccProjectId_ =
     ProjectsRegionsClustersCreate'
     { _prccXgafv = Nothing
+    , _prccRequestId = Nothing
     , _prccUploadProtocol = Nothing
-    , _prccPp = True
     , _prccAccessToken = Nothing
     , _prccUploadType = Nothing
     , _prccPayload = pPrccPayload_
-    , _prccBearerToken = Nothing
     , _prccRegion = pPrccRegion_
     , _prccProjectId = pPrccProjectId_
     , _prccCallback = Nothing
     }
 
 -- | V1 error format.
-prccXgafv :: Lens' ProjectsRegionsClustersCreate (Maybe Text)
+prccXgafv :: Lens' ProjectsRegionsClustersCreate (Maybe Xgafv)
 prccXgafv
   = lens _prccXgafv (\ s a -> s{_prccXgafv = a})
 
+-- | Optional. A unique id used to identify the request. If the server
+-- receives two CreateClusterRequest requests with the same id, then the
+-- second request will be ignored and the first
+-- google.longrunning.Operation 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.
+prccRequestId :: Lens' ProjectsRegionsClustersCreate (Maybe Text)
+prccRequestId
+  = lens _prccRequestId
+      (\ s a -> s{_prccRequestId = a})
+
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
 prccUploadProtocol :: Lens' ProjectsRegionsClustersCreate (Maybe Text)
 prccUploadProtocol
   = lens _prccUploadProtocol
       (\ s a -> s{_prccUploadProtocol = a})
 
--- | Pretty-print response.
-prccPp :: Lens' ProjectsRegionsClustersCreate Bool
-prccPp = lens _prccPp (\ s a -> s{_prccPp = a})
-
 -- | OAuth access token.
 prccAccessToken :: Lens' ProjectsRegionsClustersCreate (Maybe Text)
 prccAccessToken
@@ -158,18 +160,12 @@
 prccPayload
   = lens _prccPayload (\ s a -> s{_prccPayload = a})
 
--- | OAuth bearer token.
-prccBearerToken :: Lens' ProjectsRegionsClustersCreate (Maybe Text)
-prccBearerToken
-  = lens _prccBearerToken
-      (\ s a -> s{_prccBearerToken = a})
-
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prccRegion :: Lens' ProjectsRegionsClustersCreate Text
 prccRegion
   = lens _prccRegion (\ s a -> s{_prccRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the cluster
+-- | Required. The ID of the Google Cloud Platform project that the cluster
 -- belongs to.
 prccProjectId :: Lens' ProjectsRegionsClustersCreate Text
 prccProjectId
@@ -188,11 +184,10 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsRegionsClustersCreate'{..}
           = go _prccProjectId _prccRegion _prccXgafv
+              _prccRequestId
               _prccUploadProtocol
-              (Just _prccPp)
               _prccAccessToken
               _prccUploadType
-              _prccBearerToken
               _prccCallback
               (Just AltJSON)
               _prccPayload
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
@@ -22,7 +22,7 @@
 --
 -- Deletes a cluster in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.delete@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.delete@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Delete
     (
     -- * REST Resource
@@ -34,11 +34,11 @@
 
     -- * Request Lenses
     , prcdXgafv
+    , prcdRequestId
+    , prcdClusterUuid
     , prcdUploadProtocol
-    , prcdPp
     , prcdAccessToken
     , prcdUploadType
-    , prcdBearerToken
     , prcdClusterName
     , prcdRegion
     , prcdProjectId
@@ -58,12 +58,12 @@
              Capture "region" Text :>
                "clusters" :>
                  Capture "clusterName" Text :>
-                   QueryParam "$.xgafv" Text :>
-                     QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "clusterUuid" Text :>
+                         QueryParam "upload_protocol" Text :>
+                           QueryParam "access_token" Text :>
+                             QueryParam "uploadType" Text :>
                                QueryParam "callback" Text :>
                                  QueryParam "alt" AltJSON :>
                                    Delete '[JSON] Operation
@@ -72,12 +72,12 @@
 --
 -- /See:/ 'projectsRegionsClustersDelete' smart constructor.
 data ProjectsRegionsClustersDelete = ProjectsRegionsClustersDelete'
-    { _prcdXgafv          :: !(Maybe Text)
+    { _prcdXgafv          :: !(Maybe Xgafv)
+    , _prcdRequestId      :: !(Maybe Text)
+    , _prcdClusterUuid    :: !(Maybe Text)
     , _prcdUploadProtocol :: !(Maybe Text)
-    , _prcdPp             :: !Bool
     , _prcdAccessToken    :: !(Maybe Text)
     , _prcdUploadType     :: !(Maybe Text)
-    , _prcdBearerToken    :: !(Maybe Text)
     , _prcdClusterName    :: !Text
     , _prcdRegion         :: !Text
     , _prcdProjectId      :: !Text
@@ -90,16 +90,16 @@
 --
 -- * 'prcdXgafv'
 --
--- * 'prcdUploadProtocol'
+-- * 'prcdRequestId'
 --
--- * 'prcdPp'
+-- * 'prcdClusterUuid'
 --
+-- * 'prcdUploadProtocol'
+--
 -- * 'prcdAccessToken'
 --
 -- * 'prcdUploadType'
 --
--- * 'prcdBearerToken'
---
 -- * 'prcdClusterName'
 --
 -- * 'prcdRegion'
@@ -115,11 +115,11 @@
 projectsRegionsClustersDelete pPrcdClusterName_ pPrcdRegion_ pPrcdProjectId_ =
     ProjectsRegionsClustersDelete'
     { _prcdXgafv = Nothing
+    , _prcdRequestId = Nothing
+    , _prcdClusterUuid = Nothing
     , _prcdUploadProtocol = Nothing
-    , _prcdPp = True
     , _prcdAccessToken = Nothing
     , _prcdUploadType = Nothing
-    , _prcdBearerToken = Nothing
     , _prcdClusterName = pPrcdClusterName_
     , _prcdRegion = pPrcdRegion_
     , _prcdProjectId = pPrcdProjectId_
@@ -127,20 +127,36 @@
     }
 
 -- | V1 error format.
-prcdXgafv :: Lens' ProjectsRegionsClustersDelete (Maybe Text)
+prcdXgafv :: Lens' ProjectsRegionsClustersDelete (Maybe Xgafv)
 prcdXgafv
   = lens _prcdXgafv (\ s a -> s{_prcdXgafv = a})
 
+-- | Optional. A unique id used to identify the request. If the server
+-- receives two DeleteClusterRequest requests with the same id, then the
+-- second request will be ignored and the first
+-- google.longrunning.Operation 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.
+prcdRequestId :: Lens' ProjectsRegionsClustersDelete (Maybe Text)
+prcdRequestId
+  = lens _prcdRequestId
+      (\ s a -> s{_prcdRequestId = a})
+
+-- | Optional. Specifying the cluster_uuid means the RPC should fail (with
+-- error NOT_FOUND) if cluster with specified UUID does not exist.
+prcdClusterUuid :: Lens' ProjectsRegionsClustersDelete (Maybe Text)
+prcdClusterUuid
+  = lens _prcdClusterUuid
+      (\ s a -> s{_prcdClusterUuid = a})
+
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
 prcdUploadProtocol :: Lens' ProjectsRegionsClustersDelete (Maybe Text)
 prcdUploadProtocol
   = lens _prcdUploadProtocol
       (\ s a -> s{_prcdUploadProtocol = a})
 
--- | Pretty-print response.
-prcdPp :: Lens' ProjectsRegionsClustersDelete Bool
-prcdPp = lens _prcdPp (\ s a -> s{_prcdPp = a})
-
 -- | OAuth access token.
 prcdAccessToken :: Lens' ProjectsRegionsClustersDelete (Maybe Text)
 prcdAccessToken
@@ -153,24 +169,18 @@
   = lens _prcdUploadType
       (\ s a -> s{_prcdUploadType = a})
 
--- | OAuth bearer token.
-prcdBearerToken :: Lens' ProjectsRegionsClustersDelete (Maybe Text)
-prcdBearerToken
-  = lens _prcdBearerToken
-      (\ s a -> s{_prcdBearerToken = a})
-
--- | [Required] The cluster name.
+-- | Required. The cluster name.
 prcdClusterName :: Lens' ProjectsRegionsClustersDelete Text
 prcdClusterName
   = lens _prcdClusterName
       (\ s a -> s{_prcdClusterName = a})
 
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prcdRegion :: Lens' ProjectsRegionsClustersDelete Text
 prcdRegion
   = lens _prcdRegion (\ s a -> s{_prcdRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the cluster
+-- | Required. The ID of the Google Cloud Platform project that the cluster
 -- belongs to.
 prcdProjectId :: Lens' ProjectsRegionsClustersDelete Text
 prcdProjectId
@@ -190,11 +200,11 @@
         requestClient ProjectsRegionsClustersDelete'{..}
           = go _prcdProjectId _prcdRegion _prcdClusterName
               _prcdXgafv
+              _prcdRequestId
+              _prcdClusterUuid
               _prcdUploadProtocol
-              (Just _prcdPp)
               _prcdAccessToken
               _prcdUploadType
-              _prcdBearerToken
               _prcdCallback
               (Just AltJSON)
               dataprocService
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
@@ -21,9 +21,9 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets cluster diagnostic information. After the operation completes, the
--- Operation.response field contains \`DiagnoseClusterOutputLocation\`.
+-- Operation.response field contains DiagnoseClusterOutputLocation.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.diagnose@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.diagnose@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Diagnose
     (
     -- * REST Resource
@@ -36,11 +36,9 @@
     -- * Request Lenses
     , pXgafv
     , pUploadProtocol
-    , pPp
     , pAccessToken
     , pUploadType
     , pPayload
-    , pBearerToken
     , pClusterName
     , pRegion
     , pProjectId
@@ -60,29 +58,25 @@
              Capture "region" Text :>
                "clusters" :>
                  CaptureMode "clusterName" "diagnose" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :>
-                                   ReqBody '[JSON] DiagnoseClusterRequest :>
-                                     Post '[JSON] Operation
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] DiagnoseClusterRequest :>
+                                 Post '[JSON] Operation
 
 -- | Gets cluster diagnostic information. After the operation completes, the
--- Operation.response field contains \`DiagnoseClusterOutputLocation\`.
+-- Operation.response field contains DiagnoseClusterOutputLocation.
 --
 -- /See:/ 'projectsRegionsClustersDiagnose' smart constructor.
 data ProjectsRegionsClustersDiagnose = ProjectsRegionsClustersDiagnose'
-    { _pXgafv          :: !(Maybe Text)
+    { _pXgafv          :: !(Maybe Xgafv)
     , _pUploadProtocol :: !(Maybe Text)
-    , _pPp             :: !Bool
     , _pAccessToken    :: !(Maybe Text)
     , _pUploadType     :: !(Maybe Text)
     , _pPayload        :: !DiagnoseClusterRequest
-    , _pBearerToken    :: !(Maybe Text)
     , _pClusterName    :: !Text
     , _pRegion         :: !Text
     , _pProjectId      :: !Text
@@ -97,16 +91,12 @@
 --
 -- * 'pUploadProtocol'
 --
--- * 'pPp'
---
 -- * 'pAccessToken'
 --
 -- * 'pUploadType'
 --
 -- * 'pPayload'
 --
--- * 'pBearerToken'
---
 -- * 'pClusterName'
 --
 -- * 'pRegion'
@@ -124,11 +114,9 @@
     ProjectsRegionsClustersDiagnose'
     { _pXgafv = Nothing
     , _pUploadProtocol = Nothing
-    , _pPp = True
     , _pAccessToken = Nothing
     , _pUploadType = Nothing
     , _pPayload = pPPayload_
-    , _pBearerToken = Nothing
     , _pClusterName = pPClusterName_
     , _pRegion = pPRegion_
     , _pProjectId = pPProjectId_
@@ -136,7 +124,7 @@
     }
 
 -- | V1 error format.
-pXgafv :: Lens' ProjectsRegionsClustersDiagnose (Maybe Text)
+pXgafv :: Lens' ProjectsRegionsClustersDiagnose (Maybe Xgafv)
 pXgafv = lens _pXgafv (\ s a -> s{_pXgafv = a})
 
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
@@ -145,10 +133,6 @@
   = lens _pUploadProtocol
       (\ s a -> s{_pUploadProtocol = a})
 
--- | Pretty-print response.
-pPp :: Lens' ProjectsRegionsClustersDiagnose Bool
-pPp = lens _pPp (\ s a -> s{_pPp = a})
-
 -- | OAuth access token.
 pAccessToken :: Lens' ProjectsRegionsClustersDiagnose (Maybe Text)
 pAccessToken
@@ -163,21 +147,16 @@
 pPayload :: Lens' ProjectsRegionsClustersDiagnose DiagnoseClusterRequest
 pPayload = lens _pPayload (\ s a -> s{_pPayload = a})
 
--- | OAuth bearer token.
-pBearerToken :: Lens' ProjectsRegionsClustersDiagnose (Maybe Text)
-pBearerToken
-  = lens _pBearerToken (\ s a -> s{_pBearerToken = a})
-
--- | [Required] The cluster name.
+-- | Required. The cluster name.
 pClusterName :: Lens' ProjectsRegionsClustersDiagnose Text
 pClusterName
   = lens _pClusterName (\ s a -> s{_pClusterName = a})
 
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 pRegion :: Lens' ProjectsRegionsClustersDiagnose Text
 pRegion = lens _pRegion (\ s a -> s{_pRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the cluster
+-- | Required. The ID of the Google Cloud Platform project that the cluster
 -- belongs to.
 pProjectId :: Lens' ProjectsRegionsClustersDiagnose Text
 pProjectId
@@ -196,10 +175,8 @@
         requestClient ProjectsRegionsClustersDiagnose'{..}
           = go _pProjectId _pRegion _pClusterName _pXgafv
               _pUploadProtocol
-              (Just _pPp)
               _pAccessToken
               _pUploadType
-              _pBearerToken
               _pCallback
               (Just AltJSON)
               _pPayload
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
@@ -22,7 +22,7 @@
 --
 -- Gets the resource representation for a cluster in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.get@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.get@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Get
     (
     -- * REST Resource
@@ -35,10 +35,8 @@
     -- * Request Lenses
     , prcgXgafv
     , prcgUploadProtocol
-    , prcgPp
     , prcgAccessToken
     , prcgUploadType
-    , prcgBearerToken
     , prcgClusterName
     , prcgRegion
     , prcgProjectId
@@ -58,25 +56,21 @@
              Capture "region" Text :>
                "clusters" :>
                  Capture "clusterName" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :> Get '[JSON] Cluster
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Cluster
 
 -- | Gets the resource representation for a cluster in a project.
 --
 -- /See:/ 'projectsRegionsClustersGet' smart constructor.
 data ProjectsRegionsClustersGet = ProjectsRegionsClustersGet'
-    { _prcgXgafv          :: !(Maybe Text)
+    { _prcgXgafv          :: !(Maybe Xgafv)
     , _prcgUploadProtocol :: !(Maybe Text)
-    , _prcgPp             :: !Bool
     , _prcgAccessToken    :: !(Maybe Text)
     , _prcgUploadType     :: !(Maybe Text)
-    , _prcgBearerToken    :: !(Maybe Text)
     , _prcgClusterName    :: !Text
     , _prcgRegion         :: !Text
     , _prcgProjectId      :: !Text
@@ -91,14 +85,10 @@
 --
 -- * 'prcgUploadProtocol'
 --
--- * 'prcgPp'
---
 -- * 'prcgAccessToken'
 --
 -- * 'prcgUploadType'
 --
--- * 'prcgBearerToken'
---
 -- * 'prcgClusterName'
 --
 -- * 'prcgRegion'
@@ -115,10 +105,8 @@
     ProjectsRegionsClustersGet'
     { _prcgXgafv = Nothing
     , _prcgUploadProtocol = Nothing
-    , _prcgPp = True
     , _prcgAccessToken = Nothing
     , _prcgUploadType = Nothing
-    , _prcgBearerToken = Nothing
     , _prcgClusterName = pPrcgClusterName_
     , _prcgRegion = pPrcgRegion_
     , _prcgProjectId = pPrcgProjectId_
@@ -126,7 +114,7 @@
     }
 
 -- | V1 error format.
-prcgXgafv :: Lens' ProjectsRegionsClustersGet (Maybe Text)
+prcgXgafv :: Lens' ProjectsRegionsClustersGet (Maybe Xgafv)
 prcgXgafv
   = lens _prcgXgafv (\ s a -> s{_prcgXgafv = a})
 
@@ -136,10 +124,6 @@
   = lens _prcgUploadProtocol
       (\ s a -> s{_prcgUploadProtocol = a})
 
--- | Pretty-print response.
-prcgPp :: Lens' ProjectsRegionsClustersGet Bool
-prcgPp = lens _prcgPp (\ s a -> s{_prcgPp = a})
-
 -- | OAuth access token.
 prcgAccessToken :: Lens' ProjectsRegionsClustersGet (Maybe Text)
 prcgAccessToken
@@ -152,24 +136,18 @@
   = lens _prcgUploadType
       (\ s a -> s{_prcgUploadType = a})
 
--- | OAuth bearer token.
-prcgBearerToken :: Lens' ProjectsRegionsClustersGet (Maybe Text)
-prcgBearerToken
-  = lens _prcgBearerToken
-      (\ s a -> s{_prcgBearerToken = a})
-
--- | [Required] The cluster name.
+-- | Required. The cluster name.
 prcgClusterName :: Lens' ProjectsRegionsClustersGet Text
 prcgClusterName
   = lens _prcgClusterName
       (\ s a -> s{_prcgClusterName = a})
 
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prcgRegion :: Lens' ProjectsRegionsClustersGet Text
 prcgRegion
   = lens _prcgRegion (\ s a -> s{_prcgRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the cluster
+-- | Required. The ID of the Google Cloud Platform project that the cluster
 -- belongs to.
 prcgProjectId :: Lens' ProjectsRegionsClustersGet Text
 prcgProjectId
@@ -190,10 +168,8 @@
           = go _prcgProjectId _prcgRegion _prcgClusterName
               _prcgXgafv
               _prcgUploadProtocol
-              (Just _prcgPp)
               _prcgAccessToken
               _prcgUploadType
-              _prcgBearerToken
               _prcgCallback
               (Just AltJSON)
               dataprocService
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/GetIAMPolicy.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Clusters.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.getIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsClustersGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsClustersGetIAMPolicy
+    , ProjectsRegionsClustersGetIAMPolicy
+
+    -- * Request Lenses
+    , prcgipXgafv
+    , prcgipUploadProtocol
+    , prcgipAccessToken
+    , prcgipUploadType
+    , prcgipPayload
+    , prcgipResource
+    , prcgipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.clusters.getIamPolicy@ method which the
+-- 'ProjectsRegionsClustersGetIAMPolicy' request conforms to.
+type ProjectsRegionsClustersGetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ 'projectsRegionsClustersGetIAMPolicy' smart constructor.
+data ProjectsRegionsClustersGetIAMPolicy = ProjectsRegionsClustersGetIAMPolicy'
+    { _prcgipXgafv          :: !(Maybe Xgafv)
+    , _prcgipUploadProtocol :: !(Maybe Text)
+    , _prcgipAccessToken    :: !(Maybe Text)
+    , _prcgipUploadType     :: !(Maybe Text)
+    , _prcgipPayload        :: !GetIAMPolicyRequest
+    , _prcgipResource       :: !Text
+    , _prcgipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prcgipXgafv'
+--
+-- * 'prcgipUploadProtocol'
+--
+-- * 'prcgipAccessToken'
+--
+-- * 'prcgipUploadType'
+--
+-- * 'prcgipPayload'
+--
+-- * 'prcgipResource'
+--
+-- * 'prcgipCallback'
+projectsRegionsClustersGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'prcgipPayload'
+    -> Text -- ^ 'prcgipResource'
+    -> ProjectsRegionsClustersGetIAMPolicy
+projectsRegionsClustersGetIAMPolicy pPrcgipPayload_ pPrcgipResource_ =
+    ProjectsRegionsClustersGetIAMPolicy'
+    { _prcgipXgafv = Nothing
+    , _prcgipUploadProtocol = Nothing
+    , _prcgipAccessToken = Nothing
+    , _prcgipUploadType = Nothing
+    , _prcgipPayload = pPrcgipPayload_
+    , _prcgipResource = pPrcgipResource_
+    , _prcgipCallback = Nothing
+    }
+
+-- | V1 error format.
+prcgipXgafv :: Lens' ProjectsRegionsClustersGetIAMPolicy (Maybe Xgafv)
+prcgipXgafv
+  = lens _prcgipXgafv (\ s a -> s{_prcgipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prcgipUploadProtocol :: Lens' ProjectsRegionsClustersGetIAMPolicy (Maybe Text)
+prcgipUploadProtocol
+  = lens _prcgipUploadProtocol
+      (\ s a -> s{_prcgipUploadProtocol = a})
+
+-- | OAuth access token.
+prcgipAccessToken :: Lens' ProjectsRegionsClustersGetIAMPolicy (Maybe Text)
+prcgipAccessToken
+  = lens _prcgipAccessToken
+      (\ s a -> s{_prcgipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prcgipUploadType :: Lens' ProjectsRegionsClustersGetIAMPolicy (Maybe Text)
+prcgipUploadType
+  = lens _prcgipUploadType
+      (\ s a -> s{_prcgipUploadType = a})
+
+-- | Multipart request metadata.
+prcgipPayload :: Lens' ProjectsRegionsClustersGetIAMPolicy GetIAMPolicyRequest
+prcgipPayload
+  = lens _prcgipPayload
+      (\ s a -> s{_prcgipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+prcgipResource :: Lens' ProjectsRegionsClustersGetIAMPolicy Text
+prcgipResource
+  = lens _prcgipResource
+      (\ s a -> s{_prcgipResource = a})
+
+-- | JSONP
+prcgipCallback :: Lens' ProjectsRegionsClustersGetIAMPolicy (Maybe Text)
+prcgipCallback
+  = lens _prcgipCallback
+      (\ s a -> s{_prcgipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsClustersGetIAMPolicy where
+        type Rs ProjectsRegionsClustersGetIAMPolicy = Policy
+        type Scopes ProjectsRegionsClustersGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsClustersGetIAMPolicy'{..}
+          = go _prcgipResource _prcgipXgafv
+              _prcgipUploadProtocol
+              _prcgipAccessToken
+              _prcgipUploadType
+              _prcgipCallback
+              (Just AltJSON)
+              _prcgipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsClustersGetIAMPolicyResource)
+                      mempty
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
@@ -22,7 +22,7 @@
 --
 -- Lists all regions\/{region}\/clusters in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.list@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.list@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.List
     (
     -- * REST Resource
@@ -35,10 +35,8 @@
     -- * Request Lenses
     , prclXgafv
     , prclUploadProtocol
-    , prclPp
     , prclAccessToken
     , prclUploadType
-    , prclBearerToken
     , prclFilter
     , prclRegion
     , prclPageToken
@@ -59,29 +57,25 @@
            "regions" :>
              Capture "region" Text :>
                "clusters" :>
-                 QueryParam "$.xgafv" Text :>
+                 QueryParam "$.xgafv" Xgafv :>
                    QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
-                       QueryParam "access_token" Text :>
-                         QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "filter" Text :>
-                               QueryParam "pageToken" Text :>
-                                 QueryParam "pageSize" (Textual Int32) :>
-                                   QueryParam "callback" Text :>
-                                     QueryParam "alt" AltJSON :>
-                                       Get '[JSON] ListClustersResponse
+                     QueryParam "access_token" Text :>
+                       QueryParam "uploadType" Text :>
+                         QueryParam "filter" Text :>
+                           QueryParam "pageToken" Text :>
+                             QueryParam "pageSize" (Textual Int32) :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   Get '[JSON] ListClustersResponse
 
 -- | Lists all regions\/{region}\/clusters in a project.
 --
 -- /See:/ 'projectsRegionsClustersList' smart constructor.
 data ProjectsRegionsClustersList = ProjectsRegionsClustersList'
-    { _prclXgafv          :: !(Maybe Text)
+    { _prclXgafv          :: !(Maybe Xgafv)
     , _prclUploadProtocol :: !(Maybe Text)
-    , _prclPp             :: !Bool
     , _prclAccessToken    :: !(Maybe Text)
     , _prclUploadType     :: !(Maybe Text)
-    , _prclBearerToken    :: !(Maybe Text)
     , _prclFilter         :: !(Maybe Text)
     , _prclRegion         :: !Text
     , _prclPageToken      :: !(Maybe Text)
@@ -98,14 +92,10 @@
 --
 -- * 'prclUploadProtocol'
 --
--- * 'prclPp'
---
 -- * 'prclAccessToken'
 --
 -- * 'prclUploadType'
 --
--- * 'prclBearerToken'
---
 -- * 'prclFilter'
 --
 -- * 'prclRegion'
@@ -125,10 +115,8 @@
     ProjectsRegionsClustersList'
     { _prclXgafv = Nothing
     , _prclUploadProtocol = Nothing
-    , _prclPp = True
     , _prclAccessToken = Nothing
     , _prclUploadType = Nothing
-    , _prclBearerToken = Nothing
     , _prclFilter = Nothing
     , _prclRegion = pPrclRegion_
     , _prclPageToken = Nothing
@@ -138,7 +126,7 @@
     }
 
 -- | V1 error format.
-prclXgafv :: Lens' ProjectsRegionsClustersList (Maybe Text)
+prclXgafv :: Lens' ProjectsRegionsClustersList (Maybe Xgafv)
 prclXgafv
   = lens _prclXgafv (\ s a -> s{_prclXgafv = a})
 
@@ -148,10 +136,6 @@
   = lens _prclUploadProtocol
       (\ s a -> s{_prclUploadProtocol = a})
 
--- | Pretty-print response.
-prclPp :: Lens' ProjectsRegionsClustersList Bool
-prclPp = lens _prclPp (\ s a -> s{_prclPp = a})
-
 -- | OAuth access token.
 prclAccessToken :: Lens' ProjectsRegionsClustersList (Maybe Text)
 prclAccessToken
@@ -164,51 +148,41 @@
   = lens _prclUploadType
       (\ s a -> s{_prclUploadType = a})
 
--- | OAuth bearer token.
-prclBearerToken :: Lens' ProjectsRegionsClustersList (Maybe Text)
-prclBearerToken
-  = lens _prclBearerToken
-      (\ s a -> s{_prclBearerToken = a})
-
--- | [Optional] A filter constraining the clusters to list. Filters are
--- case-sensitive and have the following syntax: field:value [field:value]
--- ... or field = value [AND [field = value]] ... where **field** is one of
--- \`status.state\`, \`clusterName\`, or \`labels.[KEY]\`, and \`[KEY]\` is
--- a label key. **value** can be \`*\` to match all values.
--- \`status.state\` can be one of the following: \`ACTIVE\`, \`INACTIVE\`,
--- \`CREATING\`, \`RUNNING\`, \`ERROR\`, \`DELETING\`, or \`UPDATING\`.
--- \`ACTIVE\` contains the \`CREATING\`, \`UPDATING\`, and \`RUNNING\`
--- states. \`INACTIVE\` contains the \`DELETING\` and \`ERROR\` states.
--- \`clusterName\` is the name of the cluster provided at creation time.
--- Only the logical \`AND\` operator is supported; space-separated items
--- are treated as having an implicit \`AND\` operator. Example valid
--- filters are: status.state:ACTIVE clusterName:mycluster
--- labels.env:staging \\ labels.starred:* and status.state = ACTIVE AND
--- clusterName = mycluster \\ AND labels.env = staging AND labels.starred =
--- *
+-- | Optional. A filter constraining the clusters to list. Filters are
+-- case-sensitive and have the following syntax:field = value AND field =
+-- value ...where field is one of status.state, clusterName, or
+-- labels.[KEY], and [KEY] is a label key. value can be * to match all
+-- values. status.state can be one of the following: ACTIVE, INACTIVE,
+-- CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the
+-- CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING
+-- and ERROR states. clusterName is the name of the cluster provided at
+-- creation time. Only the logical AND operator is supported;
+-- space-separated items are treated as having an implicit AND
+-- operator.Example filter:status.state = ACTIVE AND clusterName =
+-- mycluster AND labels.env = staging AND labels.starred = *
 prclFilter :: Lens' ProjectsRegionsClustersList (Maybe Text)
 prclFilter
   = lens _prclFilter (\ s a -> s{_prclFilter = a})
 
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prclRegion :: Lens' ProjectsRegionsClustersList Text
 prclRegion
   = lens _prclRegion (\ s a -> s{_prclRegion = a})
 
--- | [Optional] The standard List page token.
+-- | Optional. The standard List page token.
 prclPageToken :: Lens' ProjectsRegionsClustersList (Maybe Text)
 prclPageToken
   = lens _prclPageToken
       (\ s a -> s{_prclPageToken = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the cluster
+-- | Required. The ID of the Google Cloud Platform project that the cluster
 -- belongs to.
 prclProjectId :: Lens' ProjectsRegionsClustersList Text
 prclProjectId
   = lens _prclProjectId
       (\ s a -> s{_prclProjectId = a})
 
--- | [Optional] The standard List page size.
+-- | Optional. The standard List page size.
 prclPageSize :: Lens' ProjectsRegionsClustersList (Maybe Int32)
 prclPageSize
   = lens _prclPageSize (\ s a -> s{_prclPageSize = a})
@@ -228,10 +202,8 @@
         requestClient ProjectsRegionsClustersList'{..}
           = go _prclProjectId _prclRegion _prclXgafv
               _prclUploadProtocol
-              (Just _prclPp)
               _prclAccessToken
               _prclUploadType
-              _prclBearerToken
               _prclFilter
               _prclPageToken
               _prclPageSize
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
@@ -22,7 +22,7 @@
 --
 -- Updates a cluster in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.patch@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.patch@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Patch
     (
     -- * REST Resource
@@ -34,13 +34,13 @@
 
     -- * Request Lenses
     , prcpXgafv
+    , prcpRequestId
     , prcpUploadProtocol
     , prcpUpdateMask
-    , prcpPp
     , prcpAccessToken
     , prcpUploadType
     , prcpPayload
-    , prcpBearerToken
+    , prcpGracefulDecommissionTimeout
     , prcpClusterName
     , prcpRegion
     , prcpProjectId
@@ -60,13 +60,15 @@
              Capture "region" Text :>
                "clusters" :>
                  Capture "clusterName" Text :>
-                   QueryParam "$.xgafv" Text :>
-                     QueryParam "upload_protocol" Text :>
-                       QueryParam "updateMask" Text :>
-                         QueryParam "pp" Bool :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "requestId" Text :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "updateMask" GFieldMask :>
                            QueryParam "access_token" Text :>
                              QueryParam "uploadType" Text :>
-                               QueryParam "bearer_token" Text :>
+                               QueryParam "gracefulDecommissionTimeout"
+                                 GDuration
+                                 :>
                                  QueryParam "callback" Text :>
                                    QueryParam "alt" AltJSON :>
                                      ReqBody '[JSON] Cluster :>
@@ -76,18 +78,18 @@
 --
 -- /See:/ 'projectsRegionsClustersPatch' smart constructor.
 data ProjectsRegionsClustersPatch = ProjectsRegionsClustersPatch'
-    { _prcpXgafv          :: !(Maybe Text)
-    , _prcpUploadProtocol :: !(Maybe Text)
-    , _prcpUpdateMask     :: !(Maybe Text)
-    , _prcpPp             :: !Bool
-    , _prcpAccessToken    :: !(Maybe Text)
-    , _prcpUploadType     :: !(Maybe Text)
-    , _prcpPayload        :: !Cluster
-    , _prcpBearerToken    :: !(Maybe Text)
-    , _prcpClusterName    :: !Text
-    , _prcpRegion         :: !Text
-    , _prcpProjectId      :: !Text
-    , _prcpCallback       :: !(Maybe Text)
+    { _prcpXgafv                       :: !(Maybe Xgafv)
+    , _prcpRequestId                   :: !(Maybe Text)
+    , _prcpUploadProtocol              :: !(Maybe Text)
+    , _prcpUpdateMask                  :: !(Maybe GFieldMask)
+    , _prcpAccessToken                 :: !(Maybe Text)
+    , _prcpUploadType                  :: !(Maybe Text)
+    , _prcpPayload                     :: !Cluster
+    , _prcpGracefulDecommissionTimeout :: !(Maybe GDuration)
+    , _prcpClusterName                 :: !Text
+    , _prcpRegion                      :: !Text
+    , _prcpProjectId                   :: !Text
+    , _prcpCallback                    :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsRegionsClustersPatch' with the minimum fields required to make a request.
@@ -96,19 +98,19 @@
 --
 -- * 'prcpXgafv'
 --
+-- * 'prcpRequestId'
+--
 -- * 'prcpUploadProtocol'
 --
 -- * 'prcpUpdateMask'
 --
--- * 'prcpPp'
---
 -- * 'prcpAccessToken'
 --
 -- * 'prcpUploadType'
 --
 -- * 'prcpPayload'
 --
--- * 'prcpBearerToken'
+-- * 'prcpGracefulDecommissionTimeout'
 --
 -- * 'prcpClusterName'
 --
@@ -126,13 +128,13 @@
 projectsRegionsClustersPatch pPrcpPayload_ pPrcpClusterName_ pPrcpRegion_ pPrcpProjectId_ =
     ProjectsRegionsClustersPatch'
     { _prcpXgafv = Nothing
+    , _prcpRequestId = Nothing
     , _prcpUploadProtocol = Nothing
     , _prcpUpdateMask = Nothing
-    , _prcpPp = True
     , _prcpAccessToken = Nothing
     , _prcpUploadType = Nothing
     , _prcpPayload = pPrcpPayload_
-    , _prcpBearerToken = Nothing
+    , _prcpGracefulDecommissionTimeout = Nothing
     , _prcpClusterName = pPrcpClusterName_
     , _prcpRegion = pPrcpRegion_
     , _prcpProjectId = pPrcpProjectId_
@@ -140,38 +142,51 @@
     }
 
 -- | V1 error format.
-prcpXgafv :: Lens' ProjectsRegionsClustersPatch (Maybe Text)
+prcpXgafv :: Lens' ProjectsRegionsClustersPatch (Maybe Xgafv)
 prcpXgafv
   = lens _prcpXgafv (\ s a -> s{_prcpXgafv = a})
 
+-- | Optional. A unique id used to identify the request. If the server
+-- receives two UpdateClusterRequest requests with the same id, then the
+-- second request will be ignored and the first
+-- google.longrunning.Operation 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.
+prcpRequestId :: Lens' ProjectsRegionsClustersPatch (Maybe Text)
+prcpRequestId
+  = lens _prcpRequestId
+      (\ s a -> s{_prcpRequestId = a})
+
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
 prcpUploadProtocol :: Lens' ProjectsRegionsClustersPatch (Maybe Text)
 prcpUploadProtocol
   = lens _prcpUploadProtocol
       (\ s a -> s{_prcpUploadProtocol = a})
 
--- | [Required] Specifies the path, relative to Cluster, of the field to
+-- | Required. Specifies the path, relative to Cluster, of the field to
 -- update. For example, to change the number of workers in a cluster to 5,
 -- the update_mask parameter would be specified as
--- config.worker_config.num_instances, and the \`PATCH\` request body would
+-- config.worker_config.num_instances, and the PATCH request body would
 -- specify the new value, as follows: { \"config\":{ \"workerConfig\":{
 -- \"numInstances\":\"5\" } } } Similarly, to change the number of
 -- preemptible workers in a cluster to 5, the update_mask parameter would
--- be config.secondary_worker_config.num_instances, and the \`PATCH\`
--- request body would be set as follows: { \"config\":{
--- \"secondaryWorkerConfig\":{ \"numInstances\":\"5\" } } } Note:
--- Currently, config.worker_config.num_instances and
--- config.secondary_worker_config.num_instances are the only fields that
--- can be updated.
-prcpUpdateMask :: Lens' ProjectsRegionsClustersPatch (Maybe Text)
+-- be config.secondary_worker_config.num_instances, and the PATCH request
+-- 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
+-- >   ---------------------------------------------------- -------------------------------
+prcpUpdateMask :: Lens' ProjectsRegionsClustersPatch (Maybe GFieldMask)
 prcpUpdateMask
   = lens _prcpUpdateMask
       (\ s a -> s{_prcpUpdateMask = a})
 
--- | Pretty-print response.
-prcpPp :: Lens' ProjectsRegionsClustersPatch Bool
-prcpPp = lens _prcpPp (\ s a -> s{_prcpPp = a})
-
 -- | OAuth access token.
 prcpAccessToken :: Lens' ProjectsRegionsClustersPatch (Maybe Text)
 prcpAccessToken
@@ -189,24 +204,31 @@
 prcpPayload
   = lens _prcpPayload (\ s a -> s{_prcpPayload = a})
 
--- | OAuth bearer token.
-prcpBearerToken :: Lens' ProjectsRegionsClustersPatch (Maybe Text)
-prcpBearerToken
-  = lens _prcpBearerToken
-      (\ s a -> s{_prcpBearerToken = a})
+-- | Optional. Timeout for graceful YARN decomissioning. Graceful
+-- decommissioning allows removing nodes from the cluster without
+-- interrupting jobs in progress. Timeout specifies how long to wait for
+-- jobs in progress to finish before forcefully removing nodes (and
+-- potentially interrupting jobs). Default timeout is 0 (for forceful
+-- decommission), and the maximum allowed timeout is 1 day.Only supported
+-- on Dataproc image versions 1.2 and higher.
+prcpGracefulDecommissionTimeout :: Lens' ProjectsRegionsClustersPatch (Maybe Scientific)
+prcpGracefulDecommissionTimeout
+  = lens _prcpGracefulDecommissionTimeout
+      (\ s a -> s{_prcpGracefulDecommissionTimeout = a})
+      . mapping _GDuration
 
--- | [Required] The cluster name.
+-- | Required. The cluster name.
 prcpClusterName :: Lens' ProjectsRegionsClustersPatch Text
 prcpClusterName
   = lens _prcpClusterName
       (\ s a -> s{_prcpClusterName = a})
 
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prcpRegion :: Lens' ProjectsRegionsClustersPatch Text
 prcpRegion
   = lens _prcpRegion (\ s a -> s{_prcpRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project the cluster
+-- | Required. The ID of the Google Cloud Platform project the cluster
 -- belongs to.
 prcpProjectId :: Lens' ProjectsRegionsClustersPatch Text
 prcpProjectId
@@ -226,12 +248,12 @@
         requestClient ProjectsRegionsClustersPatch'{..}
           = go _prcpProjectId _prcpRegion _prcpClusterName
               _prcpXgafv
+              _prcpRequestId
               _prcpUploadProtocol
               _prcpUpdateMask
-              (Just _prcpPp)
               _prcpAccessToken
               _prcpUploadType
-              _prcpBearerToken
+              _prcpGracefulDecommissionTimeout
               _prcpCallback
               (Just AltJSON)
               _prcpPayload
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/SetIAMPolicy.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Clusters.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.setIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsClustersSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsClustersSetIAMPolicy
+    , ProjectsRegionsClustersSetIAMPolicy
+
+    -- * Request Lenses
+    , prcsipXgafv
+    , prcsipUploadProtocol
+    , prcsipAccessToken
+    , prcsipUploadType
+    , prcsipPayload
+    , prcsipResource
+    , prcsipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.clusters.setIamPolicy@ method which the
+-- 'ProjectsRegionsClustersSetIAMPolicy' request conforms to.
+type ProjectsRegionsClustersSetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsRegionsClustersSetIAMPolicy' smart constructor.
+data ProjectsRegionsClustersSetIAMPolicy = ProjectsRegionsClustersSetIAMPolicy'
+    { _prcsipXgafv          :: !(Maybe Xgafv)
+    , _prcsipUploadProtocol :: !(Maybe Text)
+    , _prcsipAccessToken    :: !(Maybe Text)
+    , _prcsipUploadType     :: !(Maybe Text)
+    , _prcsipPayload        :: !SetIAMPolicyRequest
+    , _prcsipResource       :: !Text
+    , _prcsipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prcsipXgafv'
+--
+-- * 'prcsipUploadProtocol'
+--
+-- * 'prcsipAccessToken'
+--
+-- * 'prcsipUploadType'
+--
+-- * 'prcsipPayload'
+--
+-- * 'prcsipResource'
+--
+-- * 'prcsipCallback'
+projectsRegionsClustersSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'prcsipPayload'
+    -> Text -- ^ 'prcsipResource'
+    -> ProjectsRegionsClustersSetIAMPolicy
+projectsRegionsClustersSetIAMPolicy pPrcsipPayload_ pPrcsipResource_ =
+    ProjectsRegionsClustersSetIAMPolicy'
+    { _prcsipXgafv = Nothing
+    , _prcsipUploadProtocol = Nothing
+    , _prcsipAccessToken = Nothing
+    , _prcsipUploadType = Nothing
+    , _prcsipPayload = pPrcsipPayload_
+    , _prcsipResource = pPrcsipResource_
+    , _prcsipCallback = Nothing
+    }
+
+-- | V1 error format.
+prcsipXgafv :: Lens' ProjectsRegionsClustersSetIAMPolicy (Maybe Xgafv)
+prcsipXgafv
+  = lens _prcsipXgafv (\ s a -> s{_prcsipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prcsipUploadProtocol :: Lens' ProjectsRegionsClustersSetIAMPolicy (Maybe Text)
+prcsipUploadProtocol
+  = lens _prcsipUploadProtocol
+      (\ s a -> s{_prcsipUploadProtocol = a})
+
+-- | OAuth access token.
+prcsipAccessToken :: Lens' ProjectsRegionsClustersSetIAMPolicy (Maybe Text)
+prcsipAccessToken
+  = lens _prcsipAccessToken
+      (\ s a -> s{_prcsipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prcsipUploadType :: Lens' ProjectsRegionsClustersSetIAMPolicy (Maybe Text)
+prcsipUploadType
+  = lens _prcsipUploadType
+      (\ s a -> s{_prcsipUploadType = a})
+
+-- | Multipart request metadata.
+prcsipPayload :: Lens' ProjectsRegionsClustersSetIAMPolicy SetIAMPolicyRequest
+prcsipPayload
+  = lens _prcsipPayload
+      (\ s a -> s{_prcsipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+prcsipResource :: Lens' ProjectsRegionsClustersSetIAMPolicy Text
+prcsipResource
+  = lens _prcsipResource
+      (\ s a -> s{_prcsipResource = a})
+
+-- | JSONP
+prcsipCallback :: Lens' ProjectsRegionsClustersSetIAMPolicy (Maybe Text)
+prcsipCallback
+  = lens _prcsipCallback
+      (\ s a -> s{_prcsipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsClustersSetIAMPolicy where
+        type Rs ProjectsRegionsClustersSetIAMPolicy = Policy
+        type Scopes ProjectsRegionsClustersSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsClustersSetIAMPolicy'{..}
+          = go _prcsipResource _prcsipXgafv
+              _prcsipUploadProtocol
+              _prcsipAccessToken
+              _prcsipUploadType
+              _prcsipCallback
+              (Just AltJSON)
+              _prcsipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsClustersSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Clusters/TestIAMPermissions.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Clusters.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.clusters.testIamPermissions@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Clusters.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsRegionsClustersTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsRegionsClustersTestIAMPermissions
+    , ProjectsRegionsClustersTestIAMPermissions
+
+    -- * Request Lenses
+    , prctipXgafv
+    , prctipUploadProtocol
+    , prctipAccessToken
+    , prctipUploadType
+    , prctipPayload
+    , prctipResource
+    , prctipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.clusters.testIamPermissions@ method which the
+-- 'ProjectsRegionsClustersTestIAMPermissions' request conforms to.
+type ProjectsRegionsClustersTestIAMPermissionsResource
+     =
+     "v1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ 'projectsRegionsClustersTestIAMPermissions' smart constructor.
+data ProjectsRegionsClustersTestIAMPermissions = ProjectsRegionsClustersTestIAMPermissions'
+    { _prctipXgafv          :: !(Maybe Xgafv)
+    , _prctipUploadProtocol :: !(Maybe Text)
+    , _prctipAccessToken    :: !(Maybe Text)
+    , _prctipUploadType     :: !(Maybe Text)
+    , _prctipPayload        :: !TestIAMPermissionsRequest
+    , _prctipResource       :: !Text
+    , _prctipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prctipXgafv'
+--
+-- * 'prctipUploadProtocol'
+--
+-- * 'prctipAccessToken'
+--
+-- * 'prctipUploadType'
+--
+-- * 'prctipPayload'
+--
+-- * 'prctipResource'
+--
+-- * 'prctipCallback'
+projectsRegionsClustersTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'prctipPayload'
+    -> Text -- ^ 'prctipResource'
+    -> ProjectsRegionsClustersTestIAMPermissions
+projectsRegionsClustersTestIAMPermissions pPrctipPayload_ pPrctipResource_ =
+    ProjectsRegionsClustersTestIAMPermissions'
+    { _prctipXgafv = Nothing
+    , _prctipUploadProtocol = Nothing
+    , _prctipAccessToken = Nothing
+    , _prctipUploadType = Nothing
+    , _prctipPayload = pPrctipPayload_
+    , _prctipResource = pPrctipResource_
+    , _prctipCallback = Nothing
+    }
+
+-- | V1 error format.
+prctipXgafv :: Lens' ProjectsRegionsClustersTestIAMPermissions (Maybe Xgafv)
+prctipXgafv
+  = lens _prctipXgafv (\ s a -> s{_prctipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prctipUploadProtocol :: Lens' ProjectsRegionsClustersTestIAMPermissions (Maybe Text)
+prctipUploadProtocol
+  = lens _prctipUploadProtocol
+      (\ s a -> s{_prctipUploadProtocol = a})
+
+-- | OAuth access token.
+prctipAccessToken :: Lens' ProjectsRegionsClustersTestIAMPermissions (Maybe Text)
+prctipAccessToken
+  = lens _prctipAccessToken
+      (\ s a -> s{_prctipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prctipUploadType :: Lens' ProjectsRegionsClustersTestIAMPermissions (Maybe Text)
+prctipUploadType
+  = lens _prctipUploadType
+      (\ s a -> s{_prctipUploadType = a})
+
+-- | Multipart request metadata.
+prctipPayload :: Lens' ProjectsRegionsClustersTestIAMPermissions TestIAMPermissionsRequest
+prctipPayload
+  = lens _prctipPayload
+      (\ s a -> s{_prctipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+prctipResource :: Lens' ProjectsRegionsClustersTestIAMPermissions Text
+prctipResource
+  = lens _prctipResource
+      (\ s a -> s{_prctipResource = a})
+
+-- | JSONP
+prctipCallback :: Lens' ProjectsRegionsClustersTestIAMPermissions (Maybe Text)
+prctipCallback
+  = lens _prctipCallback
+      (\ s a -> s{_prctipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsClustersTestIAMPermissions where
+        type Rs ProjectsRegionsClustersTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes ProjectsRegionsClustersTestIAMPermissions
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsClustersTestIAMPermissions'{..}
+          = go _prctipResource _prctipXgafv
+              _prctipUploadProtocol
+              _prctipAccessToken
+              _prctipUploadType
+              _prctipCallback
+              (Just AltJSON)
+              _prctipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsClustersTestIAMPermissionsResource)
+                      mempty
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
@@ -21,12 +21,10 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Starts a job cancellation request. To access the job resource after
--- cancellation, call
--- [regions\/{region}\/jobs.list](\/dataproc\/reference\/rest\/v1\/projects.regions.jobs\/list)
--- or
--- [regions\/{region}\/jobs.get](\/dataproc\/reference\/rest\/v1\/projects.regions.jobs\/get).
+-- cancellation, call regions\/{region}\/jobs.list or
+-- regions\/{region}\/jobs.get.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.cancel@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.cancel@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Cancel
     (
     -- * REST Resource
@@ -40,11 +38,9 @@
     , prjcXgafv
     , prjcJobId
     , prjcUploadProtocol
-    , prjcPp
     , prjcAccessToken
     , prjcUploadType
     , prjcPayload
-    , prjcBearerToken
     , prjcRegion
     , prjcProjectId
     , prjcCallback
@@ -63,33 +59,27 @@
              Capture "region" Text :>
                "jobs" :>
                  CaptureMode "jobId" "cancel" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :>
-                                   ReqBody '[JSON] CancelJobRequest :>
-                                     Post '[JSON] Job
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] CancelJobRequest :>
+                                 Post '[JSON] Job
 
 -- | Starts a job cancellation request. To access the job resource after
--- cancellation, call
--- [regions\/{region}\/jobs.list](\/dataproc\/reference\/rest\/v1\/projects.regions.jobs\/list)
--- or
--- [regions\/{region}\/jobs.get](\/dataproc\/reference\/rest\/v1\/projects.regions.jobs\/get).
+-- cancellation, call regions\/{region}\/jobs.list or
+-- regions\/{region}\/jobs.get.
 --
 -- /See:/ 'projectsRegionsJobsCancel' smart constructor.
 data ProjectsRegionsJobsCancel = ProjectsRegionsJobsCancel'
-    { _prjcXgafv          :: !(Maybe Text)
+    { _prjcXgafv          :: !(Maybe Xgafv)
     , _prjcJobId          :: !Text
     , _prjcUploadProtocol :: !(Maybe Text)
-    , _prjcPp             :: !Bool
     , _prjcAccessToken    :: !(Maybe Text)
     , _prjcUploadType     :: !(Maybe Text)
     , _prjcPayload        :: !CancelJobRequest
-    , _prjcBearerToken    :: !(Maybe Text)
     , _prjcRegion         :: !Text
     , _prjcProjectId      :: !Text
     , _prjcCallback       :: !(Maybe Text)
@@ -105,16 +95,12 @@
 --
 -- * 'prjcUploadProtocol'
 --
--- * 'prjcPp'
---
 -- * 'prjcAccessToken'
 --
 -- * 'prjcUploadType'
 --
 -- * 'prjcPayload'
 --
--- * 'prjcBearerToken'
---
 -- * 'prjcRegion'
 --
 -- * 'prjcProjectId'
@@ -131,22 +117,20 @@
     { _prjcXgafv = Nothing
     , _prjcJobId = pPrjcJobId_
     , _prjcUploadProtocol = Nothing
-    , _prjcPp = True
     , _prjcAccessToken = Nothing
     , _prjcUploadType = Nothing
     , _prjcPayload = pPrjcPayload_
-    , _prjcBearerToken = Nothing
     , _prjcRegion = pPrjcRegion_
     , _prjcProjectId = pPrjcProjectId_
     , _prjcCallback = Nothing
     }
 
 -- | V1 error format.
-prjcXgafv :: Lens' ProjectsRegionsJobsCancel (Maybe Text)
+prjcXgafv :: Lens' ProjectsRegionsJobsCancel (Maybe Xgafv)
 prjcXgafv
   = lens _prjcXgafv (\ s a -> s{_prjcXgafv = a})
 
--- | [Required] The job ID.
+-- | Required. The job ID.
 prjcJobId :: Lens' ProjectsRegionsJobsCancel Text
 prjcJobId
   = lens _prjcJobId (\ s a -> s{_prjcJobId = a})
@@ -157,10 +141,6 @@
   = lens _prjcUploadProtocol
       (\ s a -> s{_prjcUploadProtocol = a})
 
--- | Pretty-print response.
-prjcPp :: Lens' ProjectsRegionsJobsCancel Bool
-prjcPp = lens _prjcPp (\ s a -> s{_prjcPp = a})
-
 -- | OAuth access token.
 prjcAccessToken :: Lens' ProjectsRegionsJobsCancel (Maybe Text)
 prjcAccessToken
@@ -178,18 +158,12 @@
 prjcPayload
   = lens _prjcPayload (\ s a -> s{_prjcPayload = a})
 
--- | OAuth bearer token.
-prjcBearerToken :: Lens' ProjectsRegionsJobsCancel (Maybe Text)
-prjcBearerToken
-  = lens _prjcBearerToken
-      (\ s a -> s{_prjcBearerToken = a})
-
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prjcRegion :: Lens' ProjectsRegionsJobsCancel Text
 prjcRegion
   = lens _prjcRegion (\ s a -> s{_prjcRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the job
+-- | Required. The ID of the Google Cloud Platform project that the job
 -- belongs to.
 prjcProjectId :: Lens' ProjectsRegionsJobsCancel Text
 prjcProjectId
@@ -209,10 +183,8 @@
         requestClient ProjectsRegionsJobsCancel'{..}
           = go _prjcProjectId _prjcRegion _prjcJobId _prjcXgafv
               _prjcUploadProtocol
-              (Just _prjcPp)
               _prjcAccessToken
               _prjcUploadType
-              _prjcBearerToken
               _prjcCallback
               (Just AltJSON)
               _prjcPayload
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
@@ -21,9 +21,9 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes the job from the project. If the job is active, the delete
--- fails, and the response returns \`FAILED_PRECONDITION\`.
+-- fails, and the response returns FAILED_PRECONDITION.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.delete@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.delete@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Delete
     (
     -- * REST Resource
@@ -37,10 +37,8 @@
     , prjdXgafv
     , prjdJobId
     , prjdUploadProtocol
-    , prjdPp
     , prjdAccessToken
     , prjdUploadType
-    , prjdBearerToken
     , prjdRegion
     , prjdProjectId
     , prjdCallback
@@ -59,28 +57,23 @@
              Capture "region" Text :>
                "jobs" :>
                  Capture "jobId" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :>
-                                   Delete '[JSON] Empty
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :> Delete '[JSON] Empty
 
 -- | Deletes the job from the project. If the job is active, the delete
--- fails, and the response returns \`FAILED_PRECONDITION\`.
+-- fails, and the response returns FAILED_PRECONDITION.
 --
 -- /See:/ 'projectsRegionsJobsDelete' smart constructor.
 data ProjectsRegionsJobsDelete = ProjectsRegionsJobsDelete'
-    { _prjdXgafv          :: !(Maybe Text)
+    { _prjdXgafv          :: !(Maybe Xgafv)
     , _prjdJobId          :: !Text
     , _prjdUploadProtocol :: !(Maybe Text)
-    , _prjdPp             :: !Bool
     , _prjdAccessToken    :: !(Maybe Text)
     , _prjdUploadType     :: !(Maybe Text)
-    , _prjdBearerToken    :: !(Maybe Text)
     , _prjdRegion         :: !Text
     , _prjdProjectId      :: !Text
     , _prjdCallback       :: !(Maybe Text)
@@ -96,14 +89,10 @@
 --
 -- * 'prjdUploadProtocol'
 --
--- * 'prjdPp'
---
 -- * 'prjdAccessToken'
 --
 -- * 'prjdUploadType'
 --
--- * 'prjdBearerToken'
---
 -- * 'prjdRegion'
 --
 -- * 'prjdProjectId'
@@ -119,21 +108,19 @@
     { _prjdXgafv = Nothing
     , _prjdJobId = pPrjdJobId_
     , _prjdUploadProtocol = Nothing
-    , _prjdPp = True
     , _prjdAccessToken = Nothing
     , _prjdUploadType = Nothing
-    , _prjdBearerToken = Nothing
     , _prjdRegion = pPrjdRegion_
     , _prjdProjectId = pPrjdProjectId_
     , _prjdCallback = Nothing
     }
 
 -- | V1 error format.
-prjdXgafv :: Lens' ProjectsRegionsJobsDelete (Maybe Text)
+prjdXgafv :: Lens' ProjectsRegionsJobsDelete (Maybe Xgafv)
 prjdXgafv
   = lens _prjdXgafv (\ s a -> s{_prjdXgafv = a})
 
--- | [Required] The job ID.
+-- | Required. The job ID.
 prjdJobId :: Lens' ProjectsRegionsJobsDelete Text
 prjdJobId
   = lens _prjdJobId (\ s a -> s{_prjdJobId = a})
@@ -144,10 +131,6 @@
   = lens _prjdUploadProtocol
       (\ s a -> s{_prjdUploadProtocol = a})
 
--- | Pretty-print response.
-prjdPp :: Lens' ProjectsRegionsJobsDelete Bool
-prjdPp = lens _prjdPp (\ s a -> s{_prjdPp = a})
-
 -- | OAuth access token.
 prjdAccessToken :: Lens' ProjectsRegionsJobsDelete (Maybe Text)
 prjdAccessToken
@@ -160,18 +143,12 @@
   = lens _prjdUploadType
       (\ s a -> s{_prjdUploadType = a})
 
--- | OAuth bearer token.
-prjdBearerToken :: Lens' ProjectsRegionsJobsDelete (Maybe Text)
-prjdBearerToken
-  = lens _prjdBearerToken
-      (\ s a -> s{_prjdBearerToken = a})
-
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prjdRegion :: Lens' ProjectsRegionsJobsDelete Text
 prjdRegion
   = lens _prjdRegion (\ s a -> s{_prjdRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the job
+-- | Required. The ID of the Google Cloud Platform project that the job
 -- belongs to.
 prjdProjectId :: Lens' ProjectsRegionsJobsDelete Text
 prjdProjectId
@@ -191,10 +168,8 @@
         requestClient ProjectsRegionsJobsDelete'{..}
           = go _prjdProjectId _prjdRegion _prjdJobId _prjdXgafv
               _prjdUploadProtocol
-              (Just _prjdPp)
               _prjdAccessToken
               _prjdUploadType
-              _prjdBearerToken
               _prjdCallback
               (Just AltJSON)
               dataprocService
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
@@ -22,7 +22,7 @@
 --
 -- Gets the resource representation for a job in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.get@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.get@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Get
     (
     -- * REST Resource
@@ -36,10 +36,8 @@
     , prjgXgafv
     , prjgJobId
     , prjgUploadProtocol
-    , prjgPp
     , prjgAccessToken
     , prjgUploadType
-    , prjgBearerToken
     , prjgRegion
     , prjgProjectId
     , prjgCallback
@@ -58,26 +56,22 @@
              Capture "region" Text :>
                "jobs" :>
                  Capture "jobId" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :> Get '[JSON] Job
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :> Get '[JSON] Job
 
 -- | Gets the resource representation for a job in a project.
 --
 -- /See:/ 'projectsRegionsJobsGet' smart constructor.
 data ProjectsRegionsJobsGet = ProjectsRegionsJobsGet'
-    { _prjgXgafv          :: !(Maybe Text)
+    { _prjgXgafv          :: !(Maybe Xgafv)
     , _prjgJobId          :: !Text
     , _prjgUploadProtocol :: !(Maybe Text)
-    , _prjgPp             :: !Bool
     , _prjgAccessToken    :: !(Maybe Text)
     , _prjgUploadType     :: !(Maybe Text)
-    , _prjgBearerToken    :: !(Maybe Text)
     , _prjgRegion         :: !Text
     , _prjgProjectId      :: !Text
     , _prjgCallback       :: !(Maybe Text)
@@ -93,14 +87,10 @@
 --
 -- * 'prjgUploadProtocol'
 --
--- * 'prjgPp'
---
 -- * 'prjgAccessToken'
 --
 -- * 'prjgUploadType'
 --
--- * 'prjgBearerToken'
---
 -- * 'prjgRegion'
 --
 -- * 'prjgProjectId'
@@ -116,21 +106,19 @@
     { _prjgXgafv = Nothing
     , _prjgJobId = pPrjgJobId_
     , _prjgUploadProtocol = Nothing
-    , _prjgPp = True
     , _prjgAccessToken = Nothing
     , _prjgUploadType = Nothing
-    , _prjgBearerToken = Nothing
     , _prjgRegion = pPrjgRegion_
     , _prjgProjectId = pPrjgProjectId_
     , _prjgCallback = Nothing
     }
 
 -- | V1 error format.
-prjgXgafv :: Lens' ProjectsRegionsJobsGet (Maybe Text)
+prjgXgafv :: Lens' ProjectsRegionsJobsGet (Maybe Xgafv)
 prjgXgafv
   = lens _prjgXgafv (\ s a -> s{_prjgXgafv = a})
 
--- | [Required] The job ID.
+-- | Required. The job ID.
 prjgJobId :: Lens' ProjectsRegionsJobsGet Text
 prjgJobId
   = lens _prjgJobId (\ s a -> s{_prjgJobId = a})
@@ -141,10 +129,6 @@
   = lens _prjgUploadProtocol
       (\ s a -> s{_prjgUploadProtocol = a})
 
--- | Pretty-print response.
-prjgPp :: Lens' ProjectsRegionsJobsGet Bool
-prjgPp = lens _prjgPp (\ s a -> s{_prjgPp = a})
-
 -- | OAuth access token.
 prjgAccessToken :: Lens' ProjectsRegionsJobsGet (Maybe Text)
 prjgAccessToken
@@ -157,18 +141,12 @@
   = lens _prjgUploadType
       (\ s a -> s{_prjgUploadType = a})
 
--- | OAuth bearer token.
-prjgBearerToken :: Lens' ProjectsRegionsJobsGet (Maybe Text)
-prjgBearerToken
-  = lens _prjgBearerToken
-      (\ s a -> s{_prjgBearerToken = a})
-
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prjgRegion :: Lens' ProjectsRegionsJobsGet Text
 prjgRegion
   = lens _prjgRegion (\ s a -> s{_prjgRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the job
+-- | Required. The ID of the Google Cloud Platform project that the job
 -- belongs to.
 prjgProjectId :: Lens' ProjectsRegionsJobsGet Text
 prjgProjectId
@@ -187,10 +165,8 @@
         requestClient ProjectsRegionsJobsGet'{..}
           = go _prjgProjectId _prjgRegion _prjgJobId _prjgXgafv
               _prjgUploadProtocol
-              (Just _prjgPp)
               _prjgAccessToken
               _prjgUploadType
-              _prjgBearerToken
               _prjgCallback
               (Just AltJSON)
               dataprocService
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/GetIAMPolicy.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Jobs.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.getIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsJobsGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsJobsGetIAMPolicy
+    , ProjectsRegionsJobsGetIAMPolicy
+
+    -- * Request Lenses
+    , prjgipXgafv
+    , prjgipUploadProtocol
+    , prjgipAccessToken
+    , prjgipUploadType
+    , prjgipPayload
+    , prjgipResource
+    , prjgipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.jobs.getIamPolicy@ method which the
+-- 'ProjectsRegionsJobsGetIAMPolicy' request conforms to.
+type ProjectsRegionsJobsGetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ 'projectsRegionsJobsGetIAMPolicy' smart constructor.
+data ProjectsRegionsJobsGetIAMPolicy = ProjectsRegionsJobsGetIAMPolicy'
+    { _prjgipXgafv          :: !(Maybe Xgafv)
+    , _prjgipUploadProtocol :: !(Maybe Text)
+    , _prjgipAccessToken    :: !(Maybe Text)
+    , _prjgipUploadType     :: !(Maybe Text)
+    , _prjgipPayload        :: !GetIAMPolicyRequest
+    , _prjgipResource       :: !Text
+    , _prjgipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prjgipXgafv'
+--
+-- * 'prjgipUploadProtocol'
+--
+-- * 'prjgipAccessToken'
+--
+-- * 'prjgipUploadType'
+--
+-- * 'prjgipPayload'
+--
+-- * 'prjgipResource'
+--
+-- * 'prjgipCallback'
+projectsRegionsJobsGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'prjgipPayload'
+    -> Text -- ^ 'prjgipResource'
+    -> ProjectsRegionsJobsGetIAMPolicy
+projectsRegionsJobsGetIAMPolicy pPrjgipPayload_ pPrjgipResource_ =
+    ProjectsRegionsJobsGetIAMPolicy'
+    { _prjgipXgafv = Nothing
+    , _prjgipUploadProtocol = Nothing
+    , _prjgipAccessToken = Nothing
+    , _prjgipUploadType = Nothing
+    , _prjgipPayload = pPrjgipPayload_
+    , _prjgipResource = pPrjgipResource_
+    , _prjgipCallback = Nothing
+    }
+
+-- | V1 error format.
+prjgipXgafv :: Lens' ProjectsRegionsJobsGetIAMPolicy (Maybe Xgafv)
+prjgipXgafv
+  = lens _prjgipXgafv (\ s a -> s{_prjgipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prjgipUploadProtocol :: Lens' ProjectsRegionsJobsGetIAMPolicy (Maybe Text)
+prjgipUploadProtocol
+  = lens _prjgipUploadProtocol
+      (\ s a -> s{_prjgipUploadProtocol = a})
+
+-- | OAuth access token.
+prjgipAccessToken :: Lens' ProjectsRegionsJobsGetIAMPolicy (Maybe Text)
+prjgipAccessToken
+  = lens _prjgipAccessToken
+      (\ s a -> s{_prjgipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prjgipUploadType :: Lens' ProjectsRegionsJobsGetIAMPolicy (Maybe Text)
+prjgipUploadType
+  = lens _prjgipUploadType
+      (\ s a -> s{_prjgipUploadType = a})
+
+-- | Multipart request metadata.
+prjgipPayload :: Lens' ProjectsRegionsJobsGetIAMPolicy GetIAMPolicyRequest
+prjgipPayload
+  = lens _prjgipPayload
+      (\ s a -> s{_prjgipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+prjgipResource :: Lens' ProjectsRegionsJobsGetIAMPolicy Text
+prjgipResource
+  = lens _prjgipResource
+      (\ s a -> s{_prjgipResource = a})
+
+-- | JSONP
+prjgipCallback :: Lens' ProjectsRegionsJobsGetIAMPolicy (Maybe Text)
+prjgipCallback
+  = lens _prjgipCallback
+      (\ s a -> s{_prjgipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsJobsGetIAMPolicy where
+        type Rs ProjectsRegionsJobsGetIAMPolicy = Policy
+        type Scopes ProjectsRegionsJobsGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsRegionsJobsGetIAMPolicy'{..}
+          = go _prjgipResource _prjgipXgafv
+              _prjgipUploadProtocol
+              _prjgipAccessToken
+              _prjgipUploadType
+              _prjgipCallback
+              (Just AltJSON)
+              _prjgipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsJobsGetIAMPolicyResource)
+                      mempty
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
@@ -22,7 +22,7 @@
 --
 -- Lists regions\/{region}\/jobs in a project.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.list@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.list@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.List
     (
     -- * REST Resource
@@ -36,10 +36,8 @@
     , prjlJobStateMatcher
     , prjlXgafv
     , prjlUploadProtocol
-    , prjlPp
     , prjlAccessToken
     , prjlUploadType
-    , prjlBearerToken
     , prjlClusterName
     , prjlFilter
     , prjlRegion
@@ -62,31 +60,27 @@
              Capture "region" Text :>
                "jobs" :>
                  QueryParam "jobStateMatcher" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "clusterName" Text :>
-                                 QueryParam "filter" Text :>
-                                   QueryParam "pageToken" Text :>
-                                     QueryParam "pageSize" (Textual Int32) :>
-                                       QueryParam "callback" Text :>
-                                         QueryParam "alt" AltJSON :>
-                                           Get '[JSON] ListJobsResponse
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "clusterName" Text :>
+                             QueryParam "filter" Text :>
+                               QueryParam "pageToken" Text :>
+                                 QueryParam "pageSize" (Textual Int32) :>
+                                   QueryParam "callback" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] ListJobsResponse
 
 -- | Lists regions\/{region}\/jobs in a project.
 --
 -- /See:/ 'projectsRegionsJobsList' smart constructor.
 data ProjectsRegionsJobsList = ProjectsRegionsJobsList'
     { _prjlJobStateMatcher :: !(Maybe Text)
-    , _prjlXgafv           :: !(Maybe Text)
+    , _prjlXgafv           :: !(Maybe Xgafv)
     , _prjlUploadProtocol  :: !(Maybe Text)
-    , _prjlPp              :: !Bool
     , _prjlAccessToken     :: !(Maybe Text)
     , _prjlUploadType      :: !(Maybe Text)
-    , _prjlBearerToken     :: !(Maybe Text)
     , _prjlClusterName     :: !(Maybe Text)
     , _prjlFilter          :: !(Maybe Text)
     , _prjlRegion          :: !Text
@@ -106,14 +100,10 @@
 --
 -- * 'prjlUploadProtocol'
 --
--- * 'prjlPp'
---
 -- * 'prjlAccessToken'
 --
 -- * 'prjlUploadType'
 --
--- * 'prjlBearerToken'
---
 -- * 'prjlClusterName'
 --
 -- * 'prjlFilter'
@@ -136,10 +126,8 @@
     { _prjlJobStateMatcher = Nothing
     , _prjlXgafv = Nothing
     , _prjlUploadProtocol = Nothing
-    , _prjlPp = True
     , _prjlAccessToken = Nothing
     , _prjlUploadType = Nothing
-    , _prjlBearerToken = Nothing
     , _prjlClusterName = Nothing
     , _prjlFilter = Nothing
     , _prjlRegion = pPrjlRegion_
@@ -149,15 +137,15 @@
     , _prjlCallback = Nothing
     }
 
--- | [Optional] Specifies enumerated categories of jobs to list (default =
--- match ALL jobs).
+-- | Optional. Specifies enumerated categories of jobs to list. (default =
+-- match ALL jobs).If filter is provided, jobStateMatcher will be ignored.
 prjlJobStateMatcher :: Lens' ProjectsRegionsJobsList (Maybe Text)
 prjlJobStateMatcher
   = lens _prjlJobStateMatcher
       (\ s a -> s{_prjlJobStateMatcher = a})
 
 -- | V1 error format.
-prjlXgafv :: Lens' ProjectsRegionsJobsList (Maybe Text)
+prjlXgafv :: Lens' ProjectsRegionsJobsList (Maybe Xgafv)
 prjlXgafv
   = lens _prjlXgafv (\ s a -> s{_prjlXgafv = a})
 
@@ -167,10 +155,6 @@
   = lens _prjlUploadProtocol
       (\ s a -> s{_prjlUploadProtocol = a})
 
--- | Pretty-print response.
-prjlPp :: Lens' ProjectsRegionsJobsList Bool
-prjlPp = lens _prjlPp (\ s a -> s{_prjlPp = a})
-
 -- | OAuth access token.
 prjlAccessToken :: Lens' ProjectsRegionsJobsList (Maybe Text)
 prjlAccessToken
@@ -183,53 +167,45 @@
   = lens _prjlUploadType
       (\ s a -> s{_prjlUploadType = a})
 
--- | OAuth bearer token.
-prjlBearerToken :: Lens' ProjectsRegionsJobsList (Maybe Text)
-prjlBearerToken
-  = lens _prjlBearerToken
-      (\ s a -> s{_prjlBearerToken = a})
-
--- | [Optional] If set, the returned jobs list includes only jobs that were
+-- | Optional. If set, the returned jobs list includes only jobs that were
 -- submitted to the named cluster.
 prjlClusterName :: Lens' ProjectsRegionsJobsList (Maybe Text)
 prjlClusterName
   = lens _prjlClusterName
       (\ s a -> s{_prjlClusterName = a})
 
--- | [Optional] A filter constraining the jobs to list. Filters are
--- case-sensitive and have the following syntax: field:value] ... or [field
--- = value] AND [field [= value]] ... where **field** is \`status.state\`
--- or \`labels.[KEY]\`, and \`[KEY]\` is a label key. **value** can be
--- \`*\` to match all values. \`status.state\` can be either \`ACTIVE\` or
--- \`INACTIVE\`. Only the logical \`AND\` operator is supported;
--- space-separated items are treated as having an implicit \`AND\`
--- operator. Example valid filters are: status.state:ACTIVE
--- labels.env:staging labels.starred:* and status.state = ACTIVE AND
--- labels.env = staging AND labels.starred = *
+-- | Optional. A filter constraining the jobs to list. Filters are
+-- case-sensitive and have the following syntax:field = value AND field =
+-- value ...where field is status.state or labels.[KEY], and [KEY] is a
+-- label key. value can be * to match all values. status.state can be
+-- either ACTIVE or NON_ACTIVE. Only the logical AND operator is supported;
+-- space-separated items are treated as having an implicit AND
+-- operator.Example filter:status.state = ACTIVE AND labels.env = staging
+-- AND labels.starred = *
 prjlFilter :: Lens' ProjectsRegionsJobsList (Maybe Text)
 prjlFilter
   = lens _prjlFilter (\ s a -> s{_prjlFilter = a})
 
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prjlRegion :: Lens' ProjectsRegionsJobsList Text
 prjlRegion
   = lens _prjlRegion (\ s a -> s{_prjlRegion = a})
 
--- | [Optional] The page token, returned by a previous call, to request the
+-- | Optional. The page token, returned by a previous call, to request the
 -- next page of results.
 prjlPageToken :: Lens' ProjectsRegionsJobsList (Maybe Text)
 prjlPageToken
   = lens _prjlPageToken
       (\ s a -> s{_prjlPageToken = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the job
+-- | Required. The ID of the Google Cloud Platform project that the job
 -- belongs to.
 prjlProjectId :: Lens' ProjectsRegionsJobsList Text
 prjlProjectId
   = lens _prjlProjectId
       (\ s a -> s{_prjlProjectId = a})
 
--- | [Optional] The number of results to return in each response.
+-- | Optional. The number of results to return in each response.
 prjlPageSize :: Lens' ProjectsRegionsJobsList (Maybe Int32)
 prjlPageSize
   = lens _prjlPageSize (\ s a -> s{_prjlPageSize = a})
@@ -248,10 +224,8 @@
           = go _prjlProjectId _prjlRegion _prjlJobStateMatcher
               _prjlXgafv
               _prjlUploadProtocol
-              (Just _prjlPp)
               _prjlAccessToken
               _prjlUploadType
-              _prjlBearerToken
               _prjlClusterName
               _prjlFilter
               _prjlPageToken
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/Patch.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Patch
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a job in a project.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.patch@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Patch
+    (
+    -- * REST Resource
+      ProjectsRegionsJobsPatchResource
+
+    -- * Creating a Request
+    , projectsRegionsJobsPatch
+    , ProjectsRegionsJobsPatch
+
+    -- * Request Lenses
+    , prjpXgafv
+    , prjpJobId
+    , prjpUploadProtocol
+    , prjpUpdateMask
+    , prjpAccessToken
+    , prjpUploadType
+    , prjpPayload
+    , prjpRegion
+    , prjpProjectId
+    , prjpCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.jobs.patch@ method which the
+-- 'ProjectsRegionsJobsPatch' request conforms to.
+type ProjectsRegionsJobsPatchResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "regions" :>
+             Capture "region" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "updateMask" GFieldMask :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] Job :> Patch '[JSON] Job
+
+-- | Updates a job in a project.
+--
+-- /See:/ 'projectsRegionsJobsPatch' smart constructor.
+data ProjectsRegionsJobsPatch = ProjectsRegionsJobsPatch'
+    { _prjpXgafv          :: !(Maybe Xgafv)
+    , _prjpJobId          :: !Text
+    , _prjpUploadProtocol :: !(Maybe Text)
+    , _prjpUpdateMask     :: !(Maybe GFieldMask)
+    , _prjpAccessToken    :: !(Maybe Text)
+    , _prjpUploadType     :: !(Maybe Text)
+    , _prjpPayload        :: !Job
+    , _prjpRegion         :: !Text
+    , _prjpProjectId      :: !Text
+    , _prjpCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prjpXgafv'
+--
+-- * 'prjpJobId'
+--
+-- * 'prjpUploadProtocol'
+--
+-- * 'prjpUpdateMask'
+--
+-- * 'prjpAccessToken'
+--
+-- * 'prjpUploadType'
+--
+-- * 'prjpPayload'
+--
+-- * 'prjpRegion'
+--
+-- * 'prjpProjectId'
+--
+-- * 'prjpCallback'
+projectsRegionsJobsPatch
+    :: Text -- ^ 'prjpJobId'
+    -> Job -- ^ 'prjpPayload'
+    -> Text -- ^ 'prjpRegion'
+    -> Text -- ^ 'prjpProjectId'
+    -> ProjectsRegionsJobsPatch
+projectsRegionsJobsPatch pPrjpJobId_ pPrjpPayload_ pPrjpRegion_ pPrjpProjectId_ =
+    ProjectsRegionsJobsPatch'
+    { _prjpXgafv = Nothing
+    , _prjpJobId = pPrjpJobId_
+    , _prjpUploadProtocol = Nothing
+    , _prjpUpdateMask = Nothing
+    , _prjpAccessToken = Nothing
+    , _prjpUploadType = Nothing
+    , _prjpPayload = pPrjpPayload_
+    , _prjpRegion = pPrjpRegion_
+    , _prjpProjectId = pPrjpProjectId_
+    , _prjpCallback = Nothing
+    }
+
+-- | V1 error format.
+prjpXgafv :: Lens' ProjectsRegionsJobsPatch (Maybe Xgafv)
+prjpXgafv
+  = lens _prjpXgafv (\ s a -> s{_prjpXgafv = a})
+
+-- | Required. The job ID.
+prjpJobId :: Lens' ProjectsRegionsJobsPatch Text
+prjpJobId
+  = lens _prjpJobId (\ s a -> s{_prjpJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prjpUploadProtocol :: Lens' ProjectsRegionsJobsPatch (Maybe Text)
+prjpUploadProtocol
+  = lens _prjpUploadProtocol
+      (\ s a -> s{_prjpUploadProtocol = a})
+
+-- | Required. Specifies the path, relative to 'Job', of the field to update.
+-- For example, to update the labels of a Job the 'update_mask' parameter
+-- would be specified as 'labels', and the PATCH request body would specify
+-- the new value. __Note:__ Currently, 'labels' is the only field that can
+-- be updated.
+prjpUpdateMask :: Lens' ProjectsRegionsJobsPatch (Maybe GFieldMask)
+prjpUpdateMask
+  = lens _prjpUpdateMask
+      (\ s a -> s{_prjpUpdateMask = a})
+
+-- | OAuth access token.
+prjpAccessToken :: Lens' ProjectsRegionsJobsPatch (Maybe Text)
+prjpAccessToken
+  = lens _prjpAccessToken
+      (\ s a -> s{_prjpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prjpUploadType :: Lens' ProjectsRegionsJobsPatch (Maybe Text)
+prjpUploadType
+  = lens _prjpUploadType
+      (\ s a -> s{_prjpUploadType = a})
+
+-- | Multipart request metadata.
+prjpPayload :: Lens' ProjectsRegionsJobsPatch Job
+prjpPayload
+  = lens _prjpPayload (\ s a -> s{_prjpPayload = a})
+
+-- | Required. The Cloud Dataproc region in which to handle the request.
+prjpRegion :: Lens' ProjectsRegionsJobsPatch Text
+prjpRegion
+  = lens _prjpRegion (\ s a -> s{_prjpRegion = a})
+
+-- | Required. The ID of the Google Cloud Platform project that the job
+-- belongs to.
+prjpProjectId :: Lens' ProjectsRegionsJobsPatch Text
+prjpProjectId
+  = lens _prjpProjectId
+      (\ s a -> s{_prjpProjectId = a})
+
+-- | JSONP
+prjpCallback :: Lens' ProjectsRegionsJobsPatch (Maybe Text)
+prjpCallback
+  = lens _prjpCallback (\ s a -> s{_prjpCallback = a})
+
+instance GoogleRequest ProjectsRegionsJobsPatch where
+        type Rs ProjectsRegionsJobsPatch = Job
+        type Scopes ProjectsRegionsJobsPatch =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsRegionsJobsPatch'{..}
+          = go _prjpProjectId _prjpRegion _prjpJobId _prjpXgafv
+              _prjpUploadProtocol
+              _prjpUpdateMask
+              _prjpAccessToken
+              _prjpUploadType
+              _prjpCallback
+              (Just AltJSON)
+              _prjpPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsRegionsJobsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/SetIAMPolicy.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Jobs.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.setIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsJobsSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsJobsSetIAMPolicy
+    , ProjectsRegionsJobsSetIAMPolicy
+
+    -- * Request Lenses
+    , prjsipXgafv
+    , prjsipUploadProtocol
+    , prjsipAccessToken
+    , prjsipUploadType
+    , prjsipPayload
+    , prjsipResource
+    , prjsipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.jobs.setIamPolicy@ method which the
+-- 'ProjectsRegionsJobsSetIAMPolicy' request conforms to.
+type ProjectsRegionsJobsSetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsRegionsJobsSetIAMPolicy' smart constructor.
+data ProjectsRegionsJobsSetIAMPolicy = ProjectsRegionsJobsSetIAMPolicy'
+    { _prjsipXgafv          :: !(Maybe Xgafv)
+    , _prjsipUploadProtocol :: !(Maybe Text)
+    , _prjsipAccessToken    :: !(Maybe Text)
+    , _prjsipUploadType     :: !(Maybe Text)
+    , _prjsipPayload        :: !SetIAMPolicyRequest
+    , _prjsipResource       :: !Text
+    , _prjsipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prjsipXgafv'
+--
+-- * 'prjsipUploadProtocol'
+--
+-- * 'prjsipAccessToken'
+--
+-- * 'prjsipUploadType'
+--
+-- * 'prjsipPayload'
+--
+-- * 'prjsipResource'
+--
+-- * 'prjsipCallback'
+projectsRegionsJobsSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'prjsipPayload'
+    -> Text -- ^ 'prjsipResource'
+    -> ProjectsRegionsJobsSetIAMPolicy
+projectsRegionsJobsSetIAMPolicy pPrjsipPayload_ pPrjsipResource_ =
+    ProjectsRegionsJobsSetIAMPolicy'
+    { _prjsipXgafv = Nothing
+    , _prjsipUploadProtocol = Nothing
+    , _prjsipAccessToken = Nothing
+    , _prjsipUploadType = Nothing
+    , _prjsipPayload = pPrjsipPayload_
+    , _prjsipResource = pPrjsipResource_
+    , _prjsipCallback = Nothing
+    }
+
+-- | V1 error format.
+prjsipXgafv :: Lens' ProjectsRegionsJobsSetIAMPolicy (Maybe Xgafv)
+prjsipXgafv
+  = lens _prjsipXgafv (\ s a -> s{_prjsipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prjsipUploadProtocol :: Lens' ProjectsRegionsJobsSetIAMPolicy (Maybe Text)
+prjsipUploadProtocol
+  = lens _prjsipUploadProtocol
+      (\ s a -> s{_prjsipUploadProtocol = a})
+
+-- | OAuth access token.
+prjsipAccessToken :: Lens' ProjectsRegionsJobsSetIAMPolicy (Maybe Text)
+prjsipAccessToken
+  = lens _prjsipAccessToken
+      (\ s a -> s{_prjsipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prjsipUploadType :: Lens' ProjectsRegionsJobsSetIAMPolicy (Maybe Text)
+prjsipUploadType
+  = lens _prjsipUploadType
+      (\ s a -> s{_prjsipUploadType = a})
+
+-- | Multipart request metadata.
+prjsipPayload :: Lens' ProjectsRegionsJobsSetIAMPolicy SetIAMPolicyRequest
+prjsipPayload
+  = lens _prjsipPayload
+      (\ s a -> s{_prjsipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+prjsipResource :: Lens' ProjectsRegionsJobsSetIAMPolicy Text
+prjsipResource
+  = lens _prjsipResource
+      (\ s a -> s{_prjsipResource = a})
+
+-- | JSONP
+prjsipCallback :: Lens' ProjectsRegionsJobsSetIAMPolicy (Maybe Text)
+prjsipCallback
+  = lens _prjsipCallback
+      (\ s a -> s{_prjsipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsJobsSetIAMPolicy where
+        type Rs ProjectsRegionsJobsSetIAMPolicy = Policy
+        type Scopes ProjectsRegionsJobsSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsRegionsJobsSetIAMPolicy'{..}
+          = go _prjsipResource _prjsipXgafv
+              _prjsipUploadProtocol
+              _prjsipAccessToken
+              _prjsipUploadType
+              _prjsipCallback
+              (Just AltJSON)
+              _prjsipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsJobsSetIAMPolicyResource)
+                      mempty
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
@@ -22,7 +22,7 @@
 --
 -- Submits a job to a cluster.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.submit@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.submit@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Submit
     (
     -- * REST Resource
@@ -35,11 +35,9 @@
     -- * Request Lenses
     , prjsXgafv
     , prjsUploadProtocol
-    , prjsPp
     , prjsAccessToken
     , prjsUploadType
     , prjsPayload
-    , prjsBearerToken
     , prjsRegion
     , prjsProjectId
     , prjsCallback
@@ -57,28 +55,24 @@
            "regions" :>
              Capture "region" Text :>
                "jobs:submit" :>
-                 QueryParam "$.xgafv" Text :>
+                 QueryParam "$.xgafv" Xgafv :>
                    QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
-                       QueryParam "access_token" Text :>
-                         QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 ReqBody '[JSON] SubmitJobRequest :>
-                                   Post '[JSON] Job
+                     QueryParam "access_token" Text :>
+                       QueryParam "uploadType" Text :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] SubmitJobRequest :>
+                               Post '[JSON] Job
 
 -- | Submits a job to a cluster.
 --
 -- /See:/ 'projectsRegionsJobsSubmit' smart constructor.
 data ProjectsRegionsJobsSubmit = ProjectsRegionsJobsSubmit'
-    { _prjsXgafv          :: !(Maybe Text)
+    { _prjsXgafv          :: !(Maybe Xgafv)
     , _prjsUploadProtocol :: !(Maybe Text)
-    , _prjsPp             :: !Bool
     , _prjsAccessToken    :: !(Maybe Text)
     , _prjsUploadType     :: !(Maybe Text)
     , _prjsPayload        :: !SubmitJobRequest
-    , _prjsBearerToken    :: !(Maybe Text)
     , _prjsRegion         :: !Text
     , _prjsProjectId      :: !Text
     , _prjsCallback       :: !(Maybe Text)
@@ -92,16 +86,12 @@
 --
 -- * 'prjsUploadProtocol'
 --
--- * 'prjsPp'
---
 -- * 'prjsAccessToken'
 --
 -- * 'prjsUploadType'
 --
 -- * 'prjsPayload'
 --
--- * 'prjsBearerToken'
---
 -- * 'prjsRegion'
 --
 -- * 'prjsProjectId'
@@ -116,18 +106,16 @@
     ProjectsRegionsJobsSubmit'
     { _prjsXgafv = Nothing
     , _prjsUploadProtocol = Nothing
-    , _prjsPp = True
     , _prjsAccessToken = Nothing
     , _prjsUploadType = Nothing
     , _prjsPayload = pPrjsPayload_
-    , _prjsBearerToken = Nothing
     , _prjsRegion = pPrjsRegion_
     , _prjsProjectId = pPrjsProjectId_
     , _prjsCallback = Nothing
     }
 
 -- | V1 error format.
-prjsXgafv :: Lens' ProjectsRegionsJobsSubmit (Maybe Text)
+prjsXgafv :: Lens' ProjectsRegionsJobsSubmit (Maybe Xgafv)
 prjsXgafv
   = lens _prjsXgafv (\ s a -> s{_prjsXgafv = a})
 
@@ -137,10 +125,6 @@
   = lens _prjsUploadProtocol
       (\ s a -> s{_prjsUploadProtocol = a})
 
--- | Pretty-print response.
-prjsPp :: Lens' ProjectsRegionsJobsSubmit Bool
-prjsPp = lens _prjsPp (\ s a -> s{_prjsPp = a})
-
 -- | OAuth access token.
 prjsAccessToken :: Lens' ProjectsRegionsJobsSubmit (Maybe Text)
 prjsAccessToken
@@ -158,18 +142,12 @@
 prjsPayload
   = lens _prjsPayload (\ s a -> s{_prjsPayload = a})
 
--- | OAuth bearer token.
-prjsBearerToken :: Lens' ProjectsRegionsJobsSubmit (Maybe Text)
-prjsBearerToken
-  = lens _prjsBearerToken
-      (\ s a -> s{_prjsBearerToken = a})
-
--- | [Required] The Cloud Dataproc region in which to handle the request.
+-- | Required. The Cloud Dataproc region in which to handle the request.
 prjsRegion :: Lens' ProjectsRegionsJobsSubmit Text
 prjsRegion
   = lens _prjsRegion (\ s a -> s{_prjsRegion = a})
 
--- | [Required] The ID of the Google Cloud Platform project that the job
+-- | Required. The ID of the Google Cloud Platform project that the job
 -- belongs to.
 prjsProjectId :: Lens' ProjectsRegionsJobsSubmit Text
 prjsProjectId
@@ -189,10 +167,8 @@
         requestClient ProjectsRegionsJobsSubmit'{..}
           = go _prjsProjectId _prjsRegion _prjsXgafv
               _prjsUploadProtocol
-              (Just _prjsPp)
               _prjsAccessToken
               _prjsUploadType
-              _prjsBearerToken
               _prjsCallback
               (Just AltJSON)
               _prjsPayload
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Jobs/TestIAMPermissions.hs
@@ -0,0 +1,180 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Jobs.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.jobs.testIamPermissions@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Jobs.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsRegionsJobsTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsRegionsJobsTestIAMPermissions
+    , ProjectsRegionsJobsTestIAMPermissions
+
+    -- * Request Lenses
+    , prjtipXgafv
+    , prjtipUploadProtocol
+    , prjtipAccessToken
+    , prjtipUploadType
+    , prjtipPayload
+    , prjtipResource
+    , prjtipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.jobs.testIamPermissions@ method which the
+-- 'ProjectsRegionsJobsTestIAMPermissions' request conforms to.
+type ProjectsRegionsJobsTestIAMPermissionsResource =
+     "v1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ 'projectsRegionsJobsTestIAMPermissions' smart constructor.
+data ProjectsRegionsJobsTestIAMPermissions = ProjectsRegionsJobsTestIAMPermissions'
+    { _prjtipXgafv          :: !(Maybe Xgafv)
+    , _prjtipUploadProtocol :: !(Maybe Text)
+    , _prjtipAccessToken    :: !(Maybe Text)
+    , _prjtipUploadType     :: !(Maybe Text)
+    , _prjtipPayload        :: !TestIAMPermissionsRequest
+    , _prjtipResource       :: !Text
+    , _prjtipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prjtipXgafv'
+--
+-- * 'prjtipUploadProtocol'
+--
+-- * 'prjtipAccessToken'
+--
+-- * 'prjtipUploadType'
+--
+-- * 'prjtipPayload'
+--
+-- * 'prjtipResource'
+--
+-- * 'prjtipCallback'
+projectsRegionsJobsTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'prjtipPayload'
+    -> Text -- ^ 'prjtipResource'
+    -> ProjectsRegionsJobsTestIAMPermissions
+projectsRegionsJobsTestIAMPermissions pPrjtipPayload_ pPrjtipResource_ =
+    ProjectsRegionsJobsTestIAMPermissions'
+    { _prjtipXgafv = Nothing
+    , _prjtipUploadProtocol = Nothing
+    , _prjtipAccessToken = Nothing
+    , _prjtipUploadType = Nothing
+    , _prjtipPayload = pPrjtipPayload_
+    , _prjtipResource = pPrjtipResource_
+    , _prjtipCallback = Nothing
+    }
+
+-- | V1 error format.
+prjtipXgafv :: Lens' ProjectsRegionsJobsTestIAMPermissions (Maybe Xgafv)
+prjtipXgafv
+  = lens _prjtipXgafv (\ s a -> s{_prjtipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prjtipUploadProtocol :: Lens' ProjectsRegionsJobsTestIAMPermissions (Maybe Text)
+prjtipUploadProtocol
+  = lens _prjtipUploadProtocol
+      (\ s a -> s{_prjtipUploadProtocol = a})
+
+-- | OAuth access token.
+prjtipAccessToken :: Lens' ProjectsRegionsJobsTestIAMPermissions (Maybe Text)
+prjtipAccessToken
+  = lens _prjtipAccessToken
+      (\ s a -> s{_prjtipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prjtipUploadType :: Lens' ProjectsRegionsJobsTestIAMPermissions (Maybe Text)
+prjtipUploadType
+  = lens _prjtipUploadType
+      (\ s a -> s{_prjtipUploadType = a})
+
+-- | Multipart request metadata.
+prjtipPayload :: Lens' ProjectsRegionsJobsTestIAMPermissions TestIAMPermissionsRequest
+prjtipPayload
+  = lens _prjtipPayload
+      (\ s a -> s{_prjtipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+prjtipResource :: Lens' ProjectsRegionsJobsTestIAMPermissions Text
+prjtipResource
+  = lens _prjtipResource
+      (\ s a -> s{_prjtipResource = a})
+
+-- | JSONP
+prjtipCallback :: Lens' ProjectsRegionsJobsTestIAMPermissions (Maybe Text)
+prjtipCallback
+  = lens _prjtipCallback
+      (\ s a -> s{_prjtipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsJobsTestIAMPermissions where
+        type Rs ProjectsRegionsJobsTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes ProjectsRegionsJobsTestIAMPermissions =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsJobsTestIAMPermissions'{..}
+          = go _prjtipResource _prjtipXgafv
+              _prjtipUploadProtocol
+              _prjtipAccessToken
+              _prjtipUploadType
+              _prjtipCallback
+              (Just AltJSON)
+              _prjtipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsJobsTestIAMPermissionsResource)
+                      mempty
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
@@ -23,14 +23,14 @@
 -- Starts asynchronous cancellation on a long-running operation. The server
 -- makes a best effort to cancel the operation, but success is not
 -- guaranteed. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`. Clients can use
--- Operations.GetOperation or other methods to check whether the
--- cancellation succeeded or whether the operation completed despite
--- cancellation. On successful cancellation, the operation is not deleted;
--- instead, it becomes an operation with an Operation.error value with a
--- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
+-- google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation
+-- or other methods to check whether the cancellation succeeded or whether
+-- the operation completed despite cancellation. On successful
+-- cancellation, the operation is not deleted; instead, it becomes an
+-- operation with an Operation.error value with a google.rpc.Status.code of
+-- 1, corresponding to Code.CANCELLED.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.cancel@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.cancel@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Operations.Cancel
     (
     -- * REST Resource
@@ -43,10 +43,8 @@
     -- * Request Lenses
     , procXgafv
     , procUploadProtocol
-    , procPp
     , procAccessToken
     , procUploadType
-    , procBearerToken
     , procName
     , procCallback
     ) where
@@ -59,33 +57,29 @@
 type ProjectsRegionsOperationsCancelResource =
      "v1" :>
        CaptureMode "name" "cancel" Text :>
-         QueryParam "$.xgafv" Text :>
+         QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Post '[JSON] Empty
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] Empty
 
 -- | Starts asynchronous cancellation on a long-running operation. The server
 -- makes a best effort to cancel the operation, but success is not
 -- guaranteed. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`. Clients can use
--- Operations.GetOperation or other methods to check whether the
--- cancellation succeeded or whether the operation completed despite
--- cancellation. On successful cancellation, the operation is not deleted;
--- instead, it becomes an operation with an Operation.error value with a
--- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
+-- google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation
+-- or other methods to check whether the cancellation succeeded or whether
+-- the operation completed despite cancellation. On successful
+-- cancellation, the operation is not deleted; instead, it becomes an
+-- operation with an Operation.error value with a google.rpc.Status.code of
+-- 1, corresponding to Code.CANCELLED.
 --
 -- /See:/ 'projectsRegionsOperationsCancel' smart constructor.
 data ProjectsRegionsOperationsCancel = ProjectsRegionsOperationsCancel'
-    { _procXgafv          :: !(Maybe Text)
+    { _procXgafv          :: !(Maybe Xgafv)
     , _procUploadProtocol :: !(Maybe Text)
-    , _procPp             :: !Bool
     , _procAccessToken    :: !(Maybe Text)
     , _procUploadType     :: !(Maybe Text)
-    , _procBearerToken    :: !(Maybe Text)
     , _procName           :: !Text
     , _procCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -98,14 +92,10 @@
 --
 -- * 'procUploadProtocol'
 --
--- * 'procPp'
---
 -- * 'procAccessToken'
 --
 -- * 'procUploadType'
 --
--- * 'procBearerToken'
---
 -- * 'procName'
 --
 -- * 'procCallback'
@@ -116,16 +106,14 @@
     ProjectsRegionsOperationsCancel'
     { _procXgafv = Nothing
     , _procUploadProtocol = Nothing
-    , _procPp = True
     , _procAccessToken = Nothing
     , _procUploadType = Nothing
-    , _procBearerToken = Nothing
     , _procName = pProcName_
     , _procCallback = Nothing
     }
 
 -- | V1 error format.
-procXgafv :: Lens' ProjectsRegionsOperationsCancel (Maybe Text)
+procXgafv :: Lens' ProjectsRegionsOperationsCancel (Maybe Xgafv)
 procXgafv
   = lens _procXgafv (\ s a -> s{_procXgafv = a})
 
@@ -135,10 +123,6 @@
   = lens _procUploadProtocol
       (\ s a -> s{_procUploadProtocol = a})
 
--- | Pretty-print response.
-procPp :: Lens' ProjectsRegionsOperationsCancel Bool
-procPp = lens _procPp (\ s a -> s{_procPp = a})
-
 -- | OAuth access token.
 procAccessToken :: Lens' ProjectsRegionsOperationsCancel (Maybe Text)
 procAccessToken
@@ -151,12 +135,6 @@
   = lens _procUploadType
       (\ s a -> s{_procUploadType = a})
 
--- | OAuth bearer token.
-procBearerToken :: Lens' ProjectsRegionsOperationsCancel (Maybe Text)
-procBearerToken
-  = lens _procBearerToken
-      (\ s a -> s{_procBearerToken = a})
-
 -- | The name of the operation resource to be cancelled.
 procName :: Lens' ProjectsRegionsOperationsCancel Text
 procName = lens _procName (\ s a -> s{_procName = a})
@@ -173,10 +151,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsRegionsOperationsCancel'{..}
           = go _procName _procXgafv _procUploadProtocol
-              (Just _procPp)
               _procAccessToken
               _procUploadType
-              _procBearerToken
               _procCallback
               (Just AltJSON)
               dataprocService
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
@@ -23,9 +23,9 @@
 -- Deletes a long-running operation. This method indicates that the client
 -- is no longer interested in the operation result. It does not cancel the
 -- operation. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`.
+-- google.rpc.Code.UNIMPLEMENTED.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.delete@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.delete@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Operations.Delete
     (
     -- * REST Resource
@@ -38,10 +38,8 @@
     -- * Request Lenses
     , prodXgafv
     , prodUploadProtocol
-    , prodPp
     , prodAccessToken
     , prodUploadType
-    , prodBearerToken
     , prodName
     , prodCallback
     ) where
@@ -54,28 +52,24 @@
 type ProjectsRegionsOperationsDeleteResource =
      "v1" :>
        Capture "name" Text :>
-         QueryParam "$.xgafv" Text :>
+         QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
 
 -- | Deletes a long-running operation. This method indicates that the client
 -- is no longer interested in the operation result. It does not cancel the
 -- operation. If the server doesn\'t support this method, it returns
--- \`google.rpc.Code.UNIMPLEMENTED\`.
+-- google.rpc.Code.UNIMPLEMENTED.
 --
 -- /See:/ 'projectsRegionsOperationsDelete' smart constructor.
 data ProjectsRegionsOperationsDelete = ProjectsRegionsOperationsDelete'
-    { _prodXgafv          :: !(Maybe Text)
+    { _prodXgafv          :: !(Maybe Xgafv)
     , _prodUploadProtocol :: !(Maybe Text)
-    , _prodPp             :: !Bool
     , _prodAccessToken    :: !(Maybe Text)
     , _prodUploadType     :: !(Maybe Text)
-    , _prodBearerToken    :: !(Maybe Text)
     , _prodName           :: !Text
     , _prodCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -88,14 +82,10 @@
 --
 -- * 'prodUploadProtocol'
 --
--- * 'prodPp'
---
 -- * 'prodAccessToken'
 --
 -- * 'prodUploadType'
 --
--- * 'prodBearerToken'
---
 -- * 'prodName'
 --
 -- * 'prodCallback'
@@ -106,16 +96,14 @@
     ProjectsRegionsOperationsDelete'
     { _prodXgafv = Nothing
     , _prodUploadProtocol = Nothing
-    , _prodPp = True
     , _prodAccessToken = Nothing
     , _prodUploadType = Nothing
-    , _prodBearerToken = Nothing
     , _prodName = pProdName_
     , _prodCallback = Nothing
     }
 
 -- | V1 error format.
-prodXgafv :: Lens' ProjectsRegionsOperationsDelete (Maybe Text)
+prodXgafv :: Lens' ProjectsRegionsOperationsDelete (Maybe Xgafv)
 prodXgafv
   = lens _prodXgafv (\ s a -> s{_prodXgafv = a})
 
@@ -125,10 +113,6 @@
   = lens _prodUploadProtocol
       (\ s a -> s{_prodUploadProtocol = a})
 
--- | Pretty-print response.
-prodPp :: Lens' ProjectsRegionsOperationsDelete Bool
-prodPp = lens _prodPp (\ s a -> s{_prodPp = a})
-
 -- | OAuth access token.
 prodAccessToken :: Lens' ProjectsRegionsOperationsDelete (Maybe Text)
 prodAccessToken
@@ -141,12 +125,6 @@
   = lens _prodUploadType
       (\ s a -> s{_prodUploadType = a})
 
--- | OAuth bearer token.
-prodBearerToken :: Lens' ProjectsRegionsOperationsDelete (Maybe Text)
-prodBearerToken
-  = lens _prodBearerToken
-      (\ s a -> s{_prodBearerToken = a})
-
 -- | The name of the operation resource to be deleted.
 prodName :: Lens' ProjectsRegionsOperationsDelete Text
 prodName = lens _prodName (\ s a -> s{_prodName = a})
@@ -163,10 +141,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsRegionsOperationsDelete'{..}
           = go _prodName _prodXgafv _prodUploadProtocol
-              (Just _prodPp)
               _prodAccessToken
               _prodUploadType
-              _prodBearerToken
               _prodCallback
               (Just AltJSON)
               dataprocService
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
@@ -24,7 +24,7 @@
 -- method to poll the operation result at intervals as recommended by the
 -- API service.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.get@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.get@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Operations.Get
     (
     -- * REST Resource
@@ -37,10 +37,8 @@
     -- * Request Lenses
     , progXgafv
     , progUploadProtocol
-    , progPp
     , progAccessToken
     , progUploadType
-    , progBearerToken
     , progName
     , progCallback
     ) where
@@ -53,14 +51,12 @@
 type ProjectsRegionsOperationsGetResource =
      "v1" :>
        Capture "name" Text :>
-         QueryParam "$.xgafv" Text :>
+         QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "callback" Text :>
-                       QueryParam "alt" AltJSON :> Get '[JSON] Operation
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Operation
 
 -- | Gets the latest state of a long-running operation. Clients can use this
 -- method to poll the operation result at intervals as recommended by the
@@ -68,12 +64,10 @@
 --
 -- /See:/ 'projectsRegionsOperationsGet' smart constructor.
 data ProjectsRegionsOperationsGet = ProjectsRegionsOperationsGet'
-    { _progXgafv          :: !(Maybe Text)
+    { _progXgafv          :: !(Maybe Xgafv)
     , _progUploadProtocol :: !(Maybe Text)
-    , _progPp             :: !Bool
     , _progAccessToken    :: !(Maybe Text)
     , _progUploadType     :: !(Maybe Text)
-    , _progBearerToken    :: !(Maybe Text)
     , _progName           :: !Text
     , _progCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -86,14 +80,10 @@
 --
 -- * 'progUploadProtocol'
 --
--- * 'progPp'
---
 -- * 'progAccessToken'
 --
 -- * 'progUploadType'
 --
--- * 'progBearerToken'
---
 -- * 'progName'
 --
 -- * 'progCallback'
@@ -104,16 +94,14 @@
     ProjectsRegionsOperationsGet'
     { _progXgafv = Nothing
     , _progUploadProtocol = Nothing
-    , _progPp = True
     , _progAccessToken = Nothing
     , _progUploadType = Nothing
-    , _progBearerToken = Nothing
     , _progName = pProgName_
     , _progCallback = Nothing
     }
 
 -- | V1 error format.
-progXgafv :: Lens' ProjectsRegionsOperationsGet (Maybe Text)
+progXgafv :: Lens' ProjectsRegionsOperationsGet (Maybe Xgafv)
 progXgafv
   = lens _progXgafv (\ s a -> s{_progXgafv = a})
 
@@ -123,10 +111,6 @@
   = lens _progUploadProtocol
       (\ s a -> s{_progUploadProtocol = a})
 
--- | Pretty-print response.
-progPp :: Lens' ProjectsRegionsOperationsGet Bool
-progPp = lens _progPp (\ s a -> s{_progPp = a})
-
 -- | OAuth access token.
 progAccessToken :: Lens' ProjectsRegionsOperationsGet (Maybe Text)
 progAccessToken
@@ -139,12 +123,6 @@
   = lens _progUploadType
       (\ s a -> s{_progUploadType = a})
 
--- | OAuth bearer token.
-progBearerToken :: Lens' ProjectsRegionsOperationsGet (Maybe Text)
-progBearerToken
-  = lens _progBearerToken
-      (\ s a -> s{_progBearerToken = a})
-
 -- | The name of the operation resource.
 progName :: Lens' ProjectsRegionsOperationsGet Text
 progName = lens _progName (\ s a -> s{_progName = a})
@@ -161,10 +139,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsRegionsOperationsGet'{..}
           = go _progName _progXgafv _progUploadProtocol
-              (Just _progPp)
               _progAccessToken
               _progUploadType
-              _progBearerToken
               _progCallback
               (Just AltJSON)
               dataprocService
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/GetIAMPolicy.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Operations.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.getIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Operations.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsOperationsGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsOperationsGetIAMPolicy
+    , ProjectsRegionsOperationsGetIAMPolicy
+
+    -- * Request Lenses
+    , progipXgafv
+    , progipUploadProtocol
+    , progipAccessToken
+    , progipUploadType
+    , progipPayload
+    , progipResource
+    , progipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.operations.getIamPolicy@ method which the
+-- 'ProjectsRegionsOperationsGetIAMPolicy' request conforms to.
+type ProjectsRegionsOperationsGetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ 'projectsRegionsOperationsGetIAMPolicy' smart constructor.
+data ProjectsRegionsOperationsGetIAMPolicy = ProjectsRegionsOperationsGetIAMPolicy'
+    { _progipXgafv          :: !(Maybe Xgafv)
+    , _progipUploadProtocol :: !(Maybe Text)
+    , _progipAccessToken    :: !(Maybe Text)
+    , _progipUploadType     :: !(Maybe Text)
+    , _progipPayload        :: !GetIAMPolicyRequest
+    , _progipResource       :: !Text
+    , _progipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'progipXgafv'
+--
+-- * 'progipUploadProtocol'
+--
+-- * 'progipAccessToken'
+--
+-- * 'progipUploadType'
+--
+-- * 'progipPayload'
+--
+-- * 'progipResource'
+--
+-- * 'progipCallback'
+projectsRegionsOperationsGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'progipPayload'
+    -> Text -- ^ 'progipResource'
+    -> ProjectsRegionsOperationsGetIAMPolicy
+projectsRegionsOperationsGetIAMPolicy pProgipPayload_ pProgipResource_ =
+    ProjectsRegionsOperationsGetIAMPolicy'
+    { _progipXgafv = Nothing
+    , _progipUploadProtocol = Nothing
+    , _progipAccessToken = Nothing
+    , _progipUploadType = Nothing
+    , _progipPayload = pProgipPayload_
+    , _progipResource = pProgipResource_
+    , _progipCallback = Nothing
+    }
+
+-- | V1 error format.
+progipXgafv :: Lens' ProjectsRegionsOperationsGetIAMPolicy (Maybe Xgafv)
+progipXgafv
+  = lens _progipXgafv (\ s a -> s{_progipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+progipUploadProtocol :: Lens' ProjectsRegionsOperationsGetIAMPolicy (Maybe Text)
+progipUploadProtocol
+  = lens _progipUploadProtocol
+      (\ s a -> s{_progipUploadProtocol = a})
+
+-- | OAuth access token.
+progipAccessToken :: Lens' ProjectsRegionsOperationsGetIAMPolicy (Maybe Text)
+progipAccessToken
+  = lens _progipAccessToken
+      (\ s a -> s{_progipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+progipUploadType :: Lens' ProjectsRegionsOperationsGetIAMPolicy (Maybe Text)
+progipUploadType
+  = lens _progipUploadType
+      (\ s a -> s{_progipUploadType = a})
+
+-- | Multipart request metadata.
+progipPayload :: Lens' ProjectsRegionsOperationsGetIAMPolicy GetIAMPolicyRequest
+progipPayload
+  = lens _progipPayload
+      (\ s a -> s{_progipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+progipResource :: Lens' ProjectsRegionsOperationsGetIAMPolicy Text
+progipResource
+  = lens _progipResource
+      (\ s a -> s{_progipResource = a})
+
+-- | JSONP
+progipCallback :: Lens' ProjectsRegionsOperationsGetIAMPolicy (Maybe Text)
+progipCallback
+  = lens _progipCallback
+      (\ s a -> s{_progipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsOperationsGetIAMPolicy where
+        type Rs ProjectsRegionsOperationsGetIAMPolicy =
+             Policy
+        type Scopes ProjectsRegionsOperationsGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsOperationsGetIAMPolicy'{..}
+          = go _progipResource _progipXgafv
+              _progipUploadProtocol
+              _progipAccessToken
+              _progipUploadType
+              _progipCallback
+              (Just AltJSON)
+              _progipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsOperationsGetIAMPolicyResource)
+                      mempty
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
@@ -21,12 +21,16 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Lists operations that match the specified filter in the request. If the
--- server doesn\'t support this method, it returns \`UNIMPLEMENTED\`. NOTE:
--- the \`name\` binding below allows API services to override the binding
--- to use different resource name schemes, such as
--- \`users\/*\/operations\`.
+-- server doesn\'t support this method, it returns UNIMPLEMENTED.NOTE: the
+-- name binding allows API services to override the binding to use
+-- different resource name schemes, such as users\/*\/operations. To
+-- override the binding, API services can add a binding such as
+-- \"\/v1\/{name=users\/*}\/operations\" to their service configuration.
+-- For backwards compatibility, the default name includes the operations
+-- collection id, however overriding users must ensure the name binding is
+-- the parent resource, without the operations collection id.
 --
--- /See:/ <https://cloud.google.com/dataproc/ Google Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.list@.
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.list@.
 module Network.Google.Resource.Dataproc.Projects.Regions.Operations.List
     (
     -- * REST Resource
@@ -39,10 +43,8 @@
     -- * Request Lenses
     , prolXgafv
     , prolUploadProtocol
-    , prolPp
     , prolAccessToken
     , prolUploadType
-    , prolBearerToken
     , prolName
     , prolFilter
     , prolPageToken
@@ -58,33 +60,33 @@
 type ProjectsRegionsOperationsListResource =
      "v1" :>
        Capture "name" Text :>
-         QueryParam "$.xgafv" Text :>
+         QueryParam "$.xgafv" Xgafv :>
            QueryParam "upload_protocol" Text :>
-             QueryParam "pp" Bool :>
-               QueryParam "access_token" Text :>
-                 QueryParam "uploadType" Text :>
-                   QueryParam "bearer_token" Text :>
-                     QueryParam "filter" Text :>
-                       QueryParam "pageToken" Text :>
-                         QueryParam "pageSize" (Textual Int32) :>
-                           QueryParam "callback" Text :>
-                             QueryParam "alt" AltJSON :>
-                               Get '[JSON] ListOperationsResponse
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListOperationsResponse
 
 -- | Lists operations that match the specified filter in the request. If the
--- server doesn\'t support this method, it returns \`UNIMPLEMENTED\`. NOTE:
--- the \`name\` binding below allows API services to override the binding
--- to use different resource name schemes, such as
--- \`users\/*\/operations\`.
+-- server doesn\'t support this method, it returns UNIMPLEMENTED.NOTE: the
+-- name binding allows API services to override the binding to use
+-- different resource name schemes, such as users\/*\/operations. To
+-- override the binding, API services can add a binding such as
+-- \"\/v1\/{name=users\/*}\/operations\" to their service configuration.
+-- For backwards compatibility, the default name includes the operations
+-- collection id, however overriding users must ensure the name binding is
+-- the parent resource, without the operations collection id.
 --
 -- /See:/ 'projectsRegionsOperationsList' smart constructor.
 data ProjectsRegionsOperationsList = ProjectsRegionsOperationsList'
-    { _prolXgafv          :: !(Maybe Text)
+    { _prolXgafv          :: !(Maybe Xgafv)
     , _prolUploadProtocol :: !(Maybe Text)
-    , _prolPp             :: !Bool
     , _prolAccessToken    :: !(Maybe Text)
     , _prolUploadType     :: !(Maybe Text)
-    , _prolBearerToken    :: !(Maybe Text)
     , _prolName           :: !Text
     , _prolFilter         :: !(Maybe Text)
     , _prolPageToken      :: !(Maybe Text)
@@ -100,14 +102,10 @@
 --
 -- * 'prolUploadProtocol'
 --
--- * 'prolPp'
---
 -- * 'prolAccessToken'
 --
 -- * 'prolUploadType'
 --
--- * 'prolBearerToken'
---
 -- * 'prolName'
 --
 -- * 'prolFilter'
@@ -124,10 +122,8 @@
     ProjectsRegionsOperationsList'
     { _prolXgafv = Nothing
     , _prolUploadProtocol = Nothing
-    , _prolPp = True
     , _prolAccessToken = Nothing
     , _prolUploadType = Nothing
-    , _prolBearerToken = Nothing
     , _prolName = pProlName_
     , _prolFilter = Nothing
     , _prolPageToken = Nothing
@@ -136,7 +132,7 @@
     }
 
 -- | V1 error format.
-prolXgafv :: Lens' ProjectsRegionsOperationsList (Maybe Text)
+prolXgafv :: Lens' ProjectsRegionsOperationsList (Maybe Xgafv)
 prolXgafv
   = lens _prolXgafv (\ s a -> s{_prolXgafv = a})
 
@@ -146,10 +142,6 @@
   = lens _prolUploadProtocol
       (\ s a -> s{_prolUploadProtocol = a})
 
--- | Pretty-print response.
-prolPp :: Lens' ProjectsRegionsOperationsList Bool
-prolPp = lens _prolPp (\ s a -> s{_prolPp = a})
-
 -- | OAuth access token.
 prolAccessToken :: Lens' ProjectsRegionsOperationsList (Maybe Text)
 prolAccessToken
@@ -162,13 +154,7 @@
   = lens _prolUploadType
       (\ s a -> s{_prolUploadType = a})
 
--- | OAuth bearer token.
-prolBearerToken :: Lens' ProjectsRegionsOperationsList (Maybe Text)
-prolBearerToken
-  = lens _prolBearerToken
-      (\ s a -> s{_prolBearerToken = a})
-
--- | The name of the operation collection.
+-- | The name of the operation\'s parent resource.
 prolName :: Lens' ProjectsRegionsOperationsList Text
 prolName = lens _prolName (\ s a -> s{_prolName = a})
 
@@ -202,10 +188,8 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsRegionsOperationsList'{..}
           = go _prolName _prolXgafv _prolUploadProtocol
-              (Just _prolPp)
               _prolAccessToken
               _prolUploadType
-              _prolBearerToken
               _prolFilter
               _prolPageToken
               _prolPageSize
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/SetIAMPolicy.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Operations.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.setIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Operations.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsOperationsSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsOperationsSetIAMPolicy
+    , ProjectsRegionsOperationsSetIAMPolicy
+
+    -- * Request Lenses
+    , prosipXgafv
+    , prosipUploadProtocol
+    , prosipAccessToken
+    , prosipUploadType
+    , prosipPayload
+    , prosipResource
+    , prosipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.operations.setIamPolicy@ method which the
+-- 'ProjectsRegionsOperationsSetIAMPolicy' request conforms to.
+type ProjectsRegionsOperationsSetIAMPolicyResource =
+     "v1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsRegionsOperationsSetIAMPolicy' smart constructor.
+data ProjectsRegionsOperationsSetIAMPolicy = ProjectsRegionsOperationsSetIAMPolicy'
+    { _prosipXgafv          :: !(Maybe Xgafv)
+    , _prosipUploadProtocol :: !(Maybe Text)
+    , _prosipAccessToken    :: !(Maybe Text)
+    , _prosipUploadType     :: !(Maybe Text)
+    , _prosipPayload        :: !SetIAMPolicyRequest
+    , _prosipResource       :: !Text
+    , _prosipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prosipXgafv'
+--
+-- * 'prosipUploadProtocol'
+--
+-- * 'prosipAccessToken'
+--
+-- * 'prosipUploadType'
+--
+-- * 'prosipPayload'
+--
+-- * 'prosipResource'
+--
+-- * 'prosipCallback'
+projectsRegionsOperationsSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'prosipPayload'
+    -> Text -- ^ 'prosipResource'
+    -> ProjectsRegionsOperationsSetIAMPolicy
+projectsRegionsOperationsSetIAMPolicy pProsipPayload_ pProsipResource_ =
+    ProjectsRegionsOperationsSetIAMPolicy'
+    { _prosipXgafv = Nothing
+    , _prosipUploadProtocol = Nothing
+    , _prosipAccessToken = Nothing
+    , _prosipUploadType = Nothing
+    , _prosipPayload = pProsipPayload_
+    , _prosipResource = pProsipResource_
+    , _prosipCallback = Nothing
+    }
+
+-- | V1 error format.
+prosipXgafv :: Lens' ProjectsRegionsOperationsSetIAMPolicy (Maybe Xgafv)
+prosipXgafv
+  = lens _prosipXgafv (\ s a -> s{_prosipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prosipUploadProtocol :: Lens' ProjectsRegionsOperationsSetIAMPolicy (Maybe Text)
+prosipUploadProtocol
+  = lens _prosipUploadProtocol
+      (\ s a -> s{_prosipUploadProtocol = a})
+
+-- | OAuth access token.
+prosipAccessToken :: Lens' ProjectsRegionsOperationsSetIAMPolicy (Maybe Text)
+prosipAccessToken
+  = lens _prosipAccessToken
+      (\ s a -> s{_prosipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prosipUploadType :: Lens' ProjectsRegionsOperationsSetIAMPolicy (Maybe Text)
+prosipUploadType
+  = lens _prosipUploadType
+      (\ s a -> s{_prosipUploadType = a})
+
+-- | Multipart request metadata.
+prosipPayload :: Lens' ProjectsRegionsOperationsSetIAMPolicy SetIAMPolicyRequest
+prosipPayload
+  = lens _prosipPayload
+      (\ s a -> s{_prosipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+prosipResource :: Lens' ProjectsRegionsOperationsSetIAMPolicy Text
+prosipResource
+  = lens _prosipResource
+      (\ s a -> s{_prosipResource = a})
+
+-- | JSONP
+prosipCallback :: Lens' ProjectsRegionsOperationsSetIAMPolicy (Maybe Text)
+prosipCallback
+  = lens _prosipCallback
+      (\ s a -> s{_prosipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsOperationsSetIAMPolicy where
+        type Rs ProjectsRegionsOperationsSetIAMPolicy =
+             Policy
+        type Scopes ProjectsRegionsOperationsSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsOperationsSetIAMPolicy'{..}
+          = go _prosipResource _prosipXgafv
+              _prosipUploadProtocol
+              _prosipAccessToken
+              _prosipUploadType
+              _prosipCallback
+              (Just AltJSON)
+              _prosipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsOperationsSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/Operations/TestIAMPermissions.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.Operations.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.operations.testIamPermissions@.
+module Network.Google.Resource.Dataproc.Projects.Regions.Operations.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsRegionsOperationsTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsRegionsOperationsTestIAMPermissions
+    , ProjectsRegionsOperationsTestIAMPermissions
+
+    -- * Request Lenses
+    , protipXgafv
+    , protipUploadProtocol
+    , protipAccessToken
+    , protipUploadType
+    , protipPayload
+    , protipResource
+    , protipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.operations.testIamPermissions@ method which the
+-- 'ProjectsRegionsOperationsTestIAMPermissions' request conforms to.
+type ProjectsRegionsOperationsTestIAMPermissionsResource
+     =
+     "v1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ 'projectsRegionsOperationsTestIAMPermissions' smart constructor.
+data ProjectsRegionsOperationsTestIAMPermissions = ProjectsRegionsOperationsTestIAMPermissions'
+    { _protipXgafv          :: !(Maybe Xgafv)
+    , _protipUploadProtocol :: !(Maybe Text)
+    , _protipAccessToken    :: !(Maybe Text)
+    , _protipUploadType     :: !(Maybe Text)
+    , _protipPayload        :: !TestIAMPermissionsRequest
+    , _protipResource       :: !Text
+    , _protipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'protipXgafv'
+--
+-- * 'protipUploadProtocol'
+--
+-- * 'protipAccessToken'
+--
+-- * 'protipUploadType'
+--
+-- * 'protipPayload'
+--
+-- * 'protipResource'
+--
+-- * 'protipCallback'
+projectsRegionsOperationsTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'protipPayload'
+    -> Text -- ^ 'protipResource'
+    -> ProjectsRegionsOperationsTestIAMPermissions
+projectsRegionsOperationsTestIAMPermissions pProtipPayload_ pProtipResource_ =
+    ProjectsRegionsOperationsTestIAMPermissions'
+    { _protipXgafv = Nothing
+    , _protipUploadProtocol = Nothing
+    , _protipAccessToken = Nothing
+    , _protipUploadType = Nothing
+    , _protipPayload = pProtipPayload_
+    , _protipResource = pProtipResource_
+    , _protipCallback = Nothing
+    }
+
+-- | V1 error format.
+protipXgafv :: Lens' ProjectsRegionsOperationsTestIAMPermissions (Maybe Xgafv)
+protipXgafv
+  = lens _protipXgafv (\ s a -> s{_protipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+protipUploadProtocol :: Lens' ProjectsRegionsOperationsTestIAMPermissions (Maybe Text)
+protipUploadProtocol
+  = lens _protipUploadProtocol
+      (\ s a -> s{_protipUploadProtocol = a})
+
+-- | OAuth access token.
+protipAccessToken :: Lens' ProjectsRegionsOperationsTestIAMPermissions (Maybe Text)
+protipAccessToken
+  = lens _protipAccessToken
+      (\ s a -> s{_protipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+protipUploadType :: Lens' ProjectsRegionsOperationsTestIAMPermissions (Maybe Text)
+protipUploadType
+  = lens _protipUploadType
+      (\ s a -> s{_protipUploadType = a})
+
+-- | Multipart request metadata.
+protipPayload :: Lens' ProjectsRegionsOperationsTestIAMPermissions TestIAMPermissionsRequest
+protipPayload
+  = lens _protipPayload
+      (\ s a -> s{_protipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+protipResource :: Lens' ProjectsRegionsOperationsTestIAMPermissions Text
+protipResource
+  = lens _protipResource
+      (\ s a -> s{_protipResource = a})
+
+-- | JSONP
+protipCallback :: Lens' ProjectsRegionsOperationsTestIAMPermissions (Maybe Text)
+protipCallback
+  = lens _protipCallback
+      (\ s a -> s{_protipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsOperationsTestIAMPermissions where
+        type Rs ProjectsRegionsOperationsTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes
+               ProjectsRegionsOperationsTestIAMPermissions
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsOperationsTestIAMPermissions'{..}
+          = go _protipResource _protipXgafv
+              _protipUploadProtocol
+              _protipAccessToken
+              _protipUploadType
+              _protipCallback
+              (Just AltJSON)
+              _protipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsOperationsTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Create.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates new workflow template.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.create@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Create
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesCreateResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesCreate
+    , ProjectsRegionsWorkflowTemplatesCreate
+
+    -- * Request Lenses
+    , prwtcParent
+    , prwtcXgafv
+    , prwtcUploadProtocol
+    , prwtcAccessToken
+    , prwtcUploadType
+    , prwtcPayload
+    , prwtcCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.create@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesCreate' request conforms to.
+type ProjectsRegionsWorkflowTemplatesCreateResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "workflowTemplates" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] WorkflowTemplate :>
+                         Post '[JSON] WorkflowTemplate
+
+-- | Creates new workflow template.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesCreate' smart constructor.
+data ProjectsRegionsWorkflowTemplatesCreate = ProjectsRegionsWorkflowTemplatesCreate'
+    { _prwtcParent         :: !Text
+    , _prwtcXgafv          :: !(Maybe Xgafv)
+    , _prwtcUploadProtocol :: !(Maybe Text)
+    , _prwtcAccessToken    :: !(Maybe Text)
+    , _prwtcUploadType     :: !(Maybe Text)
+    , _prwtcPayload        :: !WorkflowTemplate
+    , _prwtcCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtcParent'
+--
+-- * 'prwtcXgafv'
+--
+-- * 'prwtcUploadProtocol'
+--
+-- * 'prwtcAccessToken'
+--
+-- * 'prwtcUploadType'
+--
+-- * 'prwtcPayload'
+--
+-- * 'prwtcCallback'
+projectsRegionsWorkflowTemplatesCreate
+    :: Text -- ^ 'prwtcParent'
+    -> WorkflowTemplate -- ^ 'prwtcPayload'
+    -> ProjectsRegionsWorkflowTemplatesCreate
+projectsRegionsWorkflowTemplatesCreate pPrwtcParent_ pPrwtcPayload_ =
+    ProjectsRegionsWorkflowTemplatesCreate'
+    { _prwtcParent = pPrwtcParent_
+    , _prwtcXgafv = Nothing
+    , _prwtcUploadProtocol = Nothing
+    , _prwtcAccessToken = Nothing
+    , _prwtcUploadType = Nothing
+    , _prwtcPayload = pPrwtcPayload_
+    , _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}
+prwtcParent :: Lens' ProjectsRegionsWorkflowTemplatesCreate Text
+prwtcParent
+  = lens _prwtcParent (\ s a -> s{_prwtcParent = a})
+
+-- | V1 error format.
+prwtcXgafv :: Lens' ProjectsRegionsWorkflowTemplatesCreate (Maybe Xgafv)
+prwtcXgafv
+  = lens _prwtcXgafv (\ s a -> s{_prwtcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtcUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesCreate (Maybe Text)
+prwtcUploadProtocol
+  = lens _prwtcUploadProtocol
+      (\ s a -> s{_prwtcUploadProtocol = a})
+
+-- | OAuth access token.
+prwtcAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesCreate (Maybe Text)
+prwtcAccessToken
+  = lens _prwtcAccessToken
+      (\ s a -> s{_prwtcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtcUploadType :: Lens' ProjectsRegionsWorkflowTemplatesCreate (Maybe Text)
+prwtcUploadType
+  = lens _prwtcUploadType
+      (\ s a -> s{_prwtcUploadType = a})
+
+-- | Multipart request metadata.
+prwtcPayload :: Lens' ProjectsRegionsWorkflowTemplatesCreate WorkflowTemplate
+prwtcPayload
+  = lens _prwtcPayload (\ s a -> s{_prwtcPayload = a})
+
+-- | JSONP
+prwtcCallback :: Lens' ProjectsRegionsWorkflowTemplatesCreate (Maybe Text)
+prwtcCallback
+  = lens _prwtcCallback
+      (\ s a -> s{_prwtcCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesCreate where
+        type Rs ProjectsRegionsWorkflowTemplatesCreate =
+             WorkflowTemplate
+        type Scopes ProjectsRegionsWorkflowTemplatesCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesCreate'{..}
+          = go _prwtcParent _prwtcXgafv _prwtcUploadProtocol
+              _prwtcAccessToken
+              _prwtcUploadType
+              _prwtcCallback
+              (Just AltJSON)
+              _prwtcPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsWorkflowTemplatesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Delete.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a workflow template. It does not cancel in-progress workflows.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.delete@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Delete
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesDeleteResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesDelete
+    , ProjectsRegionsWorkflowTemplatesDelete
+
+    -- * Request Lenses
+    , prwtdXgafv
+    , prwtdUploadProtocol
+    , prwtdAccessToken
+    , prwtdUploadType
+    , prwtdName
+    , prwtdVersion
+    , prwtdCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.delete@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesDelete' request conforms to.
+type ProjectsRegionsWorkflowTemplatesDeleteResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "version" (Textual Int32) :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes a workflow template. It does not cancel in-progress workflows.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesDelete' smart constructor.
+data ProjectsRegionsWorkflowTemplatesDelete = ProjectsRegionsWorkflowTemplatesDelete'
+    { _prwtdXgafv          :: !(Maybe Xgafv)
+    , _prwtdUploadProtocol :: !(Maybe Text)
+    , _prwtdAccessToken    :: !(Maybe Text)
+    , _prwtdUploadType     :: !(Maybe Text)
+    , _prwtdName           :: !Text
+    , _prwtdVersion        :: !(Maybe (Textual Int32))
+    , _prwtdCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtdXgafv'
+--
+-- * 'prwtdUploadProtocol'
+--
+-- * 'prwtdAccessToken'
+--
+-- * 'prwtdUploadType'
+--
+-- * 'prwtdName'
+--
+-- * 'prwtdVersion'
+--
+-- * 'prwtdCallback'
+projectsRegionsWorkflowTemplatesDelete
+    :: Text -- ^ 'prwtdName'
+    -> ProjectsRegionsWorkflowTemplatesDelete
+projectsRegionsWorkflowTemplatesDelete pPrwtdName_ =
+    ProjectsRegionsWorkflowTemplatesDelete'
+    { _prwtdXgafv = Nothing
+    , _prwtdUploadProtocol = Nothing
+    , _prwtdAccessToken = Nothing
+    , _prwtdUploadType = Nothing
+    , _prwtdName = pPrwtdName_
+    , _prwtdVersion = Nothing
+    , _prwtdCallback = Nothing
+    }
+
+-- | V1 error format.
+prwtdXgafv :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Xgafv)
+prwtdXgafv
+  = lens _prwtdXgafv (\ s a -> s{_prwtdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtdUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Text)
+prwtdUploadProtocol
+  = lens _prwtdUploadProtocol
+      (\ s a -> s{_prwtdUploadProtocol = a})
+
+-- | OAuth access token.
+prwtdAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Text)
+prwtdAccessToken
+  = lens _prwtdAccessToken
+      (\ s a -> s{_prwtdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtdUploadType :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Text)
+prwtdUploadType
+  = lens _prwtdUploadType
+      (\ s a -> s{_prwtdUploadType = a})
+
+-- | Required. The \"resource name\" of the workflow template, as described
+-- in https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+prwtdName :: Lens' ProjectsRegionsWorkflowTemplatesDelete Text
+prwtdName
+  = lens _prwtdName (\ s a -> s{_prwtdName = a})
+
+-- | Optional. The version of workflow template to delete. If specified, will
+-- only delete the template if the current server version matches specified
+-- version.
+prwtdVersion :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Int32)
+prwtdVersion
+  = lens _prwtdVersion (\ s a -> s{_prwtdVersion = a})
+      . mapping _Coerce
+
+-- | JSONP
+prwtdCallback :: Lens' ProjectsRegionsWorkflowTemplatesDelete (Maybe Text)
+prwtdCallback
+  = lens _prwtdCallback
+      (\ s a -> s{_prwtdCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesDelete where
+        type Rs ProjectsRegionsWorkflowTemplatesDelete =
+             Empty
+        type Scopes ProjectsRegionsWorkflowTemplatesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesDelete'{..}
+          = go _prwtdName _prwtdXgafv _prwtdUploadProtocol
+              _prwtdAccessToken
+              _prwtdUploadType
+              _prwtdVersion
+              _prwtdCallback
+              (Just AltJSON)
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsWorkflowTemplatesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Get.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the latest workflow template.Can retrieve previously
+-- instantiated template by specifying optional version parameter.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.get@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Get
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesGetResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesGet
+    , ProjectsRegionsWorkflowTemplatesGet
+
+    -- * Request Lenses
+    , prwtgXgafv
+    , prwtgUploadProtocol
+    , prwtgAccessToken
+    , prwtgUploadType
+    , prwtgName
+    , prwtgVersion
+    , prwtgCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.get@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesGet' request conforms to.
+type ProjectsRegionsWorkflowTemplatesGetResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "version" (Textual Int32) :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] WorkflowTemplate
+
+-- | Retrieves the latest workflow template.Can retrieve previously
+-- instantiated template by specifying optional version parameter.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesGet' smart constructor.
+data ProjectsRegionsWorkflowTemplatesGet = ProjectsRegionsWorkflowTemplatesGet'
+    { _prwtgXgafv          :: !(Maybe Xgafv)
+    , _prwtgUploadProtocol :: !(Maybe Text)
+    , _prwtgAccessToken    :: !(Maybe Text)
+    , _prwtgUploadType     :: !(Maybe Text)
+    , _prwtgName           :: !Text
+    , _prwtgVersion        :: !(Maybe (Textual Int32))
+    , _prwtgCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtgXgafv'
+--
+-- * 'prwtgUploadProtocol'
+--
+-- * 'prwtgAccessToken'
+--
+-- * 'prwtgUploadType'
+--
+-- * 'prwtgName'
+--
+-- * 'prwtgVersion'
+--
+-- * 'prwtgCallback'
+projectsRegionsWorkflowTemplatesGet
+    :: Text -- ^ 'prwtgName'
+    -> ProjectsRegionsWorkflowTemplatesGet
+projectsRegionsWorkflowTemplatesGet pPrwtgName_ =
+    ProjectsRegionsWorkflowTemplatesGet'
+    { _prwtgXgafv = Nothing
+    , _prwtgUploadProtocol = Nothing
+    , _prwtgAccessToken = Nothing
+    , _prwtgUploadType = Nothing
+    , _prwtgName = pPrwtgName_
+    , _prwtgVersion = Nothing
+    , _prwtgCallback = Nothing
+    }
+
+-- | V1 error format.
+prwtgXgafv :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Xgafv)
+prwtgXgafv
+  = lens _prwtgXgafv (\ s a -> s{_prwtgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtgUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Text)
+prwtgUploadProtocol
+  = lens _prwtgUploadProtocol
+      (\ s a -> s{_prwtgUploadProtocol = a})
+
+-- | OAuth access token.
+prwtgAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Text)
+prwtgAccessToken
+  = lens _prwtgAccessToken
+      (\ s a -> s{_prwtgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtgUploadType :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Text)
+prwtgUploadType
+  = lens _prwtgUploadType
+      (\ s a -> s{_prwtgUploadType = a})
+
+-- | Required. The \"resource name\" of the workflow template, as described
+-- in https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+prwtgName :: Lens' ProjectsRegionsWorkflowTemplatesGet Text
+prwtgName
+  = lens _prwtgName (\ s a -> s{_prwtgName = a})
+
+-- | Optional. The version of workflow template to retrieve. Only previously
+-- instatiated versions can be retrieved.If unspecified, retrieves the
+-- current version.
+prwtgVersion :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Int32)
+prwtgVersion
+  = lens _prwtgVersion (\ s a -> s{_prwtgVersion = a})
+      . mapping _Coerce
+
+-- | JSONP
+prwtgCallback :: Lens' ProjectsRegionsWorkflowTemplatesGet (Maybe Text)
+prwtgCallback
+  = lens _prwtgCallback
+      (\ s a -> s{_prwtgCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesGet where
+        type Rs ProjectsRegionsWorkflowTemplatesGet =
+             WorkflowTemplate
+        type Scopes ProjectsRegionsWorkflowTemplatesGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesGet'{..}
+          = go _prwtgName _prwtgXgafv _prwtgUploadProtocol
+              _prwtgAccessToken
+              _prwtgUploadType
+              _prwtgVersion
+              _prwtgCallback
+              (Just AltJSON)
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsWorkflowTemplatesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/GetIAMPolicy.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.GetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.getIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesGetIAMPolicy
+    , ProjectsRegionsWorkflowTemplatesGetIAMPolicy
+
+    -- * Request Lenses
+    , prwtgipXgafv
+    , prwtgipUploadProtocol
+    , prwtgipAccessToken
+    , prwtgipUploadType
+    , prwtgipPayload
+    , prwtgipResource
+    , prwtgipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.getIamPolicy@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesGetIAMPolicy' request conforms to.
+type ProjectsRegionsWorkflowTemplatesGetIAMPolicyResource
+     =
+     "v1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesGetIAMPolicy' smart constructor.
+data ProjectsRegionsWorkflowTemplatesGetIAMPolicy = ProjectsRegionsWorkflowTemplatesGetIAMPolicy'
+    { _prwtgipXgafv          :: !(Maybe Xgafv)
+    , _prwtgipUploadProtocol :: !(Maybe Text)
+    , _prwtgipAccessToken    :: !(Maybe Text)
+    , _prwtgipUploadType     :: !(Maybe Text)
+    , _prwtgipPayload        :: !GetIAMPolicyRequest
+    , _prwtgipResource       :: !Text
+    , _prwtgipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtgipXgafv'
+--
+-- * 'prwtgipUploadProtocol'
+--
+-- * 'prwtgipAccessToken'
+--
+-- * 'prwtgipUploadType'
+--
+-- * 'prwtgipPayload'
+--
+-- * 'prwtgipResource'
+--
+-- * 'prwtgipCallback'
+projectsRegionsWorkflowTemplatesGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'prwtgipPayload'
+    -> Text -- ^ 'prwtgipResource'
+    -> ProjectsRegionsWorkflowTemplatesGetIAMPolicy
+projectsRegionsWorkflowTemplatesGetIAMPolicy pPrwtgipPayload_ pPrwtgipResource_ =
+    ProjectsRegionsWorkflowTemplatesGetIAMPolicy'
+    { _prwtgipXgafv = Nothing
+    , _prwtgipUploadProtocol = Nothing
+    , _prwtgipAccessToken = Nothing
+    , _prwtgipUploadType = Nothing
+    , _prwtgipPayload = pPrwtgipPayload_
+    , _prwtgipResource = pPrwtgipResource_
+    , _prwtgipCallback = Nothing
+    }
+
+-- | V1 error format.
+prwtgipXgafv :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy (Maybe Xgafv)
+prwtgipXgafv
+  = lens _prwtgipXgafv (\ s a -> s{_prwtgipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtgipUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+prwtgipUploadProtocol
+  = lens _prwtgipUploadProtocol
+      (\ s a -> s{_prwtgipUploadProtocol = a})
+
+-- | OAuth access token.
+prwtgipAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+prwtgipAccessToken
+  = lens _prwtgipAccessToken
+      (\ s a -> s{_prwtgipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtgipUploadType :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+prwtgipUploadType
+  = lens _prwtgipUploadType
+      (\ s a -> s{_prwtgipUploadType = a})
+
+-- | Multipart request metadata.
+prwtgipPayload :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy GetIAMPolicyRequest
+prwtgipPayload
+  = lens _prwtgipPayload
+      (\ s a -> s{_prwtgipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+prwtgipResource :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy Text
+prwtgipResource
+  = lens _prwtgipResource
+      (\ s a -> s{_prwtgipResource = a})
+
+-- | JSONP
+prwtgipCallback :: Lens' ProjectsRegionsWorkflowTemplatesGetIAMPolicy (Maybe Text)
+prwtgipCallback
+  = lens _prwtgipCallback
+      (\ s a -> s{_prwtgipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesGetIAMPolicy where
+        type Rs ProjectsRegionsWorkflowTemplatesGetIAMPolicy
+             = Policy
+        type Scopes
+               ProjectsRegionsWorkflowTemplatesGetIAMPolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesGetIAMPolicy'{..}
+          = go _prwtgipResource _prwtgipXgafv
+              _prwtgipUploadProtocol
+              _prwtgipAccessToken
+              _prwtgipUploadType
+              _prwtgipCallback
+              (Just AltJSON)
+              _prwtgipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsWorkflowTemplatesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Instantiate.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Instantiate
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Instantiates a template and begins execution.The returned Operation can
+-- be used to track execution of workflow by polling operations.get. The
+-- Operation will complete when entire workflow is finished.The running
+-- workflow can be aborted via operations.cancel. This will cause any
+-- inflight jobs to be cancelled and workflow-owned clusters to be
+-- deleted.The Operation.metadata will be WorkflowMetadata.On successful
+-- completion, Operation.response will be Empty.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.instantiate@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Instantiate
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesInstantiateResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesInstantiate
+    , ProjectsRegionsWorkflowTemplatesInstantiate
+
+    -- * Request Lenses
+    , prwtiXgafv
+    , prwtiUploadProtocol
+    , prwtiAccessToken
+    , prwtiUploadType
+    , prwtiPayload
+    , prwtiName
+    , prwtiCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.instantiate@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesInstantiate' request conforms to.
+type ProjectsRegionsWorkflowTemplatesInstantiateResource
+     =
+     "v1" :>
+       CaptureMode "name" "instantiate" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] InstantiateWorkflowTemplateRequest :>
+                       Post '[JSON] Operation
+
+-- | Instantiates a template and begins execution.The returned Operation can
+-- be used to track execution of workflow by polling operations.get. The
+-- Operation will complete when entire workflow is finished.The running
+-- workflow can be aborted via operations.cancel. This will cause any
+-- inflight jobs to be cancelled and workflow-owned clusters to be
+-- deleted.The Operation.metadata will be WorkflowMetadata.On successful
+-- completion, Operation.response will be Empty.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesInstantiate' smart constructor.
+data ProjectsRegionsWorkflowTemplatesInstantiate = ProjectsRegionsWorkflowTemplatesInstantiate'
+    { _prwtiXgafv          :: !(Maybe Xgafv)
+    , _prwtiUploadProtocol :: !(Maybe Text)
+    , _prwtiAccessToken    :: !(Maybe Text)
+    , _prwtiUploadType     :: !(Maybe Text)
+    , _prwtiPayload        :: !InstantiateWorkflowTemplateRequest
+    , _prwtiName           :: !Text
+    , _prwtiCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtiXgafv'
+--
+-- * 'prwtiUploadProtocol'
+--
+-- * 'prwtiAccessToken'
+--
+-- * 'prwtiUploadType'
+--
+-- * 'prwtiPayload'
+--
+-- * 'prwtiName'
+--
+-- * 'prwtiCallback'
+projectsRegionsWorkflowTemplatesInstantiate
+    :: InstantiateWorkflowTemplateRequest -- ^ 'prwtiPayload'
+    -> Text -- ^ 'prwtiName'
+    -> ProjectsRegionsWorkflowTemplatesInstantiate
+projectsRegionsWorkflowTemplatesInstantiate pPrwtiPayload_ pPrwtiName_ =
+    ProjectsRegionsWorkflowTemplatesInstantiate'
+    { _prwtiXgafv = Nothing
+    , _prwtiUploadProtocol = Nothing
+    , _prwtiAccessToken = Nothing
+    , _prwtiUploadType = Nothing
+    , _prwtiPayload = pPrwtiPayload_
+    , _prwtiName = pPrwtiName_
+    , _prwtiCallback = Nothing
+    }
+
+-- | V1 error format.
+prwtiXgafv :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate (Maybe Xgafv)
+prwtiXgafv
+  = lens _prwtiXgafv (\ s a -> s{_prwtiXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtiUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate (Maybe Text)
+prwtiUploadProtocol
+  = lens _prwtiUploadProtocol
+      (\ s a -> s{_prwtiUploadProtocol = a})
+
+-- | OAuth access token.
+prwtiAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate (Maybe Text)
+prwtiAccessToken
+  = lens _prwtiAccessToken
+      (\ s a -> s{_prwtiAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtiUploadType :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate (Maybe Text)
+prwtiUploadType
+  = lens _prwtiUploadType
+      (\ s a -> s{_prwtiUploadType = a})
+
+-- | Multipart request metadata.
+prwtiPayload :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate InstantiateWorkflowTemplateRequest
+prwtiPayload
+  = lens _prwtiPayload (\ s a -> s{_prwtiPayload = a})
+
+-- | Required. The \"resource name\" of the workflow template, as described
+-- in https:\/\/cloud.google.com\/apis\/design\/resource_names of the form
+-- projects\/{project_id}\/regions\/{region}\/workflowTemplates\/{template_id}
+prwtiName :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate Text
+prwtiName
+  = lens _prwtiName (\ s a -> s{_prwtiName = a})
+
+-- | JSONP
+prwtiCallback :: Lens' ProjectsRegionsWorkflowTemplatesInstantiate (Maybe Text)
+prwtiCallback
+  = lens _prwtiCallback
+      (\ s a -> s{_prwtiCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesInstantiate where
+        type Rs ProjectsRegionsWorkflowTemplatesInstantiate =
+             Operation
+        type Scopes
+               ProjectsRegionsWorkflowTemplatesInstantiate
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesInstantiate'{..}
+          = go _prwtiName _prwtiXgafv _prwtiUploadProtocol
+              _prwtiAccessToken
+              _prwtiUploadType
+              _prwtiCallback
+              (Just AltJSON)
+              _prwtiPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsWorkflowTemplatesInstantiateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/InstantiateInline.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.InstantiateInline
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Instantiates a template and begins execution.This method is equivalent
+-- to executing the sequence CreateWorkflowTemplate,
+-- InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned
+-- Operation can be used to track execution of workflow by polling
+-- operations.get. The Operation will complete when entire workflow is
+-- finished.The running workflow can be aborted via operations.cancel. This
+-- will cause any inflight jobs to be cancelled and workflow-owned clusters
+-- to be deleted.The Operation.metadata will be WorkflowMetadata.On
+-- successful completion, Operation.response will be Empty.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.instantiateInline@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.InstantiateInline
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesInstantiateInlineResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesInstantiateInline
+    , ProjectsRegionsWorkflowTemplatesInstantiateInline
+
+    -- * Request Lenses
+    , prwtiiParent
+    , prwtiiXgafv
+    , prwtiiRequestId
+    , prwtiiUploadProtocol
+    , prwtiiAccessToken
+    , prwtiiUploadType
+    , prwtiiPayload
+    , prwtiiCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.instantiateInline@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesInstantiateInline' request conforms to.
+type ProjectsRegionsWorkflowTemplatesInstantiateInlineResource
+     =
+     "v1" :>
+       Capture "parent" Text :>
+         "workflowTemplates:instantiateInline" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "requestId" Text :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] WorkflowTemplate :>
+                           Post '[JSON] Operation
+
+-- | Instantiates a template and begins execution.This method is equivalent
+-- to executing the sequence CreateWorkflowTemplate,
+-- InstantiateWorkflowTemplate, DeleteWorkflowTemplate.The returned
+-- Operation can be used to track execution of workflow by polling
+-- operations.get. The Operation will complete when entire workflow is
+-- finished.The running workflow can be aborted via operations.cancel. This
+-- will cause any inflight jobs to be cancelled and workflow-owned clusters
+-- to be deleted.The Operation.metadata will be WorkflowMetadata.On
+-- successful completion, Operation.response will be Empty.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesInstantiateInline' smart constructor.
+data ProjectsRegionsWorkflowTemplatesInstantiateInline = ProjectsRegionsWorkflowTemplatesInstantiateInline'
+    { _prwtiiParent         :: !Text
+    , _prwtiiXgafv          :: !(Maybe Xgafv)
+    , _prwtiiRequestId      :: !(Maybe Text)
+    , _prwtiiUploadProtocol :: !(Maybe Text)
+    , _prwtiiAccessToken    :: !(Maybe Text)
+    , _prwtiiUploadType     :: !(Maybe Text)
+    , _prwtiiPayload        :: !WorkflowTemplate
+    , _prwtiiCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtiiParent'
+--
+-- * 'prwtiiXgafv'
+--
+-- * 'prwtiiRequestId'
+--
+-- * 'prwtiiUploadProtocol'
+--
+-- * 'prwtiiAccessToken'
+--
+-- * 'prwtiiUploadType'
+--
+-- * 'prwtiiPayload'
+--
+-- * 'prwtiiCallback'
+projectsRegionsWorkflowTemplatesInstantiateInline
+    :: Text -- ^ 'prwtiiParent'
+    -> WorkflowTemplate -- ^ 'prwtiiPayload'
+    -> ProjectsRegionsWorkflowTemplatesInstantiateInline
+projectsRegionsWorkflowTemplatesInstantiateInline pPrwtiiParent_ pPrwtiiPayload_ =
+    ProjectsRegionsWorkflowTemplatesInstantiateInline'
+    { _prwtiiParent = pPrwtiiParent_
+    , _prwtiiXgafv = Nothing
+    , _prwtiiRequestId = Nothing
+    , _prwtiiUploadProtocol = Nothing
+    , _prwtiiAccessToken = Nothing
+    , _prwtiiUploadType = Nothing
+    , _prwtiiPayload = pPrwtiiPayload_
+    , _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}
+prwtiiParent :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline Text
+prwtiiParent
+  = lens _prwtiiParent (\ s a -> s{_prwtiiParent = a})
+
+-- | V1 error format.
+prwtiiXgafv :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline (Maybe Xgafv)
+prwtiiXgafv
+  = lens _prwtiiXgafv (\ s a -> s{_prwtiiXgafv = a})
+
+-- | 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.
+prwtiiRequestId :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline (Maybe Text)
+prwtiiRequestId
+  = lens _prwtiiRequestId
+      (\ s a -> s{_prwtiiRequestId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtiiUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline (Maybe Text)
+prwtiiUploadProtocol
+  = lens _prwtiiUploadProtocol
+      (\ s a -> s{_prwtiiUploadProtocol = a})
+
+-- | OAuth access token.
+prwtiiAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline (Maybe Text)
+prwtiiAccessToken
+  = lens _prwtiiAccessToken
+      (\ s a -> s{_prwtiiAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtiiUploadType :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline (Maybe Text)
+prwtiiUploadType
+  = lens _prwtiiUploadType
+      (\ s a -> s{_prwtiiUploadType = a})
+
+-- | Multipart request metadata.
+prwtiiPayload :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline WorkflowTemplate
+prwtiiPayload
+  = lens _prwtiiPayload
+      (\ s a -> s{_prwtiiPayload = a})
+
+-- | JSONP
+prwtiiCallback :: Lens' ProjectsRegionsWorkflowTemplatesInstantiateInline (Maybe Text)
+prwtiiCallback
+  = lens _prwtiiCallback
+      (\ s a -> s{_prwtiiCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesInstantiateInline
+         where
+        type Rs
+               ProjectsRegionsWorkflowTemplatesInstantiateInline
+             = Operation
+        type Scopes
+               ProjectsRegionsWorkflowTemplatesInstantiateInline
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesInstantiateInline'{..}
+          = go _prwtiiParent _prwtiiXgafv _prwtiiRequestId
+              _prwtiiUploadProtocol
+              _prwtiiAccessToken
+              _prwtiiUploadType
+              _prwtiiCallback
+              (Just AltJSON)
+              _prwtiiPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsWorkflowTemplatesInstantiateInlineResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/List.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists workflows that match the specified filter in the request.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.list@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.List
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesListResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesList
+    , ProjectsRegionsWorkflowTemplatesList
+
+    -- * Request Lenses
+    , prwtlParent
+    , prwtlXgafv
+    , prwtlUploadProtocol
+    , prwtlAccessToken
+    , prwtlUploadType
+    , prwtlPageToken
+    , prwtlPageSize
+    , prwtlCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.list@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesList' request conforms to.
+type ProjectsRegionsWorkflowTemplatesListResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "workflowTemplates" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListWorkflowTemplatesResponse
+
+-- | Lists workflows that match the specified filter in the request.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesList' smart constructor.
+data ProjectsRegionsWorkflowTemplatesList = ProjectsRegionsWorkflowTemplatesList'
+    { _prwtlParent         :: !Text
+    , _prwtlXgafv          :: !(Maybe Xgafv)
+    , _prwtlUploadProtocol :: !(Maybe Text)
+    , _prwtlAccessToken    :: !(Maybe Text)
+    , _prwtlUploadType     :: !(Maybe Text)
+    , _prwtlPageToken      :: !(Maybe Text)
+    , _prwtlPageSize       :: !(Maybe (Textual Int32))
+    , _prwtlCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtlParent'
+--
+-- * 'prwtlXgafv'
+--
+-- * 'prwtlUploadProtocol'
+--
+-- * 'prwtlAccessToken'
+--
+-- * 'prwtlUploadType'
+--
+-- * 'prwtlPageToken'
+--
+-- * 'prwtlPageSize'
+--
+-- * 'prwtlCallback'
+projectsRegionsWorkflowTemplatesList
+    :: Text -- ^ 'prwtlParent'
+    -> ProjectsRegionsWorkflowTemplatesList
+projectsRegionsWorkflowTemplatesList pPrwtlParent_ =
+    ProjectsRegionsWorkflowTemplatesList'
+    { _prwtlParent = pPrwtlParent_
+    , _prwtlXgafv = Nothing
+    , _prwtlUploadProtocol = Nothing
+    , _prwtlAccessToken = Nothing
+    , _prwtlUploadType = Nothing
+    , _prwtlPageToken = Nothing
+    , _prwtlPageSize = Nothing
+    , _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}
+prwtlParent :: Lens' ProjectsRegionsWorkflowTemplatesList Text
+prwtlParent
+  = lens _prwtlParent (\ s a -> s{_prwtlParent = a})
+
+-- | V1 error format.
+prwtlXgafv :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Xgafv)
+prwtlXgafv
+  = lens _prwtlXgafv (\ s a -> s{_prwtlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtlUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Text)
+prwtlUploadProtocol
+  = lens _prwtlUploadProtocol
+      (\ s a -> s{_prwtlUploadProtocol = a})
+
+-- | OAuth access token.
+prwtlAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Text)
+prwtlAccessToken
+  = lens _prwtlAccessToken
+      (\ s a -> s{_prwtlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtlUploadType :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Text)
+prwtlUploadType
+  = lens _prwtlUploadType
+      (\ s a -> s{_prwtlUploadType = a})
+
+-- | Optional. The page token, returned by a previous call, to request the
+-- next page of results.
+prwtlPageToken :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Text)
+prwtlPageToken
+  = lens _prwtlPageToken
+      (\ s a -> s{_prwtlPageToken = a})
+
+-- | Optional. The maximum number of results to return in each response.
+prwtlPageSize :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Int32)
+prwtlPageSize
+  = lens _prwtlPageSize
+      (\ s a -> s{_prwtlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+prwtlCallback :: Lens' ProjectsRegionsWorkflowTemplatesList (Maybe Text)
+prwtlCallback
+  = lens _prwtlCallback
+      (\ s a -> s{_prwtlCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesList where
+        type Rs ProjectsRegionsWorkflowTemplatesList =
+             ListWorkflowTemplatesResponse
+        type Scopes ProjectsRegionsWorkflowTemplatesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesList'{..}
+          = go _prwtlParent _prwtlXgafv _prwtlUploadProtocol
+              _prwtlAccessToken
+              _prwtlUploadType
+              _prwtlPageToken
+              _prwtlPageSize
+              _prwtlCallback
+              (Just AltJSON)
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsWorkflowTemplatesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/SetIAMPolicy.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.SetIAMPolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.setIamPolicy@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesSetIAMPolicy
+    , ProjectsRegionsWorkflowTemplatesSetIAMPolicy
+
+    -- * Request Lenses
+    , prwtsipXgafv
+    , prwtsipUploadProtocol
+    , prwtsipAccessToken
+    , prwtsipUploadType
+    , prwtsipPayload
+    , prwtsipResource
+    , prwtsipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.setIamPolicy@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesSetIAMPolicy' request conforms to.
+type ProjectsRegionsWorkflowTemplatesSetIAMPolicyResource
+     =
+     "v1" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesSetIAMPolicy' smart constructor.
+data ProjectsRegionsWorkflowTemplatesSetIAMPolicy = ProjectsRegionsWorkflowTemplatesSetIAMPolicy'
+    { _prwtsipXgafv          :: !(Maybe Xgafv)
+    , _prwtsipUploadProtocol :: !(Maybe Text)
+    , _prwtsipAccessToken    :: !(Maybe Text)
+    , _prwtsipUploadType     :: !(Maybe Text)
+    , _prwtsipPayload        :: !SetIAMPolicyRequest
+    , _prwtsipResource       :: !Text
+    , _prwtsipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtsipXgafv'
+--
+-- * 'prwtsipUploadProtocol'
+--
+-- * 'prwtsipAccessToken'
+--
+-- * 'prwtsipUploadType'
+--
+-- * 'prwtsipPayload'
+--
+-- * 'prwtsipResource'
+--
+-- * 'prwtsipCallback'
+projectsRegionsWorkflowTemplatesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'prwtsipPayload'
+    -> Text -- ^ 'prwtsipResource'
+    -> ProjectsRegionsWorkflowTemplatesSetIAMPolicy
+projectsRegionsWorkflowTemplatesSetIAMPolicy pPrwtsipPayload_ pPrwtsipResource_ =
+    ProjectsRegionsWorkflowTemplatesSetIAMPolicy'
+    { _prwtsipXgafv = Nothing
+    , _prwtsipUploadProtocol = Nothing
+    , _prwtsipAccessToken = Nothing
+    , _prwtsipUploadType = Nothing
+    , _prwtsipPayload = pPrwtsipPayload_
+    , _prwtsipResource = pPrwtsipResource_
+    , _prwtsipCallback = Nothing
+    }
+
+-- | V1 error format.
+prwtsipXgafv :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy (Maybe Xgafv)
+prwtsipXgafv
+  = lens _prwtsipXgafv (\ s a -> s{_prwtsipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtsipUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+prwtsipUploadProtocol
+  = lens _prwtsipUploadProtocol
+      (\ s a -> s{_prwtsipUploadProtocol = a})
+
+-- | OAuth access token.
+prwtsipAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+prwtsipAccessToken
+  = lens _prwtsipAccessToken
+      (\ s a -> s{_prwtsipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtsipUploadType :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+prwtsipUploadType
+  = lens _prwtsipUploadType
+      (\ s a -> s{_prwtsipUploadType = a})
+
+-- | Multipart request metadata.
+prwtsipPayload :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy SetIAMPolicyRequest
+prwtsipPayload
+  = lens _prwtsipPayload
+      (\ s a -> s{_prwtsipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+prwtsipResource :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy Text
+prwtsipResource
+  = lens _prwtsipResource
+      (\ s a -> s{_prwtsipResource = a})
+
+-- | JSONP
+prwtsipCallback :: Lens' ProjectsRegionsWorkflowTemplatesSetIAMPolicy (Maybe Text)
+prwtsipCallback
+  = lens _prwtsipCallback
+      (\ s a -> s{_prwtsipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesSetIAMPolicy where
+        type Rs ProjectsRegionsWorkflowTemplatesSetIAMPolicy
+             = Policy
+        type Scopes
+               ProjectsRegionsWorkflowTemplatesSetIAMPolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesSetIAMPolicy'{..}
+          = go _prwtsipResource _prwtsipXgafv
+              _prwtsipUploadProtocol
+              _prwtsipAccessToken
+              _prwtsipUploadType
+              _prwtsipCallback
+              (Just AltJSON)
+              _prwtsipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsWorkflowTemplatesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/TestIAMPermissions.hs
@@ -0,0 +1,185 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.TestIAMPermissions
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.testIamPermissions@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesTestIAMPermissions
+    , ProjectsRegionsWorkflowTemplatesTestIAMPermissions
+
+    -- * Request Lenses
+    , prwttipXgafv
+    , prwttipUploadProtocol
+    , prwttipAccessToken
+    , prwttipUploadType
+    , prwttipPayload
+    , prwttipResource
+    , prwttipCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.testIamPermissions@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesTestIAMPermissions' request conforms to.
+type ProjectsRegionsWorkflowTemplatesTestIAMPermissionsResource
+     =
+     "v1" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error.Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesTestIAMPermissions' smart constructor.
+data ProjectsRegionsWorkflowTemplatesTestIAMPermissions = ProjectsRegionsWorkflowTemplatesTestIAMPermissions'
+    { _prwttipXgafv          :: !(Maybe Xgafv)
+    , _prwttipUploadProtocol :: !(Maybe Text)
+    , _prwttipAccessToken    :: !(Maybe Text)
+    , _prwttipUploadType     :: !(Maybe Text)
+    , _prwttipPayload        :: !TestIAMPermissionsRequest
+    , _prwttipResource       :: !Text
+    , _prwttipCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwttipXgafv'
+--
+-- * 'prwttipUploadProtocol'
+--
+-- * 'prwttipAccessToken'
+--
+-- * 'prwttipUploadType'
+--
+-- * 'prwttipPayload'
+--
+-- * 'prwttipResource'
+--
+-- * 'prwttipCallback'
+projectsRegionsWorkflowTemplatesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'prwttipPayload'
+    -> Text -- ^ 'prwttipResource'
+    -> ProjectsRegionsWorkflowTemplatesTestIAMPermissions
+projectsRegionsWorkflowTemplatesTestIAMPermissions pPrwttipPayload_ pPrwttipResource_ =
+    ProjectsRegionsWorkflowTemplatesTestIAMPermissions'
+    { _prwttipXgafv = Nothing
+    , _prwttipUploadProtocol = Nothing
+    , _prwttipAccessToken = Nothing
+    , _prwttipUploadType = Nothing
+    , _prwttipPayload = pPrwttipPayload_
+    , _prwttipResource = pPrwttipResource_
+    , _prwttipCallback = Nothing
+    }
+
+-- | V1 error format.
+prwttipXgafv :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions (Maybe Xgafv)
+prwttipXgafv
+  = lens _prwttipXgafv (\ s a -> s{_prwttipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwttipUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+prwttipUploadProtocol
+  = lens _prwttipUploadProtocol
+      (\ s a -> s{_prwttipUploadProtocol = a})
+
+-- | OAuth access token.
+prwttipAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+prwttipAccessToken
+  = lens _prwttipAccessToken
+      (\ s a -> s{_prwttipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwttipUploadType :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+prwttipUploadType
+  = lens _prwttipUploadType
+      (\ s a -> s{_prwttipUploadType = a})
+
+-- | Multipart request metadata.
+prwttipPayload :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions TestIAMPermissionsRequest
+prwttipPayload
+  = lens _prwttipPayload
+      (\ s a -> s{_prwttipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+prwttipResource :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions Text
+prwttipResource
+  = lens _prwttipResource
+      (\ s a -> s{_prwttipResource = a})
+
+-- | JSONP
+prwttipCallback :: Lens' ProjectsRegionsWorkflowTemplatesTestIAMPermissions (Maybe Text)
+prwttipCallback
+  = lens _prwttipCallback
+      (\ s a -> s{_prwttipCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesTestIAMPermissions
+         where
+        type Rs
+               ProjectsRegionsWorkflowTemplatesTestIAMPermissions
+             = TestIAMPermissionsResponse
+        type Scopes
+               ProjectsRegionsWorkflowTemplatesTestIAMPermissions
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesTestIAMPermissions'{..}
+          = go _prwttipResource _prwttipXgafv
+              _prwttipUploadProtocol
+              _prwttipAccessToken
+              _prwttipUploadType
+              _prwttipCallback
+              (Just AltJSON)
+              _prwttipPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsRegionsWorkflowTemplatesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataproc/Projects/Regions/WorkflowTemplates/Update.hs
@@ -0,0 +1,169 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates (replaces) workflow template. The updated template must contain
+-- version that matches the current server version.
+--
+-- /See:/ <https://cloud.google.com/dataproc/ Cloud Dataproc API Reference> for @dataproc.projects.regions.workflowTemplates.update@.
+module Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Update
+    (
+    -- * REST Resource
+      ProjectsRegionsWorkflowTemplatesUpdateResource
+
+    -- * Creating a Request
+    , projectsRegionsWorkflowTemplatesUpdate
+    , ProjectsRegionsWorkflowTemplatesUpdate
+
+    -- * Request Lenses
+    , prwtuXgafv
+    , prwtuUploadProtocol
+    , prwtuAccessToken
+    , prwtuUploadType
+    , prwtuPayload
+    , prwtuName
+    , prwtuCallback
+    ) where
+
+import           Network.Google.Dataproc.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataproc.projects.regions.workflowTemplates.update@ method which the
+-- 'ProjectsRegionsWorkflowTemplatesUpdate' request conforms to.
+type ProjectsRegionsWorkflowTemplatesUpdateResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] WorkflowTemplate :>
+                       Put '[JSON] WorkflowTemplate
+
+-- | Updates (replaces) workflow template. The updated template must contain
+-- version that matches the current server version.
+--
+-- /See:/ 'projectsRegionsWorkflowTemplatesUpdate' smart constructor.
+data ProjectsRegionsWorkflowTemplatesUpdate = ProjectsRegionsWorkflowTemplatesUpdate'
+    { _prwtuXgafv          :: !(Maybe Xgafv)
+    , _prwtuUploadProtocol :: !(Maybe Text)
+    , _prwtuAccessToken    :: !(Maybe Text)
+    , _prwtuUploadType     :: !(Maybe Text)
+    , _prwtuPayload        :: !WorkflowTemplate
+    , _prwtuName           :: !Text
+    , _prwtuCallback       :: !(Maybe Text)
+    } 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:
+--
+-- * 'prwtuXgafv'
+--
+-- * 'prwtuUploadProtocol'
+--
+-- * 'prwtuAccessToken'
+--
+-- * 'prwtuUploadType'
+--
+-- * 'prwtuPayload'
+--
+-- * 'prwtuName'
+--
+-- * 'prwtuCallback'
+projectsRegionsWorkflowTemplatesUpdate
+    :: WorkflowTemplate -- ^ 'prwtuPayload'
+    -> Text -- ^ 'prwtuName'
+    -> ProjectsRegionsWorkflowTemplatesUpdate
+projectsRegionsWorkflowTemplatesUpdate pPrwtuPayload_ pPrwtuName_ =
+    ProjectsRegionsWorkflowTemplatesUpdate'
+    { _prwtuXgafv = Nothing
+    , _prwtuUploadProtocol = Nothing
+    , _prwtuAccessToken = Nothing
+    , _prwtuUploadType = Nothing
+    , _prwtuPayload = pPrwtuPayload_
+    , _prwtuName = pPrwtuName_
+    , _prwtuCallback = Nothing
+    }
+
+-- | V1 error format.
+prwtuXgafv :: Lens' ProjectsRegionsWorkflowTemplatesUpdate (Maybe Xgafv)
+prwtuXgafv
+  = lens _prwtuXgafv (\ s a -> s{_prwtuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+prwtuUploadProtocol :: Lens' ProjectsRegionsWorkflowTemplatesUpdate (Maybe Text)
+prwtuUploadProtocol
+  = lens _prwtuUploadProtocol
+      (\ s a -> s{_prwtuUploadProtocol = a})
+
+-- | OAuth access token.
+prwtuAccessToken :: Lens' ProjectsRegionsWorkflowTemplatesUpdate (Maybe Text)
+prwtuAccessToken
+  = lens _prwtuAccessToken
+      (\ s a -> s{_prwtuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+prwtuUploadType :: Lens' ProjectsRegionsWorkflowTemplatesUpdate (Maybe Text)
+prwtuUploadType
+  = lens _prwtuUploadType
+      (\ s a -> s{_prwtuUploadType = a})
+
+-- | Multipart request metadata.
+prwtuPayload :: Lens' ProjectsRegionsWorkflowTemplatesUpdate WorkflowTemplate
+prwtuPayload
+  = lens _prwtuPayload (\ s a -> s{_prwtuPayload = a})
+
+-- | 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}
+prwtuName :: Lens' ProjectsRegionsWorkflowTemplatesUpdate Text
+prwtuName
+  = lens _prwtuName (\ s a -> s{_prwtuName = a})
+
+-- | JSONP
+prwtuCallback :: Lens' ProjectsRegionsWorkflowTemplatesUpdate (Maybe Text)
+prwtuCallback
+  = lens _prwtuCallback
+      (\ s a -> s{_prwtuCallback = a})
+
+instance GoogleRequest
+         ProjectsRegionsWorkflowTemplatesUpdate where
+        type Rs ProjectsRegionsWorkflowTemplatesUpdate =
+             WorkflowTemplate
+        type Scopes ProjectsRegionsWorkflowTemplatesUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsRegionsWorkflowTemplatesUpdate'{..}
+          = go _prwtuName _prwtuXgafv _prwtuUploadProtocol
+              _prwtuAccessToken
+              _prwtuUploadType
+              _prwtuCallback
+              (Just AltJSON)
+              _prwtuPayload
+              dataprocService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsRegionsWorkflowTemplatesUpdateResource)
+                      mempty
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.3.0
+version:               0.4.0
 synopsis:              Google Cloud Dataproc SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -14,8 +14,7 @@
 extra-source-files:    README.md src/.gitkeep
 
 description:
-    An API for managing Hadoop-based clusters and jobs on Google Cloud
-    Platform.
+    Manages Hadoop-based clusters and jobs on Google Cloud Platform.
     .
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
@@ -36,26 +35,56 @@
     exposed-modules:
           Network.Google.Dataproc
         , Network.Google.Dataproc.Types
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Create
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Delete
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Get
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.GetIAMPolicy
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Instantiate
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.InstantiateInline
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.List
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.SetIAMPolicy
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.TestIAMPermissions
+        , Network.Google.Resource.Dataproc.Projects.Locations.WorkflowTemplates.Update
         , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Create
         , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Delete
         , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Diagnose
         , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Get
+        , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.GetIAMPolicy
         , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.List
         , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.Patch
+        , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.SetIAMPolicy
+        , Network.Google.Resource.Dataproc.Projects.Regions.Clusters.TestIAMPermissions
         , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Cancel
         , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Delete
         , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Get
+        , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.GetIAMPolicy
         , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.List
+        , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Patch
+        , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.SetIAMPolicy
         , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.Submit
+        , Network.Google.Resource.Dataproc.Projects.Regions.Jobs.TestIAMPermissions
         , Network.Google.Resource.Dataproc.Projects.Regions.Operations.Cancel
         , Network.Google.Resource.Dataproc.Projects.Regions.Operations.Delete
         , Network.Google.Resource.Dataproc.Projects.Regions.Operations.Get
+        , Network.Google.Resource.Dataproc.Projects.Regions.Operations.GetIAMPolicy
         , Network.Google.Resource.Dataproc.Projects.Regions.Operations.List
+        , Network.Google.Resource.Dataproc.Projects.Regions.Operations.SetIAMPolicy
+        , Network.Google.Resource.Dataproc.Projects.Regions.Operations.TestIAMPermissions
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Create
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Delete
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Get
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.GetIAMPolicy
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Instantiate
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.InstantiateInline
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.List
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.SetIAMPolicy
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.TestIAMPermissions
+        , Network.Google.Resource.Dataproc.Projects.Regions.WorkflowTemplates.Update
 
     other-modules:
           Network.Google.Dataproc.Types.Product
         , Network.Google.Dataproc.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
