diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.1.1`
+`0.2.0`
 
 
 ## Description
diff --git a/gen/Network/Google/Dataflow.hs b/gen/Network/Google/Dataflow.hs
--- a/gen/Network/Google/Dataflow.hs
+++ b/gen/Network/Google/Dataflow.hs
@@ -13,8 +13,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Develops and executes data processing patterns like ETL, batch
--- computation, and continuous computation.
+-- Manages Google Cloud Dataflow projects on Google Cloud Platform.
 --
 -- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference>
 module Network.Google.Dataflow
@@ -61,6 +60,30 @@
     -- ** dataflow.projects.jobs.workItems.reportStatus
     , module Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus
 
+    -- ** dataflow.projects.locations.jobs.create
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Create
+
+    -- ** dataflow.projects.locations.jobs.get
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Get
+
+    -- ** dataflow.projects.locations.jobs.getMetrics
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.GetMetrics
+
+    -- ** dataflow.projects.locations.jobs.list
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.List
+
+    -- ** dataflow.projects.locations.jobs.messages.list
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Messages.List
+
+    -- ** dataflow.projects.locations.jobs.update
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Update
+
+    -- ** dataflow.projects.locations.jobs.workItems.lease
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.Lease
+
+    -- ** dataflow.projects.locations.jobs.workItems.reportStatus
+    , module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.ReportStatus
+
     -- ** dataflow.projects.templates.create
     , module Network.Google.Resource.Dataflow.Projects.Templates.Create
 
@@ -92,9 +115,16 @@
     , ssrShards
     , ssrOutcome
 
+    -- ** ResourceUtilizationReportMetricsItem
+    , ResourceUtilizationReportMetricsItem
+    , resourceUtilizationReportMetricsItem
+    , rurmiAddtional
+
     -- ** CreateJobFromTemplateRequest
     , CreateJobFromTemplateRequest
     , createJobFromTemplateRequest
+    , cjftrEnvironment
+    , cjftrJobName
     , cjftrGcsPath
     , cjftrParameters
 
@@ -179,6 +209,7 @@
     , ReportWorkItemStatusRequest
     , reportWorkItemStatusRequest
     , rwisrCurrentWorkerTime
+    , rwisrLocation
     , rwisrWorkItemStatuses
     , rwisrWorkerId
 
@@ -301,6 +332,7 @@
     , cuInternal
     , cuStringList
     , cuShortId
+    , cuDistribution
     , cuCumulative
     , cuStructuredNameAndMetadata
     , cuFloatingPointMean
@@ -435,6 +467,7 @@
     , leaseWorkItemRequest
     , lwirWorkItemTypes
     , lwirCurrentWorkerTime
+    , lwirLocation
     , lwirWorkerCapabilities
     , lwirRequestedLeaseDuration
     , lwirWorkerId
@@ -519,10 +552,21 @@
     , ddaVMInstance
     , ddaDataDisks
 
+    -- ** ResourceUtilizationReport
+    , ResourceUtilizationReport
+    , resourceUtilizationReport
+    , rurMetrics
+
+    -- ** FailedLocation
+    , FailedLocation
+    , failedLocation
+    , flName
+
     -- ** WorkerMessageResponse
     , WorkerMessageResponse
     , workerMessageResponse
     , wmrWorkerHealthReportResponse
+    , wmrWorkerMetricsResponse
 
     -- ** CreateJobFromTemplateRequestParameters
     , CreateJobFromTemplateRequestParameters
@@ -605,6 +649,15 @@
     , workerPoolPoolArgs
     , wppaAddtional
 
+    -- ** RuntimeEnvironment
+    , RuntimeEnvironment
+    , runtimeEnvironment
+    , reZone
+    , reBypassTempDirValidation
+    , reServiceAccountEmail
+    , reMaxWorkers
+    , reTempLocation
+
     -- ** CounterMetadata
     , CounterMetadata
     , counterMetadata
@@ -676,6 +729,7 @@
     , Job
     , job
     , jRequestedState
+    , jLocation
     , jEnvironment
     , jClientRequestId
     , jCurrentState
@@ -773,6 +827,10 @@
     , sfPrimary
     , sfResidualSource
 
+    -- ** ResourceUtilizationReportResponse
+    , ResourceUtilizationReportResponse
+    , resourceUtilizationReportResponse
+
     -- ** StreamingComputationRanges
     , StreamingComputationRanges
     , streamingComputationRanges
@@ -783,6 +841,7 @@
     , ListJobsResponse
     , listJobsResponse
     , ljrNextPageToken
+    , ljrFailedLocation
     , ljrJobs
 
     -- ** Source
@@ -807,6 +866,7 @@
     , wmWorkerHealthReport
     , wmTime
     , wmWorkerMessageCode
+    , wmWorkerMetrics
     , wmLabels
 
     -- ** KeyRangeLocation
@@ -847,6 +907,15 @@
     , customSourceLocation
     , cslStateful
 
+    -- ** DistributionUpdate
+    , DistributionUpdate
+    , distributionUpdate
+    , duMax
+    , duCount
+    , duMin
+    , duSumOfSquares
+    , duSum
+
     -- ** SourceBaseSpecsItem
     , SourceBaseSpecsItem
     , sourceBaseSpecsItem
@@ -943,6 +1012,7 @@
     , plTimestampLabel
     , plIdLabel
     , plTopic
+    , plWithAttributes
     , plSubscription
 
     -- ** FloatingPointList
@@ -1005,6 +1075,14 @@
 import           Network.Google.Resource.Dataflow.Projects.Jobs.Update
 import           Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease
 import           Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Create
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Get
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.GetMetrics
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.List
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Messages.List
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Update
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.Lease
+import           Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.ReportStatus
 import           Network.Google.Resource.Dataflow.Projects.Templates.Create
 import           Network.Google.Resource.Dataflow.Projects.WorkerMessages
 
@@ -1025,4 +1103,13 @@
        :<|> ProjectsJobsCreateResource
        :<|> ProjectsJobsUpdateResource
        :<|> ProjectsJobsGetMetricsResource
+       :<|> ProjectsLocationsJobsWorkItemsLeaseResource
+       :<|>
+       ProjectsLocationsJobsWorkItemsReportStatusResource
+       :<|> ProjectsLocationsJobsMessagesListResource
+       :<|> ProjectsLocationsJobsListResource
+       :<|> ProjectsLocationsJobsGetResource
+       :<|> ProjectsLocationsJobsCreateResource
+       :<|> ProjectsLocationsJobsUpdateResource
+       :<|> ProjectsLocationsJobsGetMetricsResource
        :<|> ProjectsWorkerMessagesResource
diff --git a/gen/Network/Google/Dataflow/Types.hs b/gen/Network/Google/Dataflow/Types.hs
--- a/gen/Network/Google/Dataflow/Types.hs
+++ b/gen/Network/Google/Dataflow/Types.hs
@@ -46,9 +46,16 @@
     , ssrShards
     , ssrOutcome
 
+    -- * ResourceUtilizationReportMetricsItem
+    , ResourceUtilizationReportMetricsItem
+    , resourceUtilizationReportMetricsItem
+    , rurmiAddtional
+
     -- * CreateJobFromTemplateRequest
     , CreateJobFromTemplateRequest
     , createJobFromTemplateRequest
+    , cjftrEnvironment
+    , cjftrJobName
     , cjftrGcsPath
     , cjftrParameters
 
@@ -133,6 +140,7 @@
     , ReportWorkItemStatusRequest
     , reportWorkItemStatusRequest
     , rwisrCurrentWorkerTime
+    , rwisrLocation
     , rwisrWorkItemStatuses
     , rwisrWorkerId
 
@@ -255,6 +263,7 @@
     , cuInternal
     , cuStringList
     , cuShortId
+    , cuDistribution
     , cuCumulative
     , cuStructuredNameAndMetadata
     , cuFloatingPointMean
@@ -389,6 +398,7 @@
     , leaseWorkItemRequest
     , lwirWorkItemTypes
     , lwirCurrentWorkerTime
+    , lwirLocation
     , lwirWorkerCapabilities
     , lwirRequestedLeaseDuration
     , lwirWorkerId
@@ -473,10 +483,21 @@
     , ddaVMInstance
     , ddaDataDisks
 
+    -- * ResourceUtilizationReport
+    , ResourceUtilizationReport
+    , resourceUtilizationReport
+    , rurMetrics
+
+    -- * FailedLocation
+    , FailedLocation
+    , failedLocation
+    , flName
+
     -- * WorkerMessageResponse
     , WorkerMessageResponse
     , workerMessageResponse
     , wmrWorkerHealthReportResponse
+    , wmrWorkerMetricsResponse
 
     -- * CreateJobFromTemplateRequestParameters
     , CreateJobFromTemplateRequestParameters
@@ -559,6 +580,15 @@
     , workerPoolPoolArgs
     , wppaAddtional
 
+    -- * RuntimeEnvironment
+    , RuntimeEnvironment
+    , runtimeEnvironment
+    , reZone
+    , reBypassTempDirValidation
+    , reServiceAccountEmail
+    , reMaxWorkers
+    , reTempLocation
+
     -- * CounterMetadata
     , CounterMetadata
     , counterMetadata
@@ -630,6 +660,7 @@
     , Job
     , job
     , jRequestedState
+    , jLocation
     , jEnvironment
     , jClientRequestId
     , jCurrentState
@@ -727,6 +758,10 @@
     , sfPrimary
     , sfResidualSource
 
+    -- * ResourceUtilizationReportResponse
+    , ResourceUtilizationReportResponse
+    , resourceUtilizationReportResponse
+
     -- * StreamingComputationRanges
     , StreamingComputationRanges
     , streamingComputationRanges
@@ -737,6 +772,7 @@
     , ListJobsResponse
     , listJobsResponse
     , ljrNextPageToken
+    , ljrFailedLocation
     , ljrJobs
 
     -- * Source
@@ -761,6 +797,7 @@
     , wmWorkerHealthReport
     , wmTime
     , wmWorkerMessageCode
+    , wmWorkerMetrics
     , wmLabels
 
     -- * KeyRangeLocation
@@ -801,6 +838,15 @@
     , customSourceLocation
     , cslStateful
 
+    -- * DistributionUpdate
+    , DistributionUpdate
+    , distributionUpdate
+    , duMax
+    , duCount
+    , duMin
+    , duSumOfSquares
+    , duSum
+
     -- * SourceBaseSpecsItem
     , SourceBaseSpecsItem
     , sourceBaseSpecsItem
@@ -897,6 +943,7 @@
     , plTimestampLabel
     , plIdLabel
     , plTopic
+    , plWithAttributes
     , plSubscription
 
     -- * FloatingPointList
diff --git a/gen/Network/Google/Dataflow/Types/Product.hs b/gen/Network/Google/Dataflow/Types/Product.hs
--- a/gen/Network/Google/Dataflow/Types/Product.hs
+++ b/gen/Network/Google/Dataflow/Types/Product.hs
@@ -239,18 +239,62 @@
                   ("shards" .=) <$> _ssrShards,
                   ("outcome" .=) <$> _ssrOutcome])
 
--- | Request to create a Dataflow job.
 --
+-- /See:/ 'resourceUtilizationReportMetricsItem' smart constructor.
+newtype ResourceUtilizationReportMetricsItem = ResourceUtilizationReportMetricsItem'
+    { _rurmiAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceUtilizationReportMetricsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rurmiAddtional'
+resourceUtilizationReportMetricsItem
+    :: HashMap Text JSONValue -- ^ 'rurmiAddtional'
+    -> ResourceUtilizationReportMetricsItem
+resourceUtilizationReportMetricsItem pRurmiAddtional_ =
+    ResourceUtilizationReportMetricsItem'
+    { _rurmiAddtional = _Coerce # pRurmiAddtional_
+    }
+
+-- | Properties of the object.
+rurmiAddtional :: Lens' ResourceUtilizationReportMetricsItem (HashMap Text JSONValue)
+rurmiAddtional
+  = lens _rurmiAddtional
+      (\ s a -> s{_rurmiAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         ResourceUtilizationReportMetricsItem where
+        parseJSON
+          = withObject "ResourceUtilizationReportMetricsItem"
+              (\ o ->
+                 ResourceUtilizationReportMetricsItem' <$>
+                   (parseJSONObject o))
+
+instance ToJSON ResourceUtilizationReportMetricsItem
+         where
+        toJSON = toJSON . _rurmiAddtional
+
+-- | A request to create a Cloud Dataflow job from a template.
+--
 -- /See:/ 'createJobFromTemplateRequest' smart constructor.
 data CreateJobFromTemplateRequest = CreateJobFromTemplateRequest'
-    { _cjftrGcsPath    :: !(Maybe Text)
-    , _cjftrParameters :: !(Maybe CreateJobFromTemplateRequestParameters)
+    { _cjftrEnvironment :: !(Maybe RuntimeEnvironment)
+    , _cjftrJobName     :: !(Maybe Text)
+    , _cjftrGcsPath     :: !(Maybe Text)
+    , _cjftrParameters  :: !(Maybe CreateJobFromTemplateRequestParameters)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'CreateJobFromTemplateRequest' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'cjftrEnvironment'
+--
+-- * 'cjftrJobName'
+--
 -- * 'cjftrGcsPath'
 --
 -- * 'cjftrParameters'
@@ -258,16 +302,30 @@
     :: CreateJobFromTemplateRequest
 createJobFromTemplateRequest =
     CreateJobFromTemplateRequest'
-    { _cjftrGcsPath = Nothing
+    { _cjftrEnvironment = Nothing
+    , _cjftrJobName = Nothing
+    , _cjftrGcsPath = Nothing
     , _cjftrParameters = Nothing
     }
 
--- | A path to the serialized JSON representation of the job.
+-- | The runtime environment for the job.
+cjftrEnvironment :: Lens' CreateJobFromTemplateRequest (Maybe RuntimeEnvironment)
+cjftrEnvironment
+  = lens _cjftrEnvironment
+      (\ s a -> s{_cjftrEnvironment = a})
+
+-- | Required. The job name to use for the created job.
+cjftrJobName :: Lens' CreateJobFromTemplateRequest (Maybe Text)
+cjftrJobName
+  = lens _cjftrJobName (\ s a -> s{_cjftrJobName = a})
+
+-- | Required. A Cloud Storage path to the template from which to create the
+-- job. Must be a valid Cloud Storage URL, beginning with \`gs:\/\/\`.
 cjftrGcsPath :: Lens' CreateJobFromTemplateRequest (Maybe Text)
 cjftrGcsPath
   = lens _cjftrGcsPath (\ s a -> s{_cjftrGcsPath = a})
 
--- | Dynamic parameterization of the job\'s runtime environment.
+-- | The runtime parameters to pass to the job.
 cjftrParameters :: Lens' CreateJobFromTemplateRequest (Maybe CreateJobFromTemplateRequestParameters)
 cjftrParameters
   = lens _cjftrParameters
@@ -278,13 +336,17 @@
           = withObject "CreateJobFromTemplateRequest"
               (\ o ->
                  CreateJobFromTemplateRequest' <$>
-                   (o .:? "gcsPath") <*> (o .:? "parameters"))
+                   (o .:? "environment") <*> (o .:? "jobName") <*>
+                     (o .:? "gcsPath")
+                     <*> (o .:? "parameters"))
 
 instance ToJSON CreateJobFromTemplateRequest where
         toJSON CreateJobFromTemplateRequest'{..}
           = object
               (catMaybes
-                 [("gcsPath" .=) <$> _cjftrGcsPath,
+                 [("environment" .=) <$> _cjftrEnvironment,
+                  ("jobName" .=) <$> _cjftrJobName,
+                  ("gcsPath" .=) <$> _cjftrGcsPath,
                   ("parameters" .=) <$> _cjftrParameters])
 
 -- | The \`Status\` type defines a logical error model that is suitable for
@@ -1031,6 +1093,7 @@
 -- /See:/ 'reportWorkItemStatusRequest' smart constructor.
 data ReportWorkItemStatusRequest = ReportWorkItemStatusRequest'
     { _rwisrCurrentWorkerTime :: !(Maybe Text)
+    , _rwisrLocation          :: !(Maybe Text)
     , _rwisrWorkItemStatuses  :: !(Maybe [WorkItemStatus])
     , _rwisrWorkerId          :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -1041,6 +1104,8 @@
 --
 -- * 'rwisrCurrentWorkerTime'
 --
+-- * 'rwisrLocation'
+--
 -- * 'rwisrWorkItemStatuses'
 --
 -- * 'rwisrWorkerId'
@@ -1049,6 +1114,7 @@
 reportWorkItemStatusRequest =
     ReportWorkItemStatusRequest'
     { _rwisrCurrentWorkerTime = Nothing
+    , _rwisrLocation = Nothing
     , _rwisrWorkItemStatuses = Nothing
     , _rwisrWorkerId = Nothing
     }
@@ -1059,6 +1125,12 @@
   = lens _rwisrCurrentWorkerTime
       (\ s a -> s{_rwisrCurrentWorkerTime = a})
 
+-- | The location which contains the WorkItem\'s job.
+rwisrLocation :: Lens' ReportWorkItemStatusRequest (Maybe Text)
+rwisrLocation
+  = lens _rwisrLocation
+      (\ s a -> s{_rwisrLocation = a})
+
 -- | The order is unimportant, except that the order of the
 -- WorkItemServiceState messages in the ReportWorkItemStatusResponse
 -- corresponds to the order of WorkItemStatus messages here.
@@ -1083,8 +1155,8 @@
           = withObject "ReportWorkItemStatusRequest"
               (\ o ->
                  ReportWorkItemStatusRequest' <$>
-                   (o .:? "currentWorkerTime") <*>
-                     (o .:? "workItemStatuses" .!= mempty)
+                   (o .:? "currentWorkerTime") <*> (o .:? "location")
+                     <*> (o .:? "workItemStatuses" .!= mempty)
                      <*> (o .:? "workerId"))
 
 instance ToJSON ReportWorkItemStatusRequest where
@@ -1093,6 +1165,7 @@
               (catMaybes
                  [("currentWorkerTime" .=) <$>
                     _rwisrCurrentWorkerTime,
+                  ("location" .=) <$> _rwisrLocation,
                   ("workItemStatuses" .=) <$> _rwisrWorkItemStatuses,
                   ("workerId" .=) <$> _rwisrWorkerId])
 
@@ -1616,12 +1689,12 @@
 -- resource name typically ending in \"pd-standard\". If SSD persistent
 -- disks are available, the resource name typically ends with \"pd-ssd\".
 -- The actual valid values are defined the Google Compute Engine API, not
--- by the Dataflow API; consult the Google Compute Engine documentation for
--- more information about determining the set of available disk types for a
--- particular project and zone. Google Compute Engine Disk types are local
--- to a particular project in a particular zone, and so the resource name
--- will typically look something like this:
--- compute.googleapis.com\/projects\/ \/zones\/\/diskTypes\/pd-standard
+-- by the Cloud Dataflow API; consult the Google Compute Engine
+-- documentation for more information about determining the set of
+-- available disk types for a particular project and zone. Google Compute
+-- Engine Disk types are local to a particular project in a particular
+-- zone, and so the resource name will typically look something like this:
+-- compute.googleapis.com\/projects\/project-id\/zones\/zone\/diskTypes\/pd-standard
 dDiskType :: Lens' Disk (Maybe Text)
 dDiskType
   = lens _dDiskType (\ s a -> s{_dDiskType = a})
@@ -1890,8 +1963,8 @@
       . _Default
       . _Coerce
 
--- | Worker pools. At least one \"harness\" worker pool must be specified in
--- order for the job to have workers.
+-- | The worker pools. At least one \"harness\" worker pool must be specified
+-- in order for the job to have workers.
 eWorkerPools :: Lens' Environment [WorkerPool]
 eWorkerPools
   = lens _eWorkerPools (\ s a -> s{_eWorkerPools = a})
@@ -1942,10 +2015,10 @@
 eUserAgent
   = lens _eUserAgent (\ s a -> s{_eUserAgent = a})
 
--- | The Dataflow SDK pipeline options specified by the user. These options
--- are passed through the service and are used to recreate the SDK pipeline
--- options on the worker in a language agnostic and platform independent
--- way.
+-- | The Cloud Dataflow SDK pipeline options specified by the user. These
+-- options are passed through the service and are used to recreate the SDK
+-- pipeline options on the worker in a language agnostic and platform
+-- independent way.
 eSdkPipelineOptions :: Lens' Environment (Maybe EnvironmentSdkPipelineOptions)
 eSdkPipelineOptions
   = lens _eSdkPipelineOptions
@@ -2082,6 +2155,7 @@
     , _cuInternal                  :: !(Maybe JSONValue)
     , _cuStringList                :: !(Maybe StringList)
     , _cuShortId                   :: !(Maybe (Textual Int64))
+    , _cuDistribution              :: !(Maybe DistributionUpdate)
     , _cuCumulative                :: !(Maybe Bool)
     , _cuStructuredNameAndMetadata :: !(Maybe CounterStructuredNameAndMetadata)
     , _cuFloatingPointMean         :: !(Maybe FloatingPointMean)
@@ -2107,6 +2181,8 @@
 --
 -- * 'cuShortId'
 --
+-- * 'cuDistribution'
+--
 -- * 'cuCumulative'
 --
 -- * 'cuStructuredNameAndMetadata'
@@ -2130,6 +2206,7 @@
     , _cuInternal = Nothing
     , _cuStringList = Nothing
     , _cuShortId = Nothing
+    , _cuDistribution = Nothing
     , _cuCumulative = Nothing
     , _cuStructuredNameAndMetadata = Nothing
     , _cuFloatingPointMean = Nothing
@@ -2175,6 +2252,12 @@
   = lens _cuShortId (\ s a -> s{_cuShortId = a}) .
       mapping _Coerce
 
+-- | Distribution data
+cuDistribution :: Lens' CounterUpdate (Maybe DistributionUpdate)
+cuDistribution
+  = lens _cuDistribution
+      (\ s a -> s{_cuDistribution = a})
+
 -- | True if this counter is reported as the total cumulative aggregate value
 -- accumulated since the worker started working on this WorkItem. By
 -- default this is false, indicating that this counter is reported as a
@@ -2227,6 +2310,7 @@
                      <*> (o .:? "internal")
                      <*> (o .:? "stringList")
                      <*> (o .:? "shortId")
+                     <*> (o .:? "distribution")
                      <*> (o .:? "cumulative")
                      <*> (o .:? "structuredNameAndMetadata")
                      <*> (o .:? "floatingPointMean")
@@ -2245,6 +2329,7 @@
                   ("internal" .=) <$> _cuInternal,
                   ("stringList" .=) <$> _cuStringList,
                   ("shortId" .=) <$> _cuShortId,
+                  ("distribution" .=) <$> _cuDistribution,
                   ("cumulative" .=) <$> _cuCumulative,
                   ("structuredNameAndMetadata" .=) <$>
                     _cuStructuredNameAndMetadata,
@@ -2820,7 +2905,7 @@
                  [("parameters" .=) <$> _wmcParameters,
                   ("code" .=) <$> _wmcCode])
 
--- | Map of transform name prefixes of the job to be replaced to the
+-- | The map of transform name prefixes of the job to be replaced to the
 -- corresponding name prefixes of the new job.
 --
 -- /See:/ 'jobTransformNameMApping' smart constructor.
@@ -3085,19 +3170,19 @@
     , _trsLanguageHint = Nothing
     }
 
--- | Do we continue taskrunner if an exception is hit?
+-- | Whether to continue taskrunner if an exception is hit.
 trsContinueOnException :: Lens' TaskRunnerSettings (Maybe Bool)
 trsContinueOnException
   = lens _trsContinueOnException
       (\ s a -> s{_trsContinueOnException = a})
 
--- | Command to launch the worker harness.
+-- | The command to launch the worker harness.
 trsHarnessCommand :: Lens' TaskRunnerSettings (Maybe Text)
 trsHarnessCommand
   = lens _trsHarnessCommand
       (\ s a -> s{_trsHarnessCommand = a})
 
--- | Store the workflow in this file.
+-- | The file to store the workflow in.
 trsWorkflowFileName :: Lens' TaskRunnerSettings (Maybe Text)
 trsWorkflowFileName
   = lens _trsWorkflowFileName
@@ -3109,30 +3194,30 @@
 trsTaskGroup
   = lens _trsTaskGroup (\ s a -> s{_trsTaskGroup = a})
 
--- | Also send taskrunner log info to stderr?
+-- | Whether to also send taskrunner log info to stderr.
 trsAlsologtostderr :: Lens' TaskRunnerSettings (Maybe Bool)
 trsAlsologtostderr
   = lens _trsAlsologtostderr
       (\ s a -> s{_trsAlsologtostderr = a})
 
--- | API version of endpoint, e.g. \"v1b3\"
+-- | The API version of endpoint, e.g. \"v1b3\"
 trsDataflowAPIVersion :: Lens' TaskRunnerSettings (Maybe Text)
 trsDataflowAPIVersion
   = lens _trsDataflowAPIVersion
       (\ s a -> s{_trsDataflowAPIVersion = a})
 
--- | Directory on the VM to store logs.
+-- | The directory on the VM to store logs.
 trsLogDir :: Lens' TaskRunnerSettings (Maybe Text)
 trsLogDir
   = lens _trsLogDir (\ s a -> s{_trsLogDir = a})
 
--- | Store preprocessing commands in this file.
+-- | The file to store preprocessing commands in.
 trsCommandlinesFileName :: Lens' TaskRunnerSettings (Maybe Text)
 trsCommandlinesFileName
   = lens _trsCommandlinesFileName
       (\ s a -> s{_trsCommandlinesFileName = a})
 
--- | ID string of VM.
+-- | The ID string of the VM.
 trsVMId :: Lens' TaskRunnerSettings (Maybe Text)
 trsVMId = lens _trsVMId (\ s a -> s{_trsVMId = a})
 
@@ -3146,8 +3231,8 @@
 trsBaseURL
   = lens _trsBaseURL (\ s a -> s{_trsBaseURL = a})
 
--- | OAuth2 scopes to be requested by the taskrunner in order to access the
--- dataflow API.
+-- | The OAuth2 scopes to be requested by the taskrunner in order to access
+-- the Cloud Dataflow API.
 trsOAuthScopes :: Lens' TaskRunnerSettings [Text]
 trsOAuthScopes
   = lens _trsOAuthScopes
@@ -3161,13 +3246,13 @@
 trsTaskUser
   = lens _trsTaskUser (\ s a -> s{_trsTaskUser = a})
 
--- | Streaming worker main class name.
+-- | The streaming worker main class name.
 trsStreamingWorkerMainClass :: Lens' TaskRunnerSettings (Maybe Text)
 trsStreamingWorkerMainClass
   = lens _trsStreamingWorkerMainClass
       (\ s a -> s{_trsStreamingWorkerMainClass = a})
 
--- | Location on the worker for task-specific subdirectories.
+-- | The location on the worker for task-specific subdirectories.
 trsBaseTaskDir :: Lens' TaskRunnerSettings (Maybe Text)
 trsBaseTaskDir
   = lens _trsBaseTaskDir
@@ -3191,19 +3276,20 @@
   = lens _trsTempStoragePrefix
       (\ s a -> s{_trsTempStoragePrefix = a})
 
--- | Send taskrunner log into to Google Compute Engine VM serial console?
+-- | Whether to send taskrunner log info to Google Compute Engine VM serial
+-- console.
 trsLogToSerialconsole :: Lens' TaskRunnerSettings (Maybe Bool)
 trsLogToSerialconsole
   = lens _trsLogToSerialconsole
       (\ s a -> s{_trsLogToSerialconsole = a})
 
--- | Settings to pass to the parallel worker harness.
+-- | The settings to pass to the parallel worker harness.
 trsParallelWorkerSettings :: Lens' TaskRunnerSettings (Maybe WorkerSettings)
 trsParallelWorkerSettings
   = lens _trsParallelWorkerSettings
       (\ s a -> s{_trsParallelWorkerSettings = a})
 
--- | Suggested backend language.
+-- | The suggested backend language.
 trsLanguageHint :: Lens' TaskRunnerSettings (Maybe Text)
 trsLanguageHint
   = lens _trsLanguageHint
@@ -3337,10 +3423,10 @@
                   ("computationId" .=) <$> _sccComputationId,
                   ("stageName" .=) <$> _sccStageName])
 
--- | The Dataflow SDK pipeline options specified by the user. These options
--- are passed through the service and are used to recreate the SDK pipeline
--- options on the worker in a language agnostic and platform independent
--- way.
+-- | The Cloud Dataflow SDK pipeline options specified by the user. These
+-- options are passed through the service and are used to recreate the SDK
+-- pipeline options on the worker in a language agnostic and platform
+-- independent way.
 --
 -- /See:/ 'environmentSdkPipelineOptions' smart constructor.
 newtype EnvironmentSdkPipelineOptions = EnvironmentSdkPipelineOptions'
@@ -3429,6 +3515,7 @@
 data LeaseWorkItemRequest = LeaseWorkItemRequest'
     { _lwirWorkItemTypes          :: !(Maybe [Text])
     , _lwirCurrentWorkerTime      :: !(Maybe Text)
+    , _lwirLocation               :: !(Maybe Text)
     , _lwirWorkerCapabilities     :: !(Maybe [Text])
     , _lwirRequestedLeaseDuration :: !(Maybe Text)
     , _lwirWorkerId               :: !(Maybe Text)
@@ -3442,6 +3529,8 @@
 --
 -- * 'lwirCurrentWorkerTime'
 --
+-- * 'lwirLocation'
+--
 -- * 'lwirWorkerCapabilities'
 --
 -- * 'lwirRequestedLeaseDuration'
@@ -3453,6 +3542,7 @@
     LeaseWorkItemRequest'
     { _lwirWorkItemTypes = Nothing
     , _lwirCurrentWorkerTime = Nothing
+    , _lwirLocation = Nothing
     , _lwirWorkerCapabilities = Nothing
     , _lwirRequestedLeaseDuration = Nothing
     , _lwirWorkerId = Nothing
@@ -3472,6 +3562,11 @@
   = lens _lwirCurrentWorkerTime
       (\ s a -> s{_lwirCurrentWorkerTime = a})
 
+-- | The location which contains the WorkItem\'s job.
+lwirLocation :: Lens' LeaseWorkItemRequest (Maybe Text)
+lwirLocation
+  = lens _lwirLocation (\ s a -> s{_lwirLocation = a})
+
 -- | Worker capabilities. WorkItems might be limited to workers with specific
 -- capabilities.
 lwirWorkerCapabilities :: Lens' LeaseWorkItemRequest [Text]
@@ -3500,6 +3595,7 @@
                  LeaseWorkItemRequest' <$>
                    (o .:? "workItemTypes" .!= mempty) <*>
                      (o .:? "currentWorkerTime")
+                     <*> (o .:? "location")
                      <*> (o .:? "workerCapabilities" .!= mempty)
                      <*> (o .:? "requestedLeaseDuration")
                      <*> (o .:? "workerId"))
@@ -3510,6 +3606,7 @@
               (catMaybes
                  [("workItemTypes" .=) <$> _lwirWorkItemTypes,
                   ("currentWorkerTime" .=) <$> _lwirCurrentWorkerTime,
+                  ("location" .=) <$> _lwirLocation,
                   ("workerCapabilities" .=) <$>
                     _lwirWorkerCapabilities,
                   ("requestedLeaseDuration" .=) <$>
@@ -4009,7 +4106,7 @@
     , _wsWorkerId = Nothing
     }
 
--- | The Dataflow service path relative to the root URL, for example,
+-- | The Cloud Dataflow service path relative to the root URL, for example,
 -- \"dataflow\/v1b3\/projects\".
 wsServicePath :: Lens' WorkerSettings (Maybe Text)
 wsServicePath
@@ -4042,13 +4139,13 @@
   = lens _wsTempStoragePrefix
       (\ s a -> s{_wsTempStoragePrefix = a})
 
--- | Send work progress updates to service.
+-- | Whether to send work progress updates to the service.
 wsReportingEnabled :: Lens' WorkerSettings (Maybe Bool)
 wsReportingEnabled
   = lens _wsReportingEnabled
       (\ s a -> s{_wsReportingEnabled = a})
 
--- | ID of the worker running this pipeline.
+-- | The ID of the worker running this pipeline.
 wsWorkerId :: Lens' WorkerSettings (Maybe Text)
 wsWorkerId
   = lens _wsWorkerId (\ s a -> s{_wsWorkerId = a})
@@ -4202,12 +4299,86 @@
                  [("vmInstance" .=) <$> _ddaVMInstance,
                   ("dataDisks" .=) <$> _ddaDataDisks])
 
+-- | Worker metrics exported from workers. This contains resource utilization
+-- metrics accumulated from a variety of sources. For more information, see
+-- go\/df-resource-signals. Note that this proto closely follows the
+-- structure of its DFE siblings in its contents.
+--
+-- /See:/ 'resourceUtilizationReport' smart constructor.
+newtype ResourceUtilizationReport = ResourceUtilizationReport'
+    { _rurMetrics :: Maybe [ResourceUtilizationReportMetricsItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceUtilizationReport' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rurMetrics'
+resourceUtilizationReport
+    :: ResourceUtilizationReport
+resourceUtilizationReport =
+    ResourceUtilizationReport'
+    { _rurMetrics = Nothing
+    }
+
+-- | Each Struct must parallel DFE worker metrics protos (eg., cpu_time
+-- metric will have nested values “timestamp_ms, total_ms, rate”).
+rurMetrics :: Lens' ResourceUtilizationReport [ResourceUtilizationReportMetricsItem]
+rurMetrics
+  = lens _rurMetrics (\ s a -> s{_rurMetrics = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ResourceUtilizationReport where
+        parseJSON
+          = withObject "ResourceUtilizationReport"
+              (\ o ->
+                 ResourceUtilizationReport' <$>
+                   (o .:? "metrics" .!= mempty))
+
+instance ToJSON ResourceUtilizationReport where
+        toJSON ResourceUtilizationReport'{..}
+          = object (catMaybes [("metrics" .=) <$> _rurMetrics])
+
+-- | Indicates which location failed to respond to a request for data.
+--
+-- /See:/ 'failedLocation' smart constructor.
+newtype FailedLocation = FailedLocation'
+    { _flName :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FailedLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flName'
+failedLocation
+    :: FailedLocation
+failedLocation =
+    FailedLocation'
+    { _flName = Nothing
+    }
+
+-- | The name of the failed location.
+flName :: Lens' FailedLocation (Maybe Text)
+flName = lens _flName (\ s a -> s{_flName = a})
+
+instance FromJSON FailedLocation where
+        parseJSON
+          = withObject "FailedLocation"
+              (\ o -> FailedLocation' <$> (o .:? "name"))
+
+instance ToJSON FailedLocation where
+        toJSON FailedLocation'{..}
+          = object (catMaybes [("name" .=) <$> _flName])
+
 -- | A worker_message response allows the server to pass information to the
 -- sender.
 --
 -- /See:/ 'workerMessageResponse' smart constructor.
-newtype WorkerMessageResponse = WorkerMessageResponse'
-    { _wmrWorkerHealthReportResponse :: Maybe WorkerHealthReportResponse
+data WorkerMessageResponse = WorkerMessageResponse'
+    { _wmrWorkerHealthReportResponse :: !(Maybe WorkerHealthReportResponse)
+    , _wmrWorkerMetricsResponse      :: !(Maybe ResourceUtilizationReportResponse)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'WorkerMessageResponse' with the minimum fields required to make a request.
@@ -4215,11 +4386,14 @@
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'wmrWorkerHealthReportResponse'
+--
+-- * 'wmrWorkerMetricsResponse'
 workerMessageResponse
     :: WorkerMessageResponse
 workerMessageResponse =
     WorkerMessageResponse'
     { _wmrWorkerHealthReportResponse = Nothing
+    , _wmrWorkerMetricsResponse = Nothing
     }
 
 -- | The service\'s response to a worker\'s health report.
@@ -4228,21 +4402,30 @@
   = lens _wmrWorkerHealthReportResponse
       (\ s a -> s{_wmrWorkerHealthReportResponse = a})
 
+-- | Service\'s response to reporting worker metrics (currently empty).
+wmrWorkerMetricsResponse :: Lens' WorkerMessageResponse (Maybe ResourceUtilizationReportResponse)
+wmrWorkerMetricsResponse
+  = lens _wmrWorkerMetricsResponse
+      (\ s a -> s{_wmrWorkerMetricsResponse = a})
+
 instance FromJSON WorkerMessageResponse where
         parseJSON
           = withObject "WorkerMessageResponse"
               (\ o ->
                  WorkerMessageResponse' <$>
-                   (o .:? "workerHealthReportResponse"))
+                   (o .:? "workerHealthReportResponse") <*>
+                     (o .:? "workerMetricsResponse"))
 
 instance ToJSON WorkerMessageResponse where
         toJSON WorkerMessageResponse'{..}
           = object
               (catMaybes
                  [("workerHealthReportResponse" .=) <$>
-                    _wmrWorkerHealthReportResponse])
+                    _wmrWorkerHealthReportResponse,
+                  ("workerMetricsResponse" .=) <$>
+                    _wmrWorkerMetricsResponse])
 
--- | Dynamic parameterization of the job\'s runtime environment.
+-- | The runtime parameters to pass to the job.
 --
 -- /See:/ 'createJobFromTemplateRequestParameters' smart constructor.
 newtype CreateJobFromTemplateRequestParameters = CreateJobFromTemplateRequestParameters'
@@ -4932,6 +5115,96 @@
 instance ToJSON WorkerPoolPoolArgs where
         toJSON = toJSON . _wppaAddtional
 
+-- | The environment values to set at runtime.
+--
+-- /See:/ 'runtimeEnvironment' smart constructor.
+data RuntimeEnvironment = RuntimeEnvironment'
+    { _reZone                    :: !(Maybe Text)
+    , _reBypassTempDirValidation :: !(Maybe Bool)
+    , _reServiceAccountEmail     :: !(Maybe Text)
+    , _reMaxWorkers              :: !(Maybe (Textual Int32))
+    , _reTempLocation            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RuntimeEnvironment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'reZone'
+--
+-- * 'reBypassTempDirValidation'
+--
+-- * 'reServiceAccountEmail'
+--
+-- * 'reMaxWorkers'
+--
+-- * 'reTempLocation'
+runtimeEnvironment
+    :: RuntimeEnvironment
+runtimeEnvironment =
+    RuntimeEnvironment'
+    { _reZone = Nothing
+    , _reBypassTempDirValidation = Nothing
+    , _reServiceAccountEmail = Nothing
+    , _reMaxWorkers = Nothing
+    , _reTempLocation = Nothing
+    }
+
+-- | The Compute Engine [availability
+-- zone](https:\/\/cloud.google.com\/compute\/docs\/regions-zones\/regions-zones)
+-- for launching worker instances to run your pipeline.
+reZone :: Lens' RuntimeEnvironment (Maybe Text)
+reZone = lens _reZone (\ s a -> s{_reZone = a})
+
+-- | Whether to bypass the safety checks for the job\'s temporary directory.
+-- Use with caution.
+reBypassTempDirValidation :: Lens' RuntimeEnvironment (Maybe Bool)
+reBypassTempDirValidation
+  = lens _reBypassTempDirValidation
+      (\ s a -> s{_reBypassTempDirValidation = a})
+
+-- | The email address of the service account to run the job as.
+reServiceAccountEmail :: Lens' RuntimeEnvironment (Maybe Text)
+reServiceAccountEmail
+  = lens _reServiceAccountEmail
+      (\ s a -> s{_reServiceAccountEmail = a})
+
+-- | The maximum number of Google Compute Engine instances to be made
+-- available to your pipeline during execution, from 1 to 1000.
+reMaxWorkers :: Lens' RuntimeEnvironment (Maybe Int32)
+reMaxWorkers
+  = lens _reMaxWorkers (\ s a -> s{_reMaxWorkers = a})
+      . mapping _Coerce
+
+-- | The Cloud Storage path to use for temporary files. Must be a valid Cloud
+-- Storage URL, beginning with \`gs:\/\/\`.
+reTempLocation :: Lens' RuntimeEnvironment (Maybe Text)
+reTempLocation
+  = lens _reTempLocation
+      (\ s a -> s{_reTempLocation = a})
+
+instance FromJSON RuntimeEnvironment where
+        parseJSON
+          = withObject "RuntimeEnvironment"
+              (\ o ->
+                 RuntimeEnvironment' <$>
+                   (o .:? "zone") <*> (o .:? "bypassTempDirValidation")
+                     <*> (o .:? "serviceAccountEmail")
+                     <*> (o .:? "maxWorkers")
+                     <*> (o .:? "tempLocation"))
+
+instance ToJSON RuntimeEnvironment where
+        toJSON RuntimeEnvironment'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _reZone,
+                  ("bypassTempDirValidation" .=) <$>
+                    _reBypassTempDirValidation,
+                  ("serviceAccountEmail" .=) <$>
+                    _reServiceAccountEmail,
+                  ("maxWorkers" .=) <$> _reMaxWorkers,
+                  ("tempLocation" .=) <$> _reTempLocation])
+
 -- | CounterMetadata includes all static non-name non-value counter
 -- attributes.
 --
@@ -5479,11 +5752,12 @@
          PartialGroupByKeyInstructionValueCombiningFn where
         toJSON = toJSON . _pgbkivcfAddtional
 
--- | Defines a job to be run by the Dataflow service.
+-- | Defines a job to be run by the Cloud Dataflow service.
 --
 -- /See:/ 'job' smart constructor.
 data Job = Job'
     { _jRequestedState       :: !(Maybe Text)
+    , _jLocation             :: !(Maybe Text)
     , _jEnvironment          :: !(Maybe Environment)
     , _jClientRequestId      :: !(Maybe Text)
     , _jCurrentState         :: !(Maybe Text)
@@ -5508,6 +5782,8 @@
 --
 -- * 'jRequestedState'
 --
+-- * 'jLocation'
+--
 -- * 'jEnvironment'
 --
 -- * 'jClientRequestId'
@@ -5544,6 +5820,7 @@
 job =
     Job'
     { _jRequestedState = Nothing
+    , _jLocation = Nothing
     , _jEnvironment = Nothing
     , _jClientRequestId = Nothing
     , _jCurrentState = Nothing
@@ -5562,45 +5839,52 @@
     , _jCreateTime = Nothing
     }
 
--- | The job\'s requested state. UpdateJob may be used to switch between the
--- JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting
--- requested_state. UpdateJob may also be used to directly set a job\'s
--- requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably
--- terminating the job if it has not already reached a terminal state.
+-- | The job\'s requested state. \`UpdateJob\` may be used to switch between
+-- the \`JOB_STATE_STOPPED\` and \`JOB_STATE_RUNNING\` states, by setting
+-- requested_state. \`UpdateJob\` may also be used to directly set a job\'s
+-- requested state to \`JOB_STATE_CANCELLED\` or \`JOB_STATE_DONE\`,
+-- irrevocably terminating the job if it has not already reached a terminal
+-- state.
 jRequestedState :: Lens' Job (Maybe Text)
 jRequestedState
   = lens _jRequestedState
       (\ s a -> s{_jRequestedState = a})
 
--- | Environment for the job.
+-- | The location that contains this job.
+jLocation :: Lens' Job (Maybe Text)
+jLocation
+  = lens _jLocation (\ s a -> s{_jLocation = a})
+
+-- | The environment for the job.
 jEnvironment :: Lens' Job (Maybe Environment)
 jEnvironment
   = lens _jEnvironment (\ s a -> s{_jEnvironment = a})
 
--- | Client\'s unique identifier of the job, re-used by SDK across retried
+-- | The client\'s unique identifier of the job, re-used across retried
 -- attempts. If this field is set, the service will ensure its uniqueness.
--- That is, the request to create a job will fail if the service has
--- knowledge of a previously submitted job with the same client\'s id and
--- job name. The caller may, for example, use this field to ensure
--- idempotence of job creation across retried attempts to create a job. By
--- default, the field is empty and, in that case, the service ignores it.
+-- The request to create a job will fail if the service has knowledge of a
+-- previously submitted job with the same client\'s ID and job name. The
+-- caller may use this field to ensure idempotence of job creation across
+-- retried attempts to create a job. By default, the field is empty and, in
+-- that case, the service ignores it.
 jClientRequestId :: Lens' Job (Maybe Text)
 jClientRequestId
   = lens _jClientRequestId
       (\ s a -> s{_jClientRequestId = a})
 
--- | The current state of the job. Jobs are created in the JOB_STATE_STOPPED
--- state unless otherwise specified. A job in the JOB_STATE_RUNNING state
--- may asynchronously enter a terminal state. Once a job has reached a
--- terminal state, no further state updates may be made. This field may be
--- mutated by the Dataflow service; callers cannot mutate it.
+-- | The current state of the job. Jobs are created in the
+-- \`JOB_STATE_STOPPED\` state unless otherwise specified. A job in the
+-- \`JOB_STATE_RUNNING\` state may asynchronously enter a terminal state.
+-- After a job has reached a terminal state, no further state updates may
+-- be made. This field may be mutated by the Cloud Dataflow service;
+-- callers cannot mutate it.
 jCurrentState :: Lens' Job (Maybe Text)
 jCurrentState
   = lens _jCurrentState
       (\ s a -> s{_jCurrentState = a})
 
 -- | If another job is an update of this job (and thus, this job is in
--- JOB_STATE_UPDATED), this field will contain the ID of that job.
+-- \`JOB_STATE_UPDATED\`), this field contains the ID of that job.
 jReplacedByJobId :: Lens' Job (Maybe Text)
 jReplacedByJobId
   = lens _jReplacedByJobId
@@ -5624,29 +5908,30 @@
   = lens _jSteps (\ s a -> s{_jSteps = a}) . _Default .
       _Coerce
 
--- | Information about how the Dataflow service will actually run the job.
+-- | Information about how the Cloud Dataflow service will run the job.
 jExecutionInfo :: Lens' Job (Maybe JobExecutionInfo)
 jExecutionInfo
   = lens _jExecutionInfo
       (\ s a -> s{_jExecutionInfo = a})
 
--- | The user-specified Dataflow job name. Only one Job with a given name may
--- exist in a project at any given time. If a caller attempts to create a
--- Job with the same name as an already-existing Job, the attempt will
--- return the existing Job. The name must match the regular expression
--- [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+-- | The user-specified Cloud Dataflow job name. Only one Job with a given
+-- name may exist in a project at any given time. If a caller attempts to
+-- create a Job with the same name as an already-existing Job, the attempt
+-- returns the existing Job. The name must match the regular expression
+-- \`[a-z]([-a-z0-9]{0,38}[a-z0-9])?\`
 jName :: Lens' Job (Maybe Text)
 jName = lens _jName (\ s a -> s{_jName = a})
 
--- | Map of transform name prefixes of the job to be replaced to the
+-- | The map of transform name prefixes of the job to be replaced to the
 -- corresponding name prefixes of the new job.
 jTransformNameMApping :: Lens' Job (Maybe JobTransformNameMApping)
 jTransformNameMApping
   = lens _jTransformNameMApping
       (\ s a -> s{_jTransformNameMApping = a})
 
--- | The unique ID of this job. This field is set by the Dataflow service
--- when the Job is created, and is immutable for the life of the Job.
+-- | The unique ID of this job. This field is set by the Cloud Dataflow
+-- service when the Job is created, and is immutable for the life of the
+-- job.
 jId :: Lens' Job (Maybe Text)
 jId = lens _jId (\ s a -> s{_jId = a})
 
@@ -5659,12 +5944,12 @@
 jLabels :: Lens' Job (Maybe JobLabels)
 jLabels = lens _jLabels (\ s a -> s{_jLabels = a})
 
--- | The project which owns the job.
+-- | The ID of the Cloud Platform project that the job belongs to.
 jProjectId :: Lens' Job (Maybe Text)
 jProjectId
   = lens _jProjectId (\ s a -> s{_jProjectId = a})
 
--- | The type of dataflow job.
+-- | The type of Cloud Dataflow job.
 jType :: Lens' Job (Maybe Text)
 jType = lens _jType (\ s a -> s{_jType = a})
 
@@ -5674,17 +5959,17 @@
   = lens _jCurrentStateTime
       (\ s a -> s{_jCurrentStateTime = a})
 
--- | If this job is an update of an existing job, this field will be the ID
--- of the job it replaced. When sending a CreateJobRequest, you can update
--- a job by specifying it here. The job named here will be stopped, and its
--- intermediate state transferred to this job.
+-- | If this job is an update of an existing job, this field is the job ID of
+-- the job it replaced. When sending a \`CreateJobRequest\`, you can update
+-- a job by specifying it here. The job named here is stopped, and its
+-- intermediate state is transferred to this job.
 jReplaceJobId :: Lens' Job (Maybe Text)
 jReplaceJobId
   = lens _jReplaceJobId
       (\ s a -> s{_jReplaceJobId = a})
 
--- | Timestamp when job was initially created. Immutable, set by the Dataflow
--- service.
+-- | The timestamp when the job was initially created. Immutable and set by
+-- the Cloud Dataflow service.
 jCreateTime :: Lens' Job (Maybe Text)
 jCreateTime
   = lens _jCreateTime (\ s a -> s{_jCreateTime = a})
@@ -5694,7 +5979,8 @@
           = withObject "Job"
               (\ o ->
                  Job' <$>
-                   (o .:? "requestedState") <*> (o .:? "environment")
+                   (o .:? "requestedState") <*> (o .:? "location") <*>
+                     (o .:? "environment")
                      <*> (o .:? "clientRequestId")
                      <*> (o .:? "currentState")
                      <*> (o .:? "replacedByJobId")
@@ -5716,6 +6002,7 @@
           = object
               (catMaybes
                  [("requestedState" .=) <$> _jRequestedState,
+                  ("location" .=) <$> _jLocation,
                   ("environment" .=) <$> _jEnvironment,
                   ("clientRequestId" .=) <$> _jClientRequestId,
                   ("currentState" .=) <$> _jCurrentState,
@@ -5899,10 +6186,11 @@
 instance ToJSON SinkSpec where
         toJSON = toJSON . _sAddtional
 
--- | Describes one particular pool of Dataflow workers to be instantiated by
--- the Dataflow service in order to perform the computations required by a
--- job. Note that a workflow job may use multiple pools, in order to match
--- the various computational requirements of the various stages of the job.
+-- | Describes one particular pool of Cloud Dataflow workers to be
+-- instantiated by the Cloud Dataflow service in order to perform the
+-- computations required by a job. Note that a workflow job may use
+-- multiple pools, in order to match the various computational requirements
+-- of the various stages of the job.
 --
 -- /See:/ 'workerPool' smart constructor.
 data WorkerPool = WorkerPool'
@@ -6024,7 +6312,7 @@
   = lens _wpDiskSizeGb (\ s a -> s{_wpDiskSizeGb = a})
       . mapping _Coerce
 
--- | The kind of the worker pool; currently only \'harness\' and \'shuffle\'
+-- | The kind of the worker pool; currently only \`harness\` and \`shuffle\`
 -- are supported.
 wpKind :: Lens' WorkerPool (Maybe Text)
 wpKind = lens _wpKind (\ s a -> s{_wpKind = a})
@@ -6106,16 +6394,17 @@
   = lens _wpDiskType (\ s a -> s{_wpDiskType = a})
 
 -- | Sets the policy for determining when to turndown worker pool. Allowed
--- values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER.
--- TEARDOWN_ALWAYS means workers are always torn down regardless of whether
--- the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the
--- job succeeds. TEARDOWN_NEVER means the workers are never torn down. If
--- the workers are not torn down by the service, they will continue to run
--- and use Google Compute Engine VM resources in the user\'s project until
--- they are explicitly terminated by the user. Because of this, Google
--- recommends using the TEARDOWN_ALWAYS policy except for small, manually
--- supervised test jobs. If unknown or unspecified, the service will
--- attempt to choose a reasonable default.
+-- values are: \`TEARDOWN_ALWAYS\`, \`TEARDOWN_ON_SUCCESS\`, and
+-- \`TEARDOWN_NEVER\`. \`TEARDOWN_ALWAYS\` means workers are always torn
+-- down regardless of whether the job succeeds. \`TEARDOWN_ON_SUCCESS\`
+-- means workers are torn down if the job succeeds. \`TEARDOWN_NEVER\`
+-- means the workers are never torn down. If the workers are not torn down
+-- by the service, they will continue to run and use Google Compute Engine
+-- VM resources in the user\'s project until they are explicitly terminated
+-- by the user. Because of this, Google recommends using the
+-- \`TEARDOWN_ALWAYS\` policy except for small, manually supervised test
+-- jobs. If unknown or unspecified, the service will attempt to choose a
+-- reasonable default.
 wpTeardownPolicy :: Lens' WorkerPool (Maybe Text)
 wpTeardownPolicy
   = lens _wpTeardownPolicy
@@ -6134,8 +6423,8 @@
 wpPoolArgs
   = lens _wpPoolArgs (\ s a -> s{_wpPoolArgs = a})
 
--- | Docker container image that executes Dataflow worker harness, residing
--- in Google Container Registry. Required.
+-- | Required. Docker container image that executes the Cloud Dataflow worker
+-- harness, residing in Google Container Registry.
 wpWorkerHarnessContainerImage :: Lens' WorkerPool (Maybe Text)
 wpWorkerHarnessContainerImage
   = lens _wpWorkerHarnessContainerImage
@@ -6204,7 +6493,7 @@
                     _wpWorkerHarnessContainerImage,
                   ("dataDisks" .=) <$> _wpDataDisks])
 
--- | Defines a particular step within a Dataflow job. A job consists of
+-- | Defines a particular step within a Cloud Dataflow job. A job consists of
 -- multiple steps, each of which performs some specific operation as part
 -- of the overall job. Data is typically passed from one step to another as
 -- part of the job. Here\'s an example of a sequence of steps which
@@ -6214,8 +6503,8 @@
 -- value and extract an element-specific key value. * Group elements with
 -- the same key into a single element with that key, transforming a
 -- multiply-keyed collection into a uniquely-keyed collection. * Write the
--- elements out to some data sink. (Note that the Dataflow service may be
--- used to run many different types of jobs, not just Map-Reduce).
+-- elements out to some data sink. Note that the Cloud Dataflow service may
+-- be used to run many different types of jobs, not just Map-Reduce.
 --
 -- /See:/ 'step' smart constructor.
 data Step = Step'
@@ -6242,12 +6531,12 @@
     , _sProperties = Nothing
     }
 
--- | The kind of step in the dataflow Job.
+-- | The kind of step in the Cloud Dataflow job.
 sKind :: Lens' Step (Maybe Text)
 sKind = lens _sKind (\ s a -> s{_sKind = a})
 
--- | Name identifying the step. This must be unique for each step with
--- respect to all other steps in the dataflow Job.
+-- | The name that identifies the step. This must be unique for each step
+-- with respect to all other steps in the Cloud Dataflow job.
 sName :: Lens' Step (Maybe Text)
 sName = lens _sName (\ s a -> s{_sName = a})
 
@@ -6272,12 +6561,13 @@
                  [("kind" .=) <$> _sKind, ("name" .=) <$> _sName,
                   ("properties" .=) <$> _sProperties])
 
--- | Packages that need to be installed in order for a worker to run the
--- steps of the Dataflow job which will be assigned to its worker pool.
--- This is the mechanism by which the SDK causes code to be loaded onto the
--- workers. For example, the Dataflow Java SDK might use this to install
--- jars containing the user\'s code and all of the various dependencies
--- (libraries, data files, etc) required in order for that code to run.
+-- | The packages that must be installed in order for a worker to run the
+-- steps of the Cloud Dataflow job that will be assigned to its worker
+-- pool. This is the mechanism by which the Cloud Dataflow SDK causes code
+-- to be loaded onto the workers. For example, the Cloud Dataflow Java SDK
+-- might use this to install jars containing the user\'s code and all of
+-- the various dependencies (libraries, data files, etc.) required in order
+-- for that code to run.
 --
 -- /See:/ 'package' smart constructor.
 data Package = Package'
@@ -6538,6 +6828,29 @@
                   ("primary" .=) <$> _sfPrimary,
                   ("residualSource" .=) <$> _sfResidualSource])
 
+-- | Service-side response to WorkerMessage reporting resource utilization.
+--
+-- /See:/ 'resourceUtilizationReportResponse' smart constructor.
+data ResourceUtilizationReportResponse =
+    ResourceUtilizationReportResponse'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceUtilizationReportResponse' with the minimum fields required to make a request.
+--
+resourceUtilizationReportResponse
+    :: ResourceUtilizationReportResponse
+resourceUtilizationReportResponse = ResourceUtilizationReportResponse'
+
+instance FromJSON ResourceUtilizationReportResponse
+         where
+        parseJSON
+          = withObject "ResourceUtilizationReportResponse"
+              (\ o -> pure ResourceUtilizationReportResponse')
+
+instance ToJSON ResourceUtilizationReportResponse
+         where
+        toJSON = const emptyObject
+
 -- | Describes full or partial data disk assignment information of the
 -- computation ranges.
 --
@@ -6591,13 +6904,14 @@
                  [("rangeAssignments" .=) <$> _scrRangeAssignments,
                   ("computationId" .=) <$> _scrComputationId])
 
--- | Response to a request to list Dataflow jobs. This may be a partial
+-- | Response to a request to list Cloud Dataflow jobs. This may be a partial
 -- response, depending on the page size in the ListJobsRequest.
 --
 -- /See:/ 'listJobsResponse' smart constructor.
 data ListJobsResponse = ListJobsResponse'
-    { _ljrNextPageToken :: !(Maybe Text)
-    , _ljrJobs          :: !(Maybe [Job])
+    { _ljrNextPageToken  :: !(Maybe Text)
+    , _ljrFailedLocation :: !(Maybe [FailedLocation])
+    , _ljrJobs           :: !(Maybe [Job])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ListJobsResponse' with the minimum fields required to make a request.
@@ -6606,12 +6920,15 @@
 --
 -- * 'ljrNextPageToken'
 --
+-- * 'ljrFailedLocation'
+--
 -- * 'ljrJobs'
 listJobsResponse
     :: ListJobsResponse
 listJobsResponse =
     ListJobsResponse'
     { _ljrNextPageToken = Nothing
+    , _ljrFailedLocation = Nothing
     , _ljrJobs = Nothing
     }
 
@@ -6621,6 +6938,14 @@
   = lens _ljrNextPageToken
       (\ s a -> s{_ljrNextPageToken = a})
 
+-- | Zero or more messages describing locations that failed to respond.
+ljrFailedLocation :: Lens' ListJobsResponse [FailedLocation]
+ljrFailedLocation
+  = lens _ljrFailedLocation
+      (\ s a -> s{_ljrFailedLocation = a})
+      . _Default
+      . _Coerce
+
 -- | A subset of the requested job information.
 ljrJobs :: Lens' ListJobsResponse [Job]
 ljrJobs
@@ -6633,13 +6958,15 @@
               (\ o ->
                  ListJobsResponse' <$>
                    (o .:? "nextPageToken") <*>
-                     (o .:? "jobs" .!= mempty))
+                     (o .:? "failedLocation" .!= mempty)
+                     <*> (o .:? "jobs" .!= mempty))
 
 instance ToJSON ListJobsResponse where
         toJSON ListJobsResponse'{..}
           = object
               (catMaybes
                  [("nextPageToken" .=) <$> _ljrNextPageToken,
+                  ("failedLocation" .=) <$> _ljrFailedLocation,
                   ("jobs" .=) <$> _ljrJobs])
 
 -- | A source that records can be read and decoded from.
@@ -6815,6 +7142,7 @@
     { _wmWorkerHealthReport :: !(Maybe WorkerHealthReport)
     , _wmTime               :: !(Maybe Text)
     , _wmWorkerMessageCode  :: !(Maybe WorkerMessageCode)
+    , _wmWorkerMetrics      :: !(Maybe ResourceUtilizationReport)
     , _wmLabels             :: !(Maybe WorkerMessageLabels)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -6828,6 +7156,8 @@
 --
 -- * 'wmWorkerMessageCode'
 --
+-- * 'wmWorkerMetrics'
+--
 -- * 'wmLabels'
 workerMessage
     :: WorkerMessage
@@ -6836,6 +7166,7 @@
     { _wmWorkerHealthReport = Nothing
     , _wmTime = Nothing
     , _wmWorkerMessageCode = Nothing
+    , _wmWorkerMetrics = Nothing
     , _wmLabels = Nothing
     }
 
@@ -6855,6 +7186,12 @@
   = lens _wmWorkerMessageCode
       (\ s a -> s{_wmWorkerMessageCode = a})
 
+-- | Resource metrics reported by workers.
+wmWorkerMetrics :: Lens' WorkerMessage (Maybe ResourceUtilizationReport)
+wmWorkerMetrics
+  = lens _wmWorkerMetrics
+      (\ s a -> s{_wmWorkerMetrics = a})
+
 -- | Labels are used to group WorkerMessages. For example, a worker_message
 -- about a particular container might have the labels: { \"JOB_ID\":
 -- \"2015-04-22\", \"WORKER_ID\": \"wordcount-vm-2015…\"
@@ -6872,6 +7209,7 @@
                  WorkerMessage' <$>
                    (o .:? "workerHealthReport") <*> (o .:? "time") <*>
                      (o .:? "workerMessageCode")
+                     <*> (o .:? "workerMetrics")
                      <*> (o .:? "labels"))
 
 instance ToJSON WorkerMessage where
@@ -6881,6 +7219,7 @@
                  [("workerHealthReport" .=) <$> _wmWorkerHealthReport,
                   ("time" .=) <$> _wmTime,
                   ("workerMessageCode" .=) <$> _wmWorkerMessageCode,
+                  ("workerMetrics" .=) <$> _wmWorkerMetrics,
                   ("labels" .=) <$> _wmLabels])
 
 -- | Location information for a specific key-range of a sharded computation.
@@ -7233,7 +7572,84 @@
           = object
               (catMaybes [("stateful" .=) <$> _cslStateful])
 
+-- | A metric value representing a distribution.
 --
+-- /See:/ 'distributionUpdate' smart constructor.
+data DistributionUpdate = DistributionUpdate'
+    { _duMax          :: !(Maybe SplitInt64)
+    , _duCount        :: !(Maybe SplitInt64)
+    , _duMin          :: !(Maybe SplitInt64)
+    , _duSumOfSquares :: !(Maybe (Textual Double))
+    , _duSum          :: !(Maybe SplitInt64)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DistributionUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'duMax'
+--
+-- * 'duCount'
+--
+-- * 'duMin'
+--
+-- * 'duSumOfSquares'
+--
+-- * 'duSum'
+distributionUpdate
+    :: DistributionUpdate
+distributionUpdate =
+    DistributionUpdate'
+    { _duMax = Nothing
+    , _duCount = Nothing
+    , _duMin = Nothing
+    , _duSumOfSquares = Nothing
+    , _duSum = Nothing
+    }
+
+-- | The maximum value present in the distribution.
+duMax :: Lens' DistributionUpdate (Maybe SplitInt64)
+duMax = lens _duMax (\ s a -> s{_duMax = a})
+
+-- | The count of the number of elements present in the distribution.
+duCount :: Lens' DistributionUpdate (Maybe SplitInt64)
+duCount = lens _duCount (\ s a -> s{_duCount = a})
+
+-- | The minimum value present in the distribution.
+duMin :: Lens' DistributionUpdate (Maybe SplitInt64)
+duMin = lens _duMin (\ s a -> s{_duMin = a})
+
+-- | Use a double since the sum of squares is likely to overflow int64.
+duSumOfSquares :: Lens' DistributionUpdate (Maybe Double)
+duSumOfSquares
+  = lens _duSumOfSquares
+      (\ s a -> s{_duSumOfSquares = a})
+      . mapping _Coerce
+
+-- | Use an int64 since we\'d prefer the added precision. If overflow is a
+-- common problem we can detect it and use an additional int64 or a double.
+duSum :: Lens' DistributionUpdate (Maybe SplitInt64)
+duSum = lens _duSum (\ s a -> s{_duSum = a})
+
+instance FromJSON DistributionUpdate where
+        parseJSON
+          = withObject "DistributionUpdate"
+              (\ o ->
+                 DistributionUpdate' <$>
+                   (o .:? "max") <*> (o .:? "count") <*> (o .:? "min")
+                     <*> (o .:? "sumOfSquares")
+                     <*> (o .:? "sum"))
+
+instance ToJSON DistributionUpdate where
+        toJSON DistributionUpdate'{..}
+          = object
+              (catMaybes
+                 [("max" .=) <$> _duMax, ("count" .=) <$> _duCount,
+                  ("min" .=) <$> _duMin,
+                  ("sumOfSquares" .=) <$> _duSumOfSquares,
+                  ("sum" .=) <$> _duSum])
+
+--
 -- /See:/ 'sourceBaseSpecsItem' smart constructor.
 newtype SourceBaseSpecsItem = SourceBaseSpecsItem'
     { _sbsiAddtional :: HashMap Text JSONValue
@@ -7681,8 +8097,8 @@
                  [("tag" .=) <$> _siiTag, ("kind" .=) <$> _siiKind,
                   ("sources" .=) <$> _siiSources])
 
--- | Additional information about how a Dataflow job will be executed which
--- isn’t contained in the submitted job.
+-- | Additional information about how a Cloud Dataflow job will be executed
+-- that isn\'t contained in the submitted job.
 --
 -- /See:/ 'jobExecutionInfo' smart constructor.
 newtype JobExecutionInfo = JobExecutionInfo'
@@ -7979,6 +8395,7 @@
     , _plTimestampLabel       :: !(Maybe Text)
     , _plIdLabel              :: !(Maybe Text)
     , _plTopic                :: !(Maybe Text)
+    , _plWithAttributes       :: !(Maybe Bool)
     , _plSubscription         :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -7996,6 +8413,8 @@
 --
 -- * 'plTopic'
 --
+-- * 'plWithAttributes'
+--
 -- * 'plSubscription'
 pubsubLocation
     :: PubsubLocation
@@ -8006,6 +8425,7 @@
     , _plTimestampLabel = Nothing
     , _plIdLabel = Nothing
     , _plTopic = Nothing
+    , _plWithAttributes = Nothing
     , _plSubscription = Nothing
     }
 
@@ -8039,6 +8459,12 @@
 plTopic :: Lens' PubsubLocation (Maybe Text)
 plTopic = lens _plTopic (\ s a -> s{_plTopic = a})
 
+-- | If true, then the client has requested to get pubsub attributes.
+plWithAttributes :: Lens' PubsubLocation (Maybe Bool)
+plWithAttributes
+  = lens _plWithAttributes
+      (\ s a -> s{_plWithAttributes = a})
+
 -- | A pubsub subscription, in the form of
 -- \"pubsub.googleapis.com\/subscriptions\/ \/\"
 plSubscription :: Lens' PubsubLocation (Maybe Text)
@@ -8056,6 +8482,7 @@
                      <*> (o .:? "timestampLabel")
                      <*> (o .:? "idLabel")
                      <*> (o .:? "topic")
+                     <*> (o .:? "withAttributes")
                      <*> (o .:? "subscription"))
 
 instance ToJSON PubsubLocation where
@@ -8068,6 +8495,7 @@
                   ("timestampLabel" .=) <$> _plTimestampLabel,
                   ("idLabel" .=) <$> _plIdLabel,
                   ("topic" .=) <$> _plTopic,
+                  ("withAttributes" .=) <$> _plWithAttributes,
                   ("subscription" .=) <$> _plSubscription])
 
 -- | A metric value representing a list of floating point numbers.
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Create.hs b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Create.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Create.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Create.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a dataflow job.
+-- Creates a Cloud Dataflow job.
 --
 -- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.create@.
 module Network.Google.Resource.Dataflow.Projects.Jobs.Create
@@ -35,6 +35,7 @@
     -- * Request Lenses
     , pjcXgafv
     , pjcUploadProtocol
+    , pjcLocation
     , pjcPp
     , pjcAccessToken
     , pjcUploadType
@@ -58,22 +59,24 @@
            "jobs" :>
              QueryParam "$.xgafv" Text :>
                QueryParam "upload_protocol" Text :>
-                 QueryParam "pp" Bool :>
-                   QueryParam "access_token" Text :>
-                     QueryParam "uploadType" Text :>
-                       QueryParam "bearer_token" Text :>
-                         QueryParam "view" Text :>
-                           QueryParam "replaceJobId" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 ReqBody '[JSON] Job :> Post '[JSON] Job
+                 QueryParam "location" Text :>
+                   QueryParam "pp" Bool :>
+                     QueryParam "access_token" Text :>
+                       QueryParam "uploadType" Text :>
+                         QueryParam "bearer_token" Text :>
+                           QueryParam "view" Text :>
+                             QueryParam "replaceJobId" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   ReqBody '[JSON] Job :> Post '[JSON] Job
 
--- | Creates a dataflow job.
+-- | Creates a Cloud Dataflow job.
 --
 -- /See:/ 'projectsJobsCreate' smart constructor.
 data ProjectsJobsCreate = ProjectsJobsCreate'
     { _pjcXgafv          :: !(Maybe Text)
     , _pjcUploadProtocol :: !(Maybe Text)
+    , _pjcLocation       :: !(Maybe Text)
     , _pjcPp             :: !Bool
     , _pjcAccessToken    :: !(Maybe Text)
     , _pjcUploadType     :: !(Maybe Text)
@@ -93,6 +96,8 @@
 --
 -- * 'pjcUploadProtocol'
 --
+-- * 'pjcLocation'
+--
 -- * 'pjcPp'
 --
 -- * 'pjcAccessToken'
@@ -118,6 +123,7 @@
     ProjectsJobsCreate'
     { _pjcXgafv = Nothing
     , _pjcUploadProtocol = Nothing
+    , _pjcLocation = Nothing
     , _pjcPp = True
     , _pjcAccessToken = Nothing
     , _pjcUploadType = Nothing
@@ -139,6 +145,11 @@
   = lens _pjcUploadProtocol
       (\ s a -> s{_pjcUploadProtocol = a})
 
+-- | The location that contains this job.
+pjcLocation :: Lens' ProjectsJobsCreate (Maybe Text)
+pjcLocation
+  = lens _pjcLocation (\ s a -> s{_pjcLocation = a})
+
 -- | Pretty-print response.
 pjcPp :: Lens' ProjectsJobsCreate Bool
 pjcPp = lens _pjcPp (\ s a -> s{_pjcPp = a})
@@ -166,16 +177,16 @@
   = lens _pjcBearerToken
       (\ s a -> s{_pjcBearerToken = a})
 
--- | Level of information requested in response.
+-- | The level of information requested in response.
 pjcView :: Lens' ProjectsJobsCreate (Maybe Text)
 pjcView = lens _pjcView (\ s a -> s{_pjcView = a})
 
--- | The project which owns the job.
+-- | The ID of the Cloud Platform project that the job belongs to.
 pjcProjectId :: Lens' ProjectsJobsCreate Text
 pjcProjectId
   = lens _pjcProjectId (\ s a -> s{_pjcProjectId = a})
 
--- | DEPRECATED. This field is now on the Job message.
+-- | Deprecated. This field is now in the Job message.
 pjcReplaceJobId :: Lens' ProjectsJobsCreate (Maybe Text)
 pjcReplaceJobId
   = lens _pjcReplaceJobId
@@ -193,6 +204,7 @@
                "https://www.googleapis.com/auth/userinfo.email"]
         requestClient ProjectsJobsCreate'{..}
           = go _pjcProjectId _pjcXgafv _pjcUploadProtocol
+              _pjcLocation
               (Just _pjcPp)
               _pjcAccessToken
               _pjcUploadType
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Get.hs b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Get.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Get.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets the state of the specified dataflow job.
+-- Gets the state of the specified Cloud Dataflow job.
 --
 -- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.get@.
 module Network.Google.Resource.Dataflow.Projects.Jobs.Get
@@ -36,6 +36,7 @@
     , pjgXgafv
     , pjgJobId
     , pjgUploadProtocol
+    , pjgLocation
     , pjgPp
     , pjgAccessToken
     , pjgUploadType
@@ -58,21 +59,23 @@
              Capture "jobId" Text :>
                QueryParam "$.xgafv" Text :>
                  QueryParam "upload_protocol" Text :>
-                   QueryParam "pp" Bool :>
-                     QueryParam "access_token" Text :>
-                       QueryParam "uploadType" Text :>
-                         QueryParam "bearer_token" Text :>
-                           QueryParam "view" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :> Get '[JSON] Job
+                   QueryParam "location" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "view" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :> Get '[JSON] Job
 
--- | Gets the state of the specified dataflow job.
+-- | Gets the state of the specified Cloud Dataflow job.
 --
 -- /See:/ 'projectsJobsGet' smart constructor.
 data ProjectsJobsGet = ProjectsJobsGet'
     { _pjgXgafv          :: !(Maybe Text)
     , _pjgJobId          :: !Text
     , _pjgUploadProtocol :: !(Maybe Text)
+    , _pjgLocation       :: !(Maybe Text)
     , _pjgPp             :: !Bool
     , _pjgAccessToken    :: !(Maybe Text)
     , _pjgUploadType     :: !(Maybe Text)
@@ -92,6 +95,8 @@
 --
 -- * 'pjgUploadProtocol'
 --
+-- * 'pjgLocation'
+--
 -- * 'pjgPp'
 --
 -- * 'pjgAccessToken'
@@ -114,6 +119,7 @@
     { _pjgXgafv = Nothing
     , _pjgJobId = pPjgJobId_
     , _pjgUploadProtocol = Nothing
+    , _pjgLocation = Nothing
     , _pjgPp = True
     , _pjgAccessToken = Nothing
     , _pjgUploadType = Nothing
@@ -127,7 +133,7 @@
 pjgXgafv :: Lens' ProjectsJobsGet (Maybe Text)
 pjgXgafv = lens _pjgXgafv (\ s a -> s{_pjgXgafv = a})
 
--- | Identifies a single job.
+-- | The job ID.
 pjgJobId :: Lens' ProjectsJobsGet Text
 pjgJobId = lens _pjgJobId (\ s a -> s{_pjgJobId = a})
 
@@ -137,6 +143,11 @@
   = lens _pjgUploadProtocol
       (\ s a -> s{_pjgUploadProtocol = a})
 
+-- | The location that contains this job.
+pjgLocation :: Lens' ProjectsJobsGet (Maybe Text)
+pjgLocation
+  = lens _pjgLocation (\ s a -> s{_pjgLocation = a})
+
 -- | Pretty-print response.
 pjgPp :: Lens' ProjectsJobsGet Bool
 pjgPp = lens _pjgPp (\ s a -> s{_pjgPp = a})
@@ -159,11 +170,11 @@
   = lens _pjgBearerToken
       (\ s a -> s{_pjgBearerToken = a})
 
--- | Level of information requested in response.
+-- | The level of information requested in response.
 pjgView :: Lens' ProjectsJobsGet (Maybe Text)
 pjgView = lens _pjgView (\ s a -> s{_pjgView = a})
 
--- | The project which owns the job.
+-- | The ID of the Cloud Platform project that the job belongs to.
 pjgProjectId :: Lens' ProjectsJobsGet Text
 pjgProjectId
   = lens _pjgProjectId (\ s a -> s{_pjgProjectId = a})
@@ -181,6 +192,7 @@
         requestClient ProjectsJobsGet'{..}
           = go _pjgProjectId _pjgJobId _pjgXgafv
               _pjgUploadProtocol
+              _pjgLocation
               (Just _pjgPp)
               _pjgAccessToken
               _pjgUploadType
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/GetMetrics.hs b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/GetMetrics.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/GetMetrics.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/GetMetrics.hs
@@ -36,6 +36,7 @@
     , pjgmXgafv
     , pjgmJobId
     , pjgmUploadProtocol
+    , pjgmLocation
     , pjgmStartTime
     , pjgmPp
     , pjgmAccessToken
@@ -59,14 +60,15 @@
                "metrics" :>
                  QueryParam "$.xgafv" Text :>
                    QueryParam "upload_protocol" Text :>
-                     QueryParam "startTime" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :>
-                                   Get '[JSON] JobMetrics
+                     QueryParam "location" Text :>
+                       QueryParam "startTime" Text :>
+                         QueryParam "pp" Bool :>
+                           QueryParam "access_token" Text :>
+                             QueryParam "uploadType" Text :>
+                               QueryParam "bearer_token" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     Get '[JSON] JobMetrics
 
 -- | Request the job status.
 --
@@ -75,6 +77,7 @@
     { _pjgmXgafv          :: !(Maybe Text)
     , _pjgmJobId          :: !Text
     , _pjgmUploadProtocol :: !(Maybe Text)
+    , _pjgmLocation       :: !(Maybe Text)
     , _pjgmStartTime      :: !(Maybe Text)
     , _pjgmPp             :: !Bool
     , _pjgmAccessToken    :: !(Maybe Text)
@@ -94,6 +97,8 @@
 --
 -- * 'pjgmUploadProtocol'
 --
+-- * 'pjgmLocation'
+--
 -- * 'pjgmStartTime'
 --
 -- * 'pjgmPp'
@@ -116,6 +121,7 @@
     { _pjgmXgafv = Nothing
     , _pjgmJobId = pPjgmJobId_
     , _pjgmUploadProtocol = Nothing
+    , _pjgmLocation = Nothing
     , _pjgmStartTime = Nothing
     , _pjgmPp = True
     , _pjgmAccessToken = Nothing
@@ -141,6 +147,11 @@
   = lens _pjgmUploadProtocol
       (\ s a -> s{_pjgmUploadProtocol = a})
 
+-- | The location which contains the job specified by job_id.
+pjgmLocation :: Lens' ProjectsJobsGetMetrics (Maybe Text)
+pjgmLocation
+  = lens _pjgmLocation (\ s a -> s{_pjgmLocation = a})
+
 -- | Return only metric data that has changed since this time. Default is to
 -- return all information about all metrics for the job.
 pjgmStartTime :: Lens' ProjectsJobsGetMetrics (Maybe Text)
@@ -189,6 +200,7 @@
         requestClient ProjectsJobsGetMetrics'{..}
           = go _pjgmProjectId _pjgmJobId _pjgmXgafv
               _pjgmUploadProtocol
+              _pjgmLocation
               _pjgmStartTime
               (Just _pjgmPp)
               _pjgmAccessToken
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/List.hs b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/List.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/List.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/List.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- List the jobs of a project
+-- List the jobs of a project.
 --
 -- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.list@.
 module Network.Google.Resource.Dataflow.Projects.Jobs.List
@@ -35,6 +35,7 @@
     -- * Request Lenses
     , pjlXgafv
     , pjlUploadProtocol
+    , pjlLocation
     , pjlPp
     , pjlAccessToken
     , pjlUploadType
@@ -59,24 +60,26 @@
            "jobs" :>
              QueryParam "$.xgafv" Text :>
                QueryParam "upload_protocol" Text :>
-                 QueryParam "pp" Bool :>
-                   QueryParam "access_token" Text :>
-                     QueryParam "uploadType" Text :>
-                       QueryParam "bearer_token" Text :>
-                         QueryParam "view" Text :>
-                           QueryParam "filter" Text :>
-                             QueryParam "pageToken" Text :>
-                               QueryParam "pageSize" (Textual Int32) :>
-                                 QueryParam "callback" Text :>
-                                   QueryParam "alt" AltJSON :>
-                                     Get '[JSON] ListJobsResponse
+                 QueryParam "location" Text :>
+                   QueryParam "pp" Bool :>
+                     QueryParam "access_token" Text :>
+                       QueryParam "uploadType" Text :>
+                         QueryParam "bearer_token" Text :>
+                           QueryParam "view" Text :>
+                             QueryParam "filter" Text :>
+                               QueryParam "pageToken" Text :>
+                                 QueryParam "pageSize" (Textual Int32) :>
+                                   QueryParam "callback" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] ListJobsResponse
 
--- | List the jobs of a project
+-- | List the jobs of a project.
 --
 -- /See:/ 'projectsJobsList' smart constructor.
 data ProjectsJobsList = ProjectsJobsList'
     { _pjlXgafv          :: !(Maybe Text)
     , _pjlUploadProtocol :: !(Maybe Text)
+    , _pjlLocation       :: !(Maybe Text)
     , _pjlPp             :: !Bool
     , _pjlAccessToken    :: !(Maybe Text)
     , _pjlUploadType     :: !(Maybe Text)
@@ -97,6 +100,8 @@
 --
 -- * 'pjlUploadProtocol'
 --
+-- * 'pjlLocation'
+--
 -- * 'pjlPp'
 --
 -- * 'pjlAccessToken'
@@ -123,6 +128,7 @@
     ProjectsJobsList'
     { _pjlXgafv = Nothing
     , _pjlUploadProtocol = Nothing
+    , _pjlLocation = Nothing
     , _pjlPp = True
     , _pjlAccessToken = Nothing
     , _pjlUploadType = Nothing
@@ -145,6 +151,11 @@
   = lens _pjlUploadProtocol
       (\ s a -> s{_pjlUploadProtocol = a})
 
+-- | The location that contains this job.
+pjlLocation :: Lens' ProjectsJobsList (Maybe Text)
+pjlLocation
+  = lens _pjlLocation (\ s a -> s{_pjlLocation = a})
+
 -- | Pretty-print response.
 pjlPp :: Lens' ProjectsJobsList Bool
 pjlPp = lens _pjlPp (\ s a -> s{_pjlPp = a})
@@ -167,7 +178,8 @@
   = lens _pjlBearerToken
       (\ s a -> s{_pjlBearerToken = a})
 
--- | Level of information requested in response. Default is SUMMARY.
+-- | Level of information requested in response. Default is
+-- \`JOB_VIEW_SUMMARY\`.
 pjlView :: Lens' ProjectsJobsList (Maybe Text)
 pjlView = lens _pjlView (\ s a -> s{_pjlView = a})
 
@@ -207,6 +219,7 @@
                "https://www.googleapis.com/auth/userinfo.email"]
         requestClient ProjectsJobsList'{..}
           = go _pjlProjectId _pjlXgafv _pjlUploadProtocol
+              _pjlLocation
               (Just _pjlPp)
               _pjlAccessToken
               _pjlUploadType
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Messages/List.hs b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Messages/List.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Messages/List.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Messages/List.hs
@@ -36,6 +36,7 @@
     , pjmlXgafv
     , pjmlJobId
     , pjmlUploadProtocol
+    , pjmlLocation
     , pjmlStartTime
     , pjmlPp
     , pjmlAccessToken
@@ -63,18 +64,19 @@
                "messages" :>
                  QueryParam "$.xgafv" Text :>
                    QueryParam "upload_protocol" Text :>
-                     QueryParam "startTime" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "endTime" Text :>
-                                 QueryParam "minimumImportance" Text :>
-                                   QueryParam "pageToken" Text :>
-                                     QueryParam "pageSize" (Textual Int32) :>
-                                       QueryParam "callback" Text :>
-                                         QueryParam "alt" AltJSON :>
-                                           Get '[JSON] ListJobMessagesResponse
+                     QueryParam "location" Text :>
+                       QueryParam "startTime" Text :>
+                         QueryParam "pp" Bool :>
+                           QueryParam "access_token" Text :>
+                             QueryParam "uploadType" Text :>
+                               QueryParam "bearer_token" Text :>
+                                 QueryParam "endTime" Text :>
+                                   QueryParam "minimumImportance" Text :>
+                                     QueryParam "pageToken" Text :>
+                                       QueryParam "pageSize" (Textual Int32) :>
+                                         QueryParam "callback" Text :>
+                                           QueryParam "alt" AltJSON :>
+                                             Get '[JSON] ListJobMessagesResponse
 
 -- | Request the job status.
 --
@@ -83,6 +85,7 @@
     { _pjmlXgafv             :: !(Maybe Text)
     , _pjmlJobId             :: !Text
     , _pjmlUploadProtocol    :: !(Maybe Text)
+    , _pjmlLocation          :: !(Maybe Text)
     , _pjmlStartTime         :: !(Maybe Text)
     , _pjmlPp                :: !Bool
     , _pjmlAccessToken       :: !(Maybe Text)
@@ -106,6 +109,8 @@
 --
 -- * 'pjmlUploadProtocol'
 --
+-- * 'pjmlLocation'
+--
 -- * 'pjmlStartTime'
 --
 -- * 'pjmlPp'
@@ -136,6 +141,7 @@
     { _pjmlXgafv = Nothing
     , _pjmlJobId = pPjmlJobId_
     , _pjmlUploadProtocol = Nothing
+    , _pjmlLocation = Nothing
     , _pjmlStartTime = Nothing
     , _pjmlPp = True
     , _pjmlAccessToken = Nothing
@@ -165,6 +171,11 @@
   = lens _pjmlUploadProtocol
       (\ s a -> s{_pjmlUploadProtocol = a})
 
+-- | The location which contains the job specified by job_id.
+pjmlLocation :: Lens' ProjectsJobsMessagesList (Maybe Text)
+pjmlLocation
+  = lens _pjmlLocation (\ s a -> s{_pjmlLocation = a})
+
 -- | If specified, return only messages with timestamps >= start_time. The
 -- default is the job creation time (i.e. beginning of messages).
 pjmlStartTime :: Lens' ProjectsJobsMessagesList (Maybe Text)
@@ -241,6 +252,7 @@
         requestClient ProjectsJobsMessagesList'{..}
           = go _pjmlProjectId _pjmlJobId _pjmlXgafv
               _pjmlUploadProtocol
+              _pjmlLocation
               _pjmlStartTime
               (Just _pjmlPp)
               _pjmlAccessToken
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Update.hs b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Update.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Update.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Jobs/Update.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the state of an existing dataflow job.
+-- Updates the state of an existing Cloud Dataflow job.
 --
 -- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.jobs.update@.
 module Network.Google.Resource.Dataflow.Projects.Jobs.Update
@@ -36,6 +36,7 @@
     , pjuXgafv
     , pjuJobId
     , pjuUploadProtocol
+    , pjuLocation
     , pjuPp
     , pjuAccessToken
     , pjuUploadType
@@ -58,21 +59,23 @@
              Capture "jobId" Text :>
                QueryParam "$.xgafv" Text :>
                  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] Job :> Put '[JSON] Job
+                   QueryParam "location" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] Job :> Put '[JSON] Job
 
--- | Updates the state of an existing dataflow job.
+-- | Updates the state of an existing Cloud Dataflow job.
 --
 -- /See:/ 'projectsJobsUpdate' smart constructor.
 data ProjectsJobsUpdate = ProjectsJobsUpdate'
     { _pjuXgafv          :: !(Maybe Text)
     , _pjuJobId          :: !Text
     , _pjuUploadProtocol :: !(Maybe Text)
+    , _pjuLocation       :: !(Maybe Text)
     , _pjuPp             :: !Bool
     , _pjuAccessToken    :: !(Maybe Text)
     , _pjuUploadType     :: !(Maybe Text)
@@ -92,6 +95,8 @@
 --
 -- * 'pjuUploadProtocol'
 --
+-- * 'pjuLocation'
+--
 -- * 'pjuPp'
 --
 -- * 'pjuAccessToken'
@@ -115,6 +120,7 @@
     { _pjuXgafv = Nothing
     , _pjuJobId = pPjuJobId_
     , _pjuUploadProtocol = Nothing
+    , _pjuLocation = Nothing
     , _pjuPp = True
     , _pjuAccessToken = Nothing
     , _pjuUploadType = Nothing
@@ -128,7 +134,7 @@
 pjuXgafv :: Lens' ProjectsJobsUpdate (Maybe Text)
 pjuXgafv = lens _pjuXgafv (\ s a -> s{_pjuXgafv = a})
 
--- | Identifies a single job.
+-- | The job ID.
 pjuJobId :: Lens' ProjectsJobsUpdate Text
 pjuJobId = lens _pjuJobId (\ s a -> s{_pjuJobId = a})
 
@@ -138,6 +144,11 @@
   = lens _pjuUploadProtocol
       (\ s a -> s{_pjuUploadProtocol = a})
 
+-- | The location that contains this job.
+pjuLocation :: Lens' ProjectsJobsUpdate (Maybe Text)
+pjuLocation
+  = lens _pjuLocation (\ s a -> s{_pjuLocation = a})
+
 -- | Pretty-print response.
 pjuPp :: Lens' ProjectsJobsUpdate Bool
 pjuPp = lens _pjuPp (\ s a -> s{_pjuPp = a})
@@ -165,7 +176,7 @@
   = lens _pjuBearerToken
       (\ s a -> s{_pjuBearerToken = a})
 
--- | The project which owns the job.
+-- | The ID of the Cloud Platform project that the job belongs to.
 pjuProjectId :: Lens' ProjectsJobsUpdate Text
 pjuProjectId
   = lens _pjuProjectId (\ s a -> s{_pjuProjectId = a})
@@ -183,6 +194,7 @@
         requestClient ProjectsJobsUpdate'{..}
           = go _pjuProjectId _pjuJobId _pjuXgafv
               _pjuUploadProtocol
+              _pjuLocation
               (Just _pjuPp)
               _pjuAccessToken
               _pjuUploadType
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Create.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Create.hs
@@ -0,0 +1,226 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.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 a Cloud Dataflow job.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.create@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsCreate
+    , ProjectsLocationsJobsCreate
+
+    -- * Request Lenses
+    , pljcXgafv
+    , pljcUploadProtocol
+    , pljcLocation
+    , pljcPp
+    , pljcAccessToken
+    , pljcUploadType
+    , pljcPayload
+    , pljcBearerToken
+    , pljcView
+    , pljcProjectId
+    , pljcReplaceJobId
+    , pljcCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.create@ method which the
+-- 'ProjectsLocationsJobsCreate' request conforms to.
+type ProjectsLocationsJobsCreateResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 QueryParam "$.xgafv" Text :>
+                   QueryParam "upload_protocol" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "view" Text :>
+                               QueryParam "replaceJobId" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     ReqBody '[JSON] Job :> Post '[JSON] Job
+
+-- | Creates a Cloud Dataflow job.
+--
+-- /See:/ 'projectsLocationsJobsCreate' smart constructor.
+data ProjectsLocationsJobsCreate = ProjectsLocationsJobsCreate'
+    { _pljcXgafv          :: !(Maybe Text)
+    , _pljcUploadProtocol :: !(Maybe Text)
+    , _pljcLocation       :: !Text
+    , _pljcPp             :: !Bool
+    , _pljcAccessToken    :: !(Maybe Text)
+    , _pljcUploadType     :: !(Maybe Text)
+    , _pljcPayload        :: !Job
+    , _pljcBearerToken    :: !(Maybe Text)
+    , _pljcView           :: !(Maybe Text)
+    , _pljcProjectId      :: !Text
+    , _pljcReplaceJobId   :: !(Maybe Text)
+    , _pljcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljcXgafv'
+--
+-- * 'pljcUploadProtocol'
+--
+-- * 'pljcLocation'
+--
+-- * 'pljcPp'
+--
+-- * 'pljcAccessToken'
+--
+-- * 'pljcUploadType'
+--
+-- * 'pljcPayload'
+--
+-- * 'pljcBearerToken'
+--
+-- * 'pljcView'
+--
+-- * 'pljcProjectId'
+--
+-- * 'pljcReplaceJobId'
+--
+-- * 'pljcCallback'
+projectsLocationsJobsCreate
+    :: Text -- ^ 'pljcLocation'
+    -> Job -- ^ 'pljcPayload'
+    -> Text -- ^ 'pljcProjectId'
+    -> ProjectsLocationsJobsCreate
+projectsLocationsJobsCreate pPljcLocation_ pPljcPayload_ pPljcProjectId_ =
+    ProjectsLocationsJobsCreate'
+    { _pljcXgafv = Nothing
+    , _pljcUploadProtocol = Nothing
+    , _pljcLocation = pPljcLocation_
+    , _pljcPp = True
+    , _pljcAccessToken = Nothing
+    , _pljcUploadType = Nothing
+    , _pljcPayload = pPljcPayload_
+    , _pljcBearerToken = Nothing
+    , _pljcView = Nothing
+    , _pljcProjectId = pPljcProjectId_
+    , _pljcReplaceJobId = Nothing
+    , _pljcCallback = Nothing
+    }
+
+-- | V1 error format.
+pljcXgafv :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcXgafv
+  = lens _pljcXgafv (\ s a -> s{_pljcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljcUploadProtocol :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcUploadProtocol
+  = lens _pljcUploadProtocol
+      (\ s a -> s{_pljcUploadProtocol = a})
+
+-- | The location that contains this job.
+pljcLocation :: Lens' ProjectsLocationsJobsCreate Text
+pljcLocation
+  = lens _pljcLocation (\ s a -> s{_pljcLocation = a})
+
+-- | Pretty-print response.
+pljcPp :: Lens' ProjectsLocationsJobsCreate Bool
+pljcPp = lens _pljcPp (\ s a -> s{_pljcPp = a})
+
+-- | OAuth access token.
+pljcAccessToken :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcAccessToken
+  = lens _pljcAccessToken
+      (\ s a -> s{_pljcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljcUploadType :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcUploadType
+  = lens _pljcUploadType
+      (\ s a -> s{_pljcUploadType = a})
+
+-- | Multipart request metadata.
+pljcPayload :: Lens' ProjectsLocationsJobsCreate Job
+pljcPayload
+  = lens _pljcPayload (\ s a -> s{_pljcPayload = a})
+
+-- | OAuth bearer token.
+pljcBearerToken :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcBearerToken
+  = lens _pljcBearerToken
+      (\ s a -> s{_pljcBearerToken = a})
+
+-- | The level of information requested in response.
+pljcView :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcView = lens _pljcView (\ s a -> s{_pljcView = a})
+
+-- | The ID of the Cloud Platform project that the job belongs to.
+pljcProjectId :: Lens' ProjectsLocationsJobsCreate Text
+pljcProjectId
+  = lens _pljcProjectId
+      (\ s a -> s{_pljcProjectId = a})
+
+-- | Deprecated. This field is now in the Job message.
+pljcReplaceJobId :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcReplaceJobId
+  = lens _pljcReplaceJobId
+      (\ s a -> s{_pljcReplaceJobId = a})
+
+-- | JSONP
+pljcCallback :: Lens' ProjectsLocationsJobsCreate (Maybe Text)
+pljcCallback
+  = lens _pljcCallback (\ s a -> s{_pljcCallback = a})
+
+instance GoogleRequest ProjectsLocationsJobsCreate
+         where
+        type Rs ProjectsLocationsJobsCreate = Job
+        type Scopes ProjectsLocationsJobsCreate =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient ProjectsLocationsJobsCreate'{..}
+          = go _pljcProjectId _pljcLocation _pljcXgafv
+              _pljcUploadProtocol
+              (Just _pljcPp)
+              _pljcAccessToken
+              _pljcUploadType
+              _pljcBearerToken
+              _pljcView
+              _pljcReplaceJobId
+              _pljcCallback
+              (Just AltJSON)
+              _pljcPayload
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsJobsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Get.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Get.hs
@@ -0,0 +1,212 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.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)
+--
+-- Gets the state of the specified Cloud Dataflow job.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.get@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsGetResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsGet
+    , ProjectsLocationsJobsGet
+
+    -- * Request Lenses
+    , pljgXgafv
+    , pljgJobId
+    , pljgUploadProtocol
+    , pljgLocation
+    , pljgPp
+    , pljgAccessToken
+    , pljgUploadType
+    , pljgBearerToken
+    , pljgView
+    , pljgProjectId
+    , pljgCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.get@ method which the
+-- 'ProjectsLocationsJobsGet' request conforms to.
+type ProjectsLocationsJobsGetResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "pp" Bool :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "bearer_token" Text :>
+                               QueryParam "view" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :> Get '[JSON] Job
+
+-- | Gets the state of the specified Cloud Dataflow job.
+--
+-- /See:/ 'projectsLocationsJobsGet' smart constructor.
+data ProjectsLocationsJobsGet = ProjectsLocationsJobsGet'
+    { _pljgXgafv          :: !(Maybe Text)
+    , _pljgJobId          :: !Text
+    , _pljgUploadProtocol :: !(Maybe Text)
+    , _pljgLocation       :: !Text
+    , _pljgPp             :: !Bool
+    , _pljgAccessToken    :: !(Maybe Text)
+    , _pljgUploadType     :: !(Maybe Text)
+    , _pljgBearerToken    :: !(Maybe Text)
+    , _pljgView           :: !(Maybe Text)
+    , _pljgProjectId      :: !Text
+    , _pljgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljgXgafv'
+--
+-- * 'pljgJobId'
+--
+-- * 'pljgUploadProtocol'
+--
+-- * 'pljgLocation'
+--
+-- * 'pljgPp'
+--
+-- * 'pljgAccessToken'
+--
+-- * 'pljgUploadType'
+--
+-- * 'pljgBearerToken'
+--
+-- * 'pljgView'
+--
+-- * 'pljgProjectId'
+--
+-- * 'pljgCallback'
+projectsLocationsJobsGet
+    :: Text -- ^ 'pljgJobId'
+    -> Text -- ^ 'pljgLocation'
+    -> Text -- ^ 'pljgProjectId'
+    -> ProjectsLocationsJobsGet
+projectsLocationsJobsGet pPljgJobId_ pPljgLocation_ pPljgProjectId_ =
+    ProjectsLocationsJobsGet'
+    { _pljgXgafv = Nothing
+    , _pljgJobId = pPljgJobId_
+    , _pljgUploadProtocol = Nothing
+    , _pljgLocation = pPljgLocation_
+    , _pljgPp = True
+    , _pljgAccessToken = Nothing
+    , _pljgUploadType = Nothing
+    , _pljgBearerToken = Nothing
+    , _pljgView = Nothing
+    , _pljgProjectId = pPljgProjectId_
+    , _pljgCallback = Nothing
+    }
+
+-- | V1 error format.
+pljgXgafv :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgXgafv
+  = lens _pljgXgafv (\ s a -> s{_pljgXgafv = a})
+
+-- | The job ID.
+pljgJobId :: Lens' ProjectsLocationsJobsGet Text
+pljgJobId
+  = lens _pljgJobId (\ s a -> s{_pljgJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljgUploadProtocol :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgUploadProtocol
+  = lens _pljgUploadProtocol
+      (\ s a -> s{_pljgUploadProtocol = a})
+
+-- | The location that contains this job.
+pljgLocation :: Lens' ProjectsLocationsJobsGet Text
+pljgLocation
+  = lens _pljgLocation (\ s a -> s{_pljgLocation = a})
+
+-- | Pretty-print response.
+pljgPp :: Lens' ProjectsLocationsJobsGet Bool
+pljgPp = lens _pljgPp (\ s a -> s{_pljgPp = a})
+
+-- | OAuth access token.
+pljgAccessToken :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgAccessToken
+  = lens _pljgAccessToken
+      (\ s a -> s{_pljgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljgUploadType :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgUploadType
+  = lens _pljgUploadType
+      (\ s a -> s{_pljgUploadType = a})
+
+-- | OAuth bearer token.
+pljgBearerToken :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgBearerToken
+  = lens _pljgBearerToken
+      (\ s a -> s{_pljgBearerToken = a})
+
+-- | The level of information requested in response.
+pljgView :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgView = lens _pljgView (\ s a -> s{_pljgView = a})
+
+-- | The ID of the Cloud Platform project that the job belongs to.
+pljgProjectId :: Lens' ProjectsLocationsJobsGet Text
+pljgProjectId
+  = lens _pljgProjectId
+      (\ s a -> s{_pljgProjectId = a})
+
+-- | JSONP
+pljgCallback :: Lens' ProjectsLocationsJobsGet (Maybe Text)
+pljgCallback
+  = lens _pljgCallback (\ s a -> s{_pljgCallback = a})
+
+instance GoogleRequest ProjectsLocationsJobsGet where
+        type Rs ProjectsLocationsJobsGet = Job
+        type Scopes ProjectsLocationsJobsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient ProjectsLocationsJobsGet'{..}
+          = go _pljgProjectId _pljgLocation _pljgJobId
+              _pljgXgafv
+              _pljgUploadProtocol
+              (Just _pljgPp)
+              _pljgAccessToken
+              _pljgUploadType
+              _pljgBearerToken
+              _pljgView
+              _pljgCallback
+              (Just AltJSON)
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsJobsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/GetMetrics.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/GetMetrics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/GetMetrics.hs
@@ -0,0 +1,221 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.GetMetrics
+-- 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)
+--
+-- Request the job status.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.getMetrics@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.GetMetrics
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsGetMetricsResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsGetMetrics
+    , ProjectsLocationsJobsGetMetrics
+
+    -- * Request Lenses
+    , pljgmXgafv
+    , pljgmJobId
+    , pljgmUploadProtocol
+    , pljgmLocation
+    , pljgmStartTime
+    , pljgmPp
+    , pljgmAccessToken
+    , pljgmUploadType
+    , pljgmBearerToken
+    , pljgmProjectId
+    , pljgmCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.getMetrics@ method which the
+-- 'ProjectsLocationsJobsGetMetrics' request conforms to.
+type ProjectsLocationsJobsGetMetricsResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   "metrics" :>
+                     QueryParam "$.xgafv" Text :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "startTime" Text :>
+                           QueryParam "pp" Bool :>
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "bearer_token" Text :>
+                                   QueryParam "callback" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] JobMetrics
+
+-- | Request the job status.
+--
+-- /See:/ 'projectsLocationsJobsGetMetrics' smart constructor.
+data ProjectsLocationsJobsGetMetrics = ProjectsLocationsJobsGetMetrics'
+    { _pljgmXgafv          :: !(Maybe Text)
+    , _pljgmJobId          :: !Text
+    , _pljgmUploadProtocol :: !(Maybe Text)
+    , _pljgmLocation       :: !Text
+    , _pljgmStartTime      :: !(Maybe Text)
+    , _pljgmPp             :: !Bool
+    , _pljgmAccessToken    :: !(Maybe Text)
+    , _pljgmUploadType     :: !(Maybe Text)
+    , _pljgmBearerToken    :: !(Maybe Text)
+    , _pljgmProjectId      :: !Text
+    , _pljgmCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsGetMetrics' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljgmXgafv'
+--
+-- * 'pljgmJobId'
+--
+-- * 'pljgmUploadProtocol'
+--
+-- * 'pljgmLocation'
+--
+-- * 'pljgmStartTime'
+--
+-- * 'pljgmPp'
+--
+-- * 'pljgmAccessToken'
+--
+-- * 'pljgmUploadType'
+--
+-- * 'pljgmBearerToken'
+--
+-- * 'pljgmProjectId'
+--
+-- * 'pljgmCallback'
+projectsLocationsJobsGetMetrics
+    :: Text -- ^ 'pljgmJobId'
+    -> Text -- ^ 'pljgmLocation'
+    -> Text -- ^ 'pljgmProjectId'
+    -> ProjectsLocationsJobsGetMetrics
+projectsLocationsJobsGetMetrics pPljgmJobId_ pPljgmLocation_ pPljgmProjectId_ =
+    ProjectsLocationsJobsGetMetrics'
+    { _pljgmXgafv = Nothing
+    , _pljgmJobId = pPljgmJobId_
+    , _pljgmUploadProtocol = Nothing
+    , _pljgmLocation = pPljgmLocation_
+    , _pljgmStartTime = Nothing
+    , _pljgmPp = True
+    , _pljgmAccessToken = Nothing
+    , _pljgmUploadType = Nothing
+    , _pljgmBearerToken = Nothing
+    , _pljgmProjectId = pPljgmProjectId_
+    , _pljgmCallback = Nothing
+    }
+
+-- | V1 error format.
+pljgmXgafv :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmXgafv
+  = lens _pljgmXgafv (\ s a -> s{_pljgmXgafv = a})
+
+-- | The job to get messages for.
+pljgmJobId :: Lens' ProjectsLocationsJobsGetMetrics Text
+pljgmJobId
+  = lens _pljgmJobId (\ s a -> s{_pljgmJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljgmUploadProtocol :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmUploadProtocol
+  = lens _pljgmUploadProtocol
+      (\ s a -> s{_pljgmUploadProtocol = a})
+
+-- | The location which contains the job specified by job_id.
+pljgmLocation :: Lens' ProjectsLocationsJobsGetMetrics Text
+pljgmLocation
+  = lens _pljgmLocation
+      (\ s a -> s{_pljgmLocation = a})
+
+-- | Return only metric data that has changed since this time. Default is to
+-- return all information about all metrics for the job.
+pljgmStartTime :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmStartTime
+  = lens _pljgmStartTime
+      (\ s a -> s{_pljgmStartTime = a})
+
+-- | Pretty-print response.
+pljgmPp :: Lens' ProjectsLocationsJobsGetMetrics Bool
+pljgmPp = lens _pljgmPp (\ s a -> s{_pljgmPp = a})
+
+-- | OAuth access token.
+pljgmAccessToken :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmAccessToken
+  = lens _pljgmAccessToken
+      (\ s a -> s{_pljgmAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljgmUploadType :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmUploadType
+  = lens _pljgmUploadType
+      (\ s a -> s{_pljgmUploadType = a})
+
+-- | OAuth bearer token.
+pljgmBearerToken :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmBearerToken
+  = lens _pljgmBearerToken
+      (\ s a -> s{_pljgmBearerToken = a})
+
+-- | A project id.
+pljgmProjectId :: Lens' ProjectsLocationsJobsGetMetrics Text
+pljgmProjectId
+  = lens _pljgmProjectId
+      (\ s a -> s{_pljgmProjectId = a})
+
+-- | JSONP
+pljgmCallback :: Lens' ProjectsLocationsJobsGetMetrics (Maybe Text)
+pljgmCallback
+  = lens _pljgmCallback
+      (\ s a -> s{_pljgmCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsJobsGetMetrics where
+        type Rs ProjectsLocationsJobsGetMetrics = JobMetrics
+        type Scopes ProjectsLocationsJobsGetMetrics =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient ProjectsLocationsJobsGetMetrics'{..}
+          = go _pljgmProjectId _pljgmLocation _pljgmJobId
+              _pljgmXgafv
+              _pljgmUploadProtocol
+              _pljgmStartTime
+              (Just _pljgmPp)
+              _pljgmAccessToken
+              _pljgmUploadType
+              _pljgmBearerToken
+              _pljgmCallback
+              (Just AltJSON)
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsJobsGetMetricsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/List.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/List.hs
@@ -0,0 +1,243 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.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)
+--
+-- List the jobs of a project.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.list@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.List
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsListResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsList
+    , ProjectsLocationsJobsList
+
+    -- * Request Lenses
+    , pljlXgafv
+    , pljlUploadProtocol
+    , pljlLocation
+    , pljlPp
+    , pljlAccessToken
+    , pljlUploadType
+    , pljlBearerToken
+    , pljlView
+    , pljlFilter
+    , pljlPageToken
+    , pljlProjectId
+    , pljlPageSize
+    , pljlCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.list@ method which the
+-- 'ProjectsLocationsJobsList' request conforms to.
+type ProjectsLocationsJobsListResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 QueryParam "$.xgafv" Text :>
+                   QueryParam "upload_protocol" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "view" Text :>
+                               QueryParam "filter" Text :>
+                                 QueryParam "pageToken" Text :>
+                                   QueryParam "pageSize" (Textual Int32) :>
+                                     QueryParam "callback" Text :>
+                                       QueryParam "alt" AltJSON :>
+                                         Get '[JSON] ListJobsResponse
+
+-- | List the jobs of a project.
+--
+-- /See:/ 'projectsLocationsJobsList' smart constructor.
+data ProjectsLocationsJobsList = ProjectsLocationsJobsList'
+    { _pljlXgafv          :: !(Maybe Text)
+    , _pljlUploadProtocol :: !(Maybe Text)
+    , _pljlLocation       :: !Text
+    , _pljlPp             :: !Bool
+    , _pljlAccessToken    :: !(Maybe Text)
+    , _pljlUploadType     :: !(Maybe Text)
+    , _pljlBearerToken    :: !(Maybe Text)
+    , _pljlView           :: !(Maybe Text)
+    , _pljlFilter         :: !(Maybe Text)
+    , _pljlPageToken      :: !(Maybe Text)
+    , _pljlProjectId      :: !Text
+    , _pljlPageSize       :: !(Maybe (Textual Int32))
+    , _pljlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljlXgafv'
+--
+-- * 'pljlUploadProtocol'
+--
+-- * 'pljlLocation'
+--
+-- * 'pljlPp'
+--
+-- * 'pljlAccessToken'
+--
+-- * 'pljlUploadType'
+--
+-- * 'pljlBearerToken'
+--
+-- * 'pljlView'
+--
+-- * 'pljlFilter'
+--
+-- * 'pljlPageToken'
+--
+-- * 'pljlProjectId'
+--
+-- * 'pljlPageSize'
+--
+-- * 'pljlCallback'
+projectsLocationsJobsList
+    :: Text -- ^ 'pljlLocation'
+    -> Text -- ^ 'pljlProjectId'
+    -> ProjectsLocationsJobsList
+projectsLocationsJobsList pPljlLocation_ pPljlProjectId_ =
+    ProjectsLocationsJobsList'
+    { _pljlXgafv = Nothing
+    , _pljlUploadProtocol = Nothing
+    , _pljlLocation = pPljlLocation_
+    , _pljlPp = True
+    , _pljlAccessToken = Nothing
+    , _pljlUploadType = Nothing
+    , _pljlBearerToken = Nothing
+    , _pljlView = Nothing
+    , _pljlFilter = Nothing
+    , _pljlPageToken = Nothing
+    , _pljlProjectId = pPljlProjectId_
+    , _pljlPageSize = Nothing
+    , _pljlCallback = Nothing
+    }
+
+-- | V1 error format.
+pljlXgafv :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlXgafv
+  = lens _pljlXgafv (\ s a -> s{_pljlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljlUploadProtocol :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlUploadProtocol
+  = lens _pljlUploadProtocol
+      (\ s a -> s{_pljlUploadProtocol = a})
+
+-- | The location that contains this job.
+pljlLocation :: Lens' ProjectsLocationsJobsList Text
+pljlLocation
+  = lens _pljlLocation (\ s a -> s{_pljlLocation = a})
+
+-- | Pretty-print response.
+pljlPp :: Lens' ProjectsLocationsJobsList Bool
+pljlPp = lens _pljlPp (\ s a -> s{_pljlPp = a})
+
+-- | OAuth access token.
+pljlAccessToken :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlAccessToken
+  = lens _pljlAccessToken
+      (\ s a -> s{_pljlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljlUploadType :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlUploadType
+  = lens _pljlUploadType
+      (\ s a -> s{_pljlUploadType = a})
+
+-- | OAuth bearer token.
+pljlBearerToken :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlBearerToken
+  = lens _pljlBearerToken
+      (\ s a -> s{_pljlBearerToken = a})
+
+-- | Level of information requested in response. Default is
+-- \`JOB_VIEW_SUMMARY\`.
+pljlView :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlView = lens _pljlView (\ s a -> s{_pljlView = a})
+
+-- | The kind of filter to use.
+pljlFilter :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlFilter
+  = lens _pljlFilter (\ s a -> s{_pljlFilter = a})
+
+-- | Set this to the \'next_page_token\' field of a previous response to
+-- request additional results in a long list.
+pljlPageToken :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlPageToken
+  = lens _pljlPageToken
+      (\ s a -> s{_pljlPageToken = a})
+
+-- | The project which owns the jobs.
+pljlProjectId :: Lens' ProjectsLocationsJobsList Text
+pljlProjectId
+  = lens _pljlProjectId
+      (\ s a -> s{_pljlProjectId = a})
+
+-- | If there are many jobs, limit response to at most this many. The actual
+-- number of jobs returned will be the lesser of max_responses and an
+-- unspecified server-defined limit.
+pljlPageSize :: Lens' ProjectsLocationsJobsList (Maybe Int32)
+pljlPageSize
+  = lens _pljlPageSize (\ s a -> s{_pljlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+pljlCallback :: Lens' ProjectsLocationsJobsList (Maybe Text)
+pljlCallback
+  = lens _pljlCallback (\ s a -> s{_pljlCallback = a})
+
+instance GoogleRequest ProjectsLocationsJobsList
+         where
+        type Rs ProjectsLocationsJobsList = ListJobsResponse
+        type Scopes ProjectsLocationsJobsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient ProjectsLocationsJobsList'{..}
+          = go _pljlProjectId _pljlLocation _pljlXgafv
+              _pljlUploadProtocol
+              (Just _pljlPp)
+              _pljlAccessToken
+              _pljlUploadType
+              _pljlBearerToken
+              _pljlView
+              _pljlFilter
+              _pljlPageToken
+              _pljlPageSize
+              _pljlCallback
+              (Just AltJSON)
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsJobsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Messages/List.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Messages/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Messages/List.hs
@@ -0,0 +1,280 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.Messages.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)
+--
+-- Request the job status.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.messages.list@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Messages.List
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsMessagesListResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsMessagesList
+    , ProjectsLocationsJobsMessagesList
+
+    -- * Request Lenses
+    , pljmlXgafv
+    , pljmlJobId
+    , pljmlUploadProtocol
+    , pljmlLocation
+    , pljmlStartTime
+    , pljmlPp
+    , pljmlAccessToken
+    , pljmlUploadType
+    , pljmlBearerToken
+    , pljmlEndTime
+    , pljmlMinimumImportance
+    , pljmlPageToken
+    , pljmlProjectId
+    , pljmlPageSize
+    , pljmlCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.messages.list@ method which the
+-- 'ProjectsLocationsJobsMessagesList' request conforms to.
+type ProjectsLocationsJobsMessagesListResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   "messages" :>
+                     QueryParam "$.xgafv" Text :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "startTime" Text :>
+                           QueryParam "pp" Bool :>
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "bearer_token" Text :>
+                                   QueryParam "endTime" Text :>
+                                     QueryParam "minimumImportance" Text :>
+                                       QueryParam "pageToken" Text :>
+                                         QueryParam "pageSize" (Textual Int32)
+                                           :>
+                                           QueryParam "callback" Text :>
+                                             QueryParam "alt" AltJSON :>
+                                               Get '[JSON]
+                                                 ListJobMessagesResponse
+
+-- | Request the job status.
+--
+-- /See:/ 'projectsLocationsJobsMessagesList' smart constructor.
+data ProjectsLocationsJobsMessagesList = ProjectsLocationsJobsMessagesList'
+    { _pljmlXgafv             :: !(Maybe Text)
+    , _pljmlJobId             :: !Text
+    , _pljmlUploadProtocol    :: !(Maybe Text)
+    , _pljmlLocation          :: !Text
+    , _pljmlStartTime         :: !(Maybe Text)
+    , _pljmlPp                :: !Bool
+    , _pljmlAccessToken       :: !(Maybe Text)
+    , _pljmlUploadType        :: !(Maybe Text)
+    , _pljmlBearerToken       :: !(Maybe Text)
+    , _pljmlEndTime           :: !(Maybe Text)
+    , _pljmlMinimumImportance :: !(Maybe Text)
+    , _pljmlPageToken         :: !(Maybe Text)
+    , _pljmlProjectId         :: !Text
+    , _pljmlPageSize          :: !(Maybe (Textual Int32))
+    , _pljmlCallback          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsMessagesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljmlXgafv'
+--
+-- * 'pljmlJobId'
+--
+-- * 'pljmlUploadProtocol'
+--
+-- * 'pljmlLocation'
+--
+-- * 'pljmlStartTime'
+--
+-- * 'pljmlPp'
+--
+-- * 'pljmlAccessToken'
+--
+-- * 'pljmlUploadType'
+--
+-- * 'pljmlBearerToken'
+--
+-- * 'pljmlEndTime'
+--
+-- * 'pljmlMinimumImportance'
+--
+-- * 'pljmlPageToken'
+--
+-- * 'pljmlProjectId'
+--
+-- * 'pljmlPageSize'
+--
+-- * 'pljmlCallback'
+projectsLocationsJobsMessagesList
+    :: Text -- ^ 'pljmlJobId'
+    -> Text -- ^ 'pljmlLocation'
+    -> Text -- ^ 'pljmlProjectId'
+    -> ProjectsLocationsJobsMessagesList
+projectsLocationsJobsMessagesList pPljmlJobId_ pPljmlLocation_ pPljmlProjectId_ =
+    ProjectsLocationsJobsMessagesList'
+    { _pljmlXgafv = Nothing
+    , _pljmlJobId = pPljmlJobId_
+    , _pljmlUploadProtocol = Nothing
+    , _pljmlLocation = pPljmlLocation_
+    , _pljmlStartTime = Nothing
+    , _pljmlPp = True
+    , _pljmlAccessToken = Nothing
+    , _pljmlUploadType = Nothing
+    , _pljmlBearerToken = Nothing
+    , _pljmlEndTime = Nothing
+    , _pljmlMinimumImportance = Nothing
+    , _pljmlPageToken = Nothing
+    , _pljmlProjectId = pPljmlProjectId_
+    , _pljmlPageSize = Nothing
+    , _pljmlCallback = Nothing
+    }
+
+-- | V1 error format.
+pljmlXgafv :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlXgafv
+  = lens _pljmlXgafv (\ s a -> s{_pljmlXgafv = a})
+
+-- | The job to get messages about.
+pljmlJobId :: Lens' ProjectsLocationsJobsMessagesList Text
+pljmlJobId
+  = lens _pljmlJobId (\ s a -> s{_pljmlJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljmlUploadProtocol :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlUploadProtocol
+  = lens _pljmlUploadProtocol
+      (\ s a -> s{_pljmlUploadProtocol = a})
+
+-- | The location which contains the job specified by job_id.
+pljmlLocation :: Lens' ProjectsLocationsJobsMessagesList Text
+pljmlLocation
+  = lens _pljmlLocation
+      (\ s a -> s{_pljmlLocation = a})
+
+-- | If specified, return only messages with timestamps >= start_time. The
+-- default is the job creation time (i.e. beginning of messages).
+pljmlStartTime :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlStartTime
+  = lens _pljmlStartTime
+      (\ s a -> s{_pljmlStartTime = a})
+
+-- | Pretty-print response.
+pljmlPp :: Lens' ProjectsLocationsJobsMessagesList Bool
+pljmlPp = lens _pljmlPp (\ s a -> s{_pljmlPp = a})
+
+-- | OAuth access token.
+pljmlAccessToken :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlAccessToken
+  = lens _pljmlAccessToken
+      (\ s a -> s{_pljmlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljmlUploadType :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlUploadType
+  = lens _pljmlUploadType
+      (\ s a -> s{_pljmlUploadType = a})
+
+-- | OAuth bearer token.
+pljmlBearerToken :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlBearerToken
+  = lens _pljmlBearerToken
+      (\ s a -> s{_pljmlBearerToken = a})
+
+-- | Return only messages with timestamps \< end_time. The default is now
+-- (i.e. return up to the latest messages available).
+pljmlEndTime :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlEndTime
+  = lens _pljmlEndTime (\ s a -> s{_pljmlEndTime = a})
+
+-- | Filter to only get messages with importance >= level
+pljmlMinimumImportance :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlMinimumImportance
+  = lens _pljmlMinimumImportance
+      (\ s a -> s{_pljmlMinimumImportance = a})
+
+-- | If supplied, this should be the value of next_page_token returned by an
+-- earlier call. This will cause the next page of results to be returned.
+pljmlPageToken :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlPageToken
+  = lens _pljmlPageToken
+      (\ s a -> s{_pljmlPageToken = a})
+
+-- | A project id.
+pljmlProjectId :: Lens' ProjectsLocationsJobsMessagesList Text
+pljmlProjectId
+  = lens _pljmlProjectId
+      (\ s a -> s{_pljmlProjectId = a})
+
+-- | If specified, determines the maximum number of messages to return. If
+-- unspecified, the service may choose an appropriate default, or may
+-- return an arbitrarily large number of results.
+pljmlPageSize :: Lens' ProjectsLocationsJobsMessagesList (Maybe Int32)
+pljmlPageSize
+  = lens _pljmlPageSize
+      (\ s a -> s{_pljmlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+pljmlCallback :: Lens' ProjectsLocationsJobsMessagesList (Maybe Text)
+pljmlCallback
+  = lens _pljmlCallback
+      (\ s a -> s{_pljmlCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsJobsMessagesList where
+        type Rs ProjectsLocationsJobsMessagesList =
+             ListJobMessagesResponse
+        type Scopes ProjectsLocationsJobsMessagesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient ProjectsLocationsJobsMessagesList'{..}
+          = go _pljmlProjectId _pljmlLocation _pljmlJobId
+              _pljmlXgafv
+              _pljmlUploadProtocol
+              _pljmlStartTime
+              (Just _pljmlPp)
+              _pljmlAccessToken
+              _pljmlUploadType
+              _pljmlBearerToken
+              _pljmlEndTime
+              _pljmlMinimumImportance
+              _pljmlPageToken
+              _pljmlPageSize
+              _pljmlCallback
+              (Just AltJSON)
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsJobsMessagesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Update.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/Update.hs
@@ -0,0 +1,215 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the state of an existing Cloud Dataflow job.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.update@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Update
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsUpdateResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsUpdate
+    , ProjectsLocationsJobsUpdate
+
+    -- * Request Lenses
+    , pljuXgafv
+    , pljuJobId
+    , pljuUploadProtocol
+    , pljuLocation
+    , pljuPp
+    , pljuAccessToken
+    , pljuUploadType
+    , pljuPayload
+    , pljuBearerToken
+    , pljuProjectId
+    , pljuCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.update@ method which the
+-- 'ProjectsLocationsJobsUpdate' request conforms to.
+type ProjectsLocationsJobsUpdateResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     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] Job :> Put '[JSON] Job
+
+-- | Updates the state of an existing Cloud Dataflow job.
+--
+-- /See:/ 'projectsLocationsJobsUpdate' smart constructor.
+data ProjectsLocationsJobsUpdate = ProjectsLocationsJobsUpdate'
+    { _pljuXgafv          :: !(Maybe Text)
+    , _pljuJobId          :: !Text
+    , _pljuUploadProtocol :: !(Maybe Text)
+    , _pljuLocation       :: !Text
+    , _pljuPp             :: !Bool
+    , _pljuAccessToken    :: !(Maybe Text)
+    , _pljuUploadType     :: !(Maybe Text)
+    , _pljuPayload        :: !Job
+    , _pljuBearerToken    :: !(Maybe Text)
+    , _pljuProjectId      :: !Text
+    , _pljuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljuXgafv'
+--
+-- * 'pljuJobId'
+--
+-- * 'pljuUploadProtocol'
+--
+-- * 'pljuLocation'
+--
+-- * 'pljuPp'
+--
+-- * 'pljuAccessToken'
+--
+-- * 'pljuUploadType'
+--
+-- * 'pljuPayload'
+--
+-- * 'pljuBearerToken'
+--
+-- * 'pljuProjectId'
+--
+-- * 'pljuCallback'
+projectsLocationsJobsUpdate
+    :: Text -- ^ 'pljuJobId'
+    -> Text -- ^ 'pljuLocation'
+    -> Job -- ^ 'pljuPayload'
+    -> Text -- ^ 'pljuProjectId'
+    -> ProjectsLocationsJobsUpdate
+projectsLocationsJobsUpdate pPljuJobId_ pPljuLocation_ pPljuPayload_ pPljuProjectId_ =
+    ProjectsLocationsJobsUpdate'
+    { _pljuXgafv = Nothing
+    , _pljuJobId = pPljuJobId_
+    , _pljuUploadProtocol = Nothing
+    , _pljuLocation = pPljuLocation_
+    , _pljuPp = True
+    , _pljuAccessToken = Nothing
+    , _pljuUploadType = Nothing
+    , _pljuPayload = pPljuPayload_
+    , _pljuBearerToken = Nothing
+    , _pljuProjectId = pPljuProjectId_
+    , _pljuCallback = Nothing
+    }
+
+-- | V1 error format.
+pljuXgafv :: Lens' ProjectsLocationsJobsUpdate (Maybe Text)
+pljuXgafv
+  = lens _pljuXgafv (\ s a -> s{_pljuXgafv = a})
+
+-- | The job ID.
+pljuJobId :: Lens' ProjectsLocationsJobsUpdate Text
+pljuJobId
+  = lens _pljuJobId (\ s a -> s{_pljuJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljuUploadProtocol :: Lens' ProjectsLocationsJobsUpdate (Maybe Text)
+pljuUploadProtocol
+  = lens _pljuUploadProtocol
+      (\ s a -> s{_pljuUploadProtocol = a})
+
+-- | The location that contains this job.
+pljuLocation :: Lens' ProjectsLocationsJobsUpdate Text
+pljuLocation
+  = lens _pljuLocation (\ s a -> s{_pljuLocation = a})
+
+-- | Pretty-print response.
+pljuPp :: Lens' ProjectsLocationsJobsUpdate Bool
+pljuPp = lens _pljuPp (\ s a -> s{_pljuPp = a})
+
+-- | OAuth access token.
+pljuAccessToken :: Lens' ProjectsLocationsJobsUpdate (Maybe Text)
+pljuAccessToken
+  = lens _pljuAccessToken
+      (\ s a -> s{_pljuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljuUploadType :: Lens' ProjectsLocationsJobsUpdate (Maybe Text)
+pljuUploadType
+  = lens _pljuUploadType
+      (\ s a -> s{_pljuUploadType = a})
+
+-- | Multipart request metadata.
+pljuPayload :: Lens' ProjectsLocationsJobsUpdate Job
+pljuPayload
+  = lens _pljuPayload (\ s a -> s{_pljuPayload = a})
+
+-- | OAuth bearer token.
+pljuBearerToken :: Lens' ProjectsLocationsJobsUpdate (Maybe Text)
+pljuBearerToken
+  = lens _pljuBearerToken
+      (\ s a -> s{_pljuBearerToken = a})
+
+-- | The ID of the Cloud Platform project that the job belongs to.
+pljuProjectId :: Lens' ProjectsLocationsJobsUpdate Text
+pljuProjectId
+  = lens _pljuProjectId
+      (\ s a -> s{_pljuProjectId = a})
+
+-- | JSONP
+pljuCallback :: Lens' ProjectsLocationsJobsUpdate (Maybe Text)
+pljuCallback
+  = lens _pljuCallback (\ s a -> s{_pljuCallback = a})
+
+instance GoogleRequest ProjectsLocationsJobsUpdate
+         where
+        type Rs ProjectsLocationsJobsUpdate = Job
+        type Scopes ProjectsLocationsJobsUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient ProjectsLocationsJobsUpdate'{..}
+          = go _pljuProjectId _pljuLocation _pljuJobId
+              _pljuXgafv
+              _pljuUploadProtocol
+              (Just _pljuPp)
+              _pljuAccessToken
+              _pljuUploadType
+              _pljuBearerToken
+              _pljuCallback
+              (Just AltJSON)
+              _pljuPayload
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsJobsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/WorkItems/Lease.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/WorkItems/Lease.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/WorkItems/Lease.hs
@@ -0,0 +1,223 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.WorkItems.Lease
+-- 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)
+--
+-- Leases a dataflow WorkItem to run.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.workItems.lease@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.Lease
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsWorkItemsLeaseResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsWorkItemsLease
+    , ProjectsLocationsJobsWorkItemsLease
+
+    -- * Request Lenses
+    , pljwilXgafv
+    , pljwilJobId
+    , pljwilUploadProtocol
+    , pljwilLocation
+    , pljwilPp
+    , pljwilAccessToken
+    , pljwilUploadType
+    , pljwilPayload
+    , pljwilBearerToken
+    , pljwilProjectId
+    , pljwilCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.workItems.lease@ method which the
+-- 'ProjectsLocationsJobsWorkItemsLease' request conforms to.
+type ProjectsLocationsJobsWorkItemsLeaseResource =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   "workItems:lease" :>
+                     QueryParam "$.xgafv" Text :>
+                       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] LeaseWorkItemRequest :>
+                                       Post '[JSON] LeaseWorkItemResponse
+
+-- | Leases a dataflow WorkItem to run.
+--
+-- /See:/ 'projectsLocationsJobsWorkItemsLease' smart constructor.
+data ProjectsLocationsJobsWorkItemsLease = ProjectsLocationsJobsWorkItemsLease'
+    { _pljwilXgafv          :: !(Maybe Text)
+    , _pljwilJobId          :: !Text
+    , _pljwilUploadProtocol :: !(Maybe Text)
+    , _pljwilLocation       :: !Text
+    , _pljwilPp             :: !Bool
+    , _pljwilAccessToken    :: !(Maybe Text)
+    , _pljwilUploadType     :: !(Maybe Text)
+    , _pljwilPayload        :: !LeaseWorkItemRequest
+    , _pljwilBearerToken    :: !(Maybe Text)
+    , _pljwilProjectId      :: !Text
+    , _pljwilCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsWorkItemsLease' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljwilXgafv'
+--
+-- * 'pljwilJobId'
+--
+-- * 'pljwilUploadProtocol'
+--
+-- * 'pljwilLocation'
+--
+-- * 'pljwilPp'
+--
+-- * 'pljwilAccessToken'
+--
+-- * 'pljwilUploadType'
+--
+-- * 'pljwilPayload'
+--
+-- * 'pljwilBearerToken'
+--
+-- * 'pljwilProjectId'
+--
+-- * 'pljwilCallback'
+projectsLocationsJobsWorkItemsLease
+    :: Text -- ^ 'pljwilJobId'
+    -> Text -- ^ 'pljwilLocation'
+    -> LeaseWorkItemRequest -- ^ 'pljwilPayload'
+    -> Text -- ^ 'pljwilProjectId'
+    -> ProjectsLocationsJobsWorkItemsLease
+projectsLocationsJobsWorkItemsLease pPljwilJobId_ pPljwilLocation_ pPljwilPayload_ pPljwilProjectId_ =
+    ProjectsLocationsJobsWorkItemsLease'
+    { _pljwilXgafv = Nothing
+    , _pljwilJobId = pPljwilJobId_
+    , _pljwilUploadProtocol = Nothing
+    , _pljwilLocation = pPljwilLocation_
+    , _pljwilPp = True
+    , _pljwilAccessToken = Nothing
+    , _pljwilUploadType = Nothing
+    , _pljwilPayload = pPljwilPayload_
+    , _pljwilBearerToken = Nothing
+    , _pljwilProjectId = pPljwilProjectId_
+    , _pljwilCallback = Nothing
+    }
+
+-- | V1 error format.
+pljwilXgafv :: Lens' ProjectsLocationsJobsWorkItemsLease (Maybe Text)
+pljwilXgafv
+  = lens _pljwilXgafv (\ s a -> s{_pljwilXgafv = a})
+
+-- | Identifies the workflow job this worker belongs to.
+pljwilJobId :: Lens' ProjectsLocationsJobsWorkItemsLease Text
+pljwilJobId
+  = lens _pljwilJobId (\ s a -> s{_pljwilJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljwilUploadProtocol :: Lens' ProjectsLocationsJobsWorkItemsLease (Maybe Text)
+pljwilUploadProtocol
+  = lens _pljwilUploadProtocol
+      (\ s a -> s{_pljwilUploadProtocol = a})
+
+-- | The location which contains the WorkItem\'s job.
+pljwilLocation :: Lens' ProjectsLocationsJobsWorkItemsLease Text
+pljwilLocation
+  = lens _pljwilLocation
+      (\ s a -> s{_pljwilLocation = a})
+
+-- | Pretty-print response.
+pljwilPp :: Lens' ProjectsLocationsJobsWorkItemsLease Bool
+pljwilPp = lens _pljwilPp (\ s a -> s{_pljwilPp = a})
+
+-- | OAuth access token.
+pljwilAccessToken :: Lens' ProjectsLocationsJobsWorkItemsLease (Maybe Text)
+pljwilAccessToken
+  = lens _pljwilAccessToken
+      (\ s a -> s{_pljwilAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljwilUploadType :: Lens' ProjectsLocationsJobsWorkItemsLease (Maybe Text)
+pljwilUploadType
+  = lens _pljwilUploadType
+      (\ s a -> s{_pljwilUploadType = a})
+
+-- | Multipart request metadata.
+pljwilPayload :: Lens' ProjectsLocationsJobsWorkItemsLease LeaseWorkItemRequest
+pljwilPayload
+  = lens _pljwilPayload
+      (\ s a -> s{_pljwilPayload = a})
+
+-- | OAuth bearer token.
+pljwilBearerToken :: Lens' ProjectsLocationsJobsWorkItemsLease (Maybe Text)
+pljwilBearerToken
+  = lens _pljwilBearerToken
+      (\ s a -> s{_pljwilBearerToken = a})
+
+-- | Identifies the project this worker belongs to.
+pljwilProjectId :: Lens' ProjectsLocationsJobsWorkItemsLease Text
+pljwilProjectId
+  = lens _pljwilProjectId
+      (\ s a -> s{_pljwilProjectId = a})
+
+-- | JSONP
+pljwilCallback :: Lens' ProjectsLocationsJobsWorkItemsLease (Maybe Text)
+pljwilCallback
+  = lens _pljwilCallback
+      (\ s a -> s{_pljwilCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsJobsWorkItemsLease where
+        type Rs ProjectsLocationsJobsWorkItemsLease =
+             LeaseWorkItemResponse
+        type Scopes ProjectsLocationsJobsWorkItemsLease =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient
+          ProjectsLocationsJobsWorkItemsLease'{..}
+          = go _pljwilProjectId _pljwilLocation _pljwilJobId
+              _pljwilXgafv
+              _pljwilUploadProtocol
+              (Just _pljwilPp)
+              _pljwilAccessToken
+              _pljwilUploadType
+              _pljwilBearerToken
+              _pljwilCallback
+              (Just AltJSON)
+              _pljwilPayload
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsJobsWorkItemsLeaseResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/WorkItems/ReportStatus.hs b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/WorkItems/ReportStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Locations/Jobs/WorkItems/ReportStatus.hs
@@ -0,0 +1,229 @@
+{-# 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.Dataflow.Projects.Locations.Jobs.WorkItems.ReportStatus
+-- 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)
+--
+-- Reports the status of dataflow WorkItems leased by a worker.
+--
+-- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.locations.jobs.workItems.reportStatus@.
+module Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.ReportStatus
+    (
+    -- * REST Resource
+      ProjectsLocationsJobsWorkItemsReportStatusResource
+
+    -- * Creating a Request
+    , projectsLocationsJobsWorkItemsReportStatus
+    , ProjectsLocationsJobsWorkItemsReportStatus
+
+    -- * Request Lenses
+    , pljwirsXgafv
+    , pljwirsJobId
+    , pljwirsUploadProtocol
+    , pljwirsLocation
+    , pljwirsPp
+    , pljwirsAccessToken
+    , pljwirsUploadType
+    , pljwirsPayload
+    , pljwirsBearerToken
+    , pljwirsProjectId
+    , pljwirsCallback
+    ) where
+
+import           Network.Google.Dataflow.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @dataflow.projects.locations.jobs.workItems.reportStatus@ method which the
+-- 'ProjectsLocationsJobsWorkItemsReportStatus' request conforms to.
+type ProjectsLocationsJobsWorkItemsReportStatusResource
+     =
+     "v1b3" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "locations" :>
+             Capture "location" Text :>
+               "jobs" :>
+                 Capture "jobId" Text :>
+                   "workItems:reportStatus" :>
+                     QueryParam "$.xgafv" Text :>
+                       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] ReportWorkItemStatusRequest
+                                       :>
+                                       Post '[JSON] ReportWorkItemStatusResponse
+
+-- | Reports the status of dataflow WorkItems leased by a worker.
+--
+-- /See:/ 'projectsLocationsJobsWorkItemsReportStatus' smart constructor.
+data ProjectsLocationsJobsWorkItemsReportStatus = ProjectsLocationsJobsWorkItemsReportStatus'
+    { _pljwirsXgafv          :: !(Maybe Text)
+    , _pljwirsJobId          :: !Text
+    , _pljwirsUploadProtocol :: !(Maybe Text)
+    , _pljwirsLocation       :: !Text
+    , _pljwirsPp             :: !Bool
+    , _pljwirsAccessToken    :: !(Maybe Text)
+    , _pljwirsUploadType     :: !(Maybe Text)
+    , _pljwirsPayload        :: !ReportWorkItemStatusRequest
+    , _pljwirsBearerToken    :: !(Maybe Text)
+    , _pljwirsProjectId      :: !Text
+    , _pljwirsCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsJobsWorkItemsReportStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pljwirsXgafv'
+--
+-- * 'pljwirsJobId'
+--
+-- * 'pljwirsUploadProtocol'
+--
+-- * 'pljwirsLocation'
+--
+-- * 'pljwirsPp'
+--
+-- * 'pljwirsAccessToken'
+--
+-- * 'pljwirsUploadType'
+--
+-- * 'pljwirsPayload'
+--
+-- * 'pljwirsBearerToken'
+--
+-- * 'pljwirsProjectId'
+--
+-- * 'pljwirsCallback'
+projectsLocationsJobsWorkItemsReportStatus
+    :: Text -- ^ 'pljwirsJobId'
+    -> Text -- ^ 'pljwirsLocation'
+    -> ReportWorkItemStatusRequest -- ^ 'pljwirsPayload'
+    -> Text -- ^ 'pljwirsProjectId'
+    -> ProjectsLocationsJobsWorkItemsReportStatus
+projectsLocationsJobsWorkItemsReportStatus pPljwirsJobId_ pPljwirsLocation_ pPljwirsPayload_ pPljwirsProjectId_ =
+    ProjectsLocationsJobsWorkItemsReportStatus'
+    { _pljwirsXgafv = Nothing
+    , _pljwirsJobId = pPljwirsJobId_
+    , _pljwirsUploadProtocol = Nothing
+    , _pljwirsLocation = pPljwirsLocation_
+    , _pljwirsPp = True
+    , _pljwirsAccessToken = Nothing
+    , _pljwirsUploadType = Nothing
+    , _pljwirsPayload = pPljwirsPayload_
+    , _pljwirsBearerToken = Nothing
+    , _pljwirsProjectId = pPljwirsProjectId_
+    , _pljwirsCallback = Nothing
+    }
+
+-- | V1 error format.
+pljwirsXgafv :: Lens' ProjectsLocationsJobsWorkItemsReportStatus (Maybe Text)
+pljwirsXgafv
+  = lens _pljwirsXgafv (\ s a -> s{_pljwirsXgafv = a})
+
+-- | The job which the WorkItem is part of.
+pljwirsJobId :: Lens' ProjectsLocationsJobsWorkItemsReportStatus Text
+pljwirsJobId
+  = lens _pljwirsJobId (\ s a -> s{_pljwirsJobId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pljwirsUploadProtocol :: Lens' ProjectsLocationsJobsWorkItemsReportStatus (Maybe Text)
+pljwirsUploadProtocol
+  = lens _pljwirsUploadProtocol
+      (\ s a -> s{_pljwirsUploadProtocol = a})
+
+-- | The location which contains the WorkItem\'s job.
+pljwirsLocation :: Lens' ProjectsLocationsJobsWorkItemsReportStatus Text
+pljwirsLocation
+  = lens _pljwirsLocation
+      (\ s a -> s{_pljwirsLocation = a})
+
+-- | Pretty-print response.
+pljwirsPp :: Lens' ProjectsLocationsJobsWorkItemsReportStatus Bool
+pljwirsPp
+  = lens _pljwirsPp (\ s a -> s{_pljwirsPp = a})
+
+-- | OAuth access token.
+pljwirsAccessToken :: Lens' ProjectsLocationsJobsWorkItemsReportStatus (Maybe Text)
+pljwirsAccessToken
+  = lens _pljwirsAccessToken
+      (\ s a -> s{_pljwirsAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pljwirsUploadType :: Lens' ProjectsLocationsJobsWorkItemsReportStatus (Maybe Text)
+pljwirsUploadType
+  = lens _pljwirsUploadType
+      (\ s a -> s{_pljwirsUploadType = a})
+
+-- | Multipart request metadata.
+pljwirsPayload :: Lens' ProjectsLocationsJobsWorkItemsReportStatus ReportWorkItemStatusRequest
+pljwirsPayload
+  = lens _pljwirsPayload
+      (\ s a -> s{_pljwirsPayload = a})
+
+-- | OAuth bearer token.
+pljwirsBearerToken :: Lens' ProjectsLocationsJobsWorkItemsReportStatus (Maybe Text)
+pljwirsBearerToken
+  = lens _pljwirsBearerToken
+      (\ s a -> s{_pljwirsBearerToken = a})
+
+-- | The project which owns the WorkItem\'s job.
+pljwirsProjectId :: Lens' ProjectsLocationsJobsWorkItemsReportStatus Text
+pljwirsProjectId
+  = lens _pljwirsProjectId
+      (\ s a -> s{_pljwirsProjectId = a})
+
+-- | JSONP
+pljwirsCallback :: Lens' ProjectsLocationsJobsWorkItemsReportStatus (Maybe Text)
+pljwirsCallback
+  = lens _pljwirsCallback
+      (\ s a -> s{_pljwirsCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsJobsWorkItemsReportStatus where
+        type Rs ProjectsLocationsJobsWorkItemsReportStatus =
+             ReportWorkItemStatusResponse
+        type Scopes
+               ProjectsLocationsJobsWorkItemsReportStatus
+             =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/userinfo.email"]
+        requestClient
+          ProjectsLocationsJobsWorkItemsReportStatus'{..}
+          = go _pljwirsProjectId _pljwirsLocation _pljwirsJobId
+              _pljwirsXgafv
+              _pljwirsUploadProtocol
+              (Just _pljwirsPp)
+              _pljwirsAccessToken
+              _pljwirsUploadType
+              _pljwirsBearerToken
+              _pljwirsCallback
+              (Just AltJSON)
+              _pljwirsPayload
+              dataflowService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsJobsWorkItemsReportStatusResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Dataflow/Projects/Templates/Create.hs b/gen/Network/Google/Resource/Dataflow/Projects/Templates/Create.hs
--- a/gen/Network/Google/Resource/Dataflow/Projects/Templates/Create.hs
+++ b/gen/Network/Google/Resource/Dataflow/Projects/Templates/Create.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a dataflow job from a template.
+-- Creates a Cloud Dataflow job from a template.
 --
 -- /See:/ <https://cloud.google.com/dataflow Google Dataflow API Reference> for @dataflow.projects.templates.create@.
 module Network.Google.Resource.Dataflow.Projects.Templates.Create
@@ -65,7 +65,7 @@
                              ReqBody '[JSON] CreateJobFromTemplateRequest :>
                                Post '[JSON] Job
 
--- | Creates a dataflow job from a template.
+-- | Creates a Cloud Dataflow job from a template.
 --
 -- /See:/ 'projectsTemplatesCreate' smart constructor.
 data ProjectsTemplatesCreate = ProjectsTemplatesCreate'
@@ -155,7 +155,7 @@
   = lens _ptcBearerToken
       (\ s a -> s{_ptcBearerToken = a})
 
--- | The project which owns the job.
+-- | Required. The ID of the Cloud Platform project that the job belongs to.
 ptcProjectId :: Lens' ProjectsTemplatesCreate Text
 ptcProjectId
   = lens _ptcProjectId (\ s a -> s{_ptcProjectId = a})
diff --git a/gogol-dataflow.cabal b/gogol-dataflow.cabal
--- a/gogol-dataflow.cabal
+++ b/gogol-dataflow.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-dataflow
-version:               0.1.1
+version:               0.2.0
 synopsis:              Google Dataflow 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:
-    Develops and executes data processing patterns like ETL, batch
-    computation, and continuous computation.
+    Manages Google Cloud Dataflow projects 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!
@@ -46,6 +45,14 @@
         , Network.Google.Resource.Dataflow.Projects.Jobs.Update
         , Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.Lease
         , Network.Google.Resource.Dataflow.Projects.Jobs.WorkItems.ReportStatus
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Create
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Get
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.GetMetrics
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.List
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Messages.List
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.Update
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.Lease
+        , Network.Google.Resource.Dataflow.Projects.Locations.Jobs.WorkItems.ReportStatus
         , Network.Google.Resource.Dataflow.Projects.Templates.Create
         , Network.Google.Resource.Dataflow.Projects.WorkerMessages
 
@@ -54,5 +61,5 @@
         , Network.Google.Dataflow.Types.Sum
 
     build-depends:
-          gogol-core == 0.1.1.*
+          gogol-core == 0.2.0.*
         , base       >= 4.7 && < 5
