"""Generated client library for dataflow version v1b3."""
# NOTE: This file is autogenerated and should not be edited by hand.

from __future__ import absolute_import

from apitools.base.py import base_api
from . import dataflow_v1b3_messages as messages


class DataflowV1b3(base_api.BaseApiClient):
  """Generated client library for service dataflow version v1b3."""

  MESSAGES_MODULE = messages
  BASE_URL = 'https://dataflow.googleapis.com/'
  MTLS_BASE_URL = 'https://dataflow.mtls.googleapis.com/'

  _PACKAGE = 'dataflow'
  _SCOPES = [
      'https://www.googleapis.com/auth/cloud-platform',
      'https://www.googleapis.com/auth/compute',
      'https://www.googleapis.com/auth/compute.readonly',
      'https://www.googleapis.com/auth/userinfo.email'
  ]
  _VERSION = 'v1b3'
  _CLIENT_ID = '1042881264118.apps.googleusercontent.com'
  _CLIENT_SECRET = 'x_Tw5K8nnjoRAqULM9PFAC2b'
  _USER_AGENT = 'x_Tw5K8nnjoRAqULM9PFAC2b'
  _CLIENT_CLASS_NAME = 'DataflowV1b3'
  _URL_VERSION = 'v1b3'
  _API_KEY = None

  def __init__(
      self,
      url='',
      credentials=None,
      get_credentials=True,
      http=None,
      model=None,
      log_request=False,
      log_response=False,
      credentials_args=None,
      default_global_params=None,
      additional_http_headers=None,
      response_encoding=None):
    """Create a new dataflow handle."""
    url = url or self.BASE_URL
    super(DataflowV1b3, self).__init__(
        url,
        credentials=credentials,
        get_credentials=get_credentials,
        http=http,
        model=model,
        log_request=log_request,
        log_response=log_response,
        credentials_args=credentials_args,
        default_global_params=default_global_params,
        additional_http_headers=additional_http_headers,
        response_encoding=response_encoding)
    self.projects_jobs_debug = self.ProjectsJobsDebugService(self)
    self.projects_jobs_messages = self.ProjectsJobsMessagesService(self)
    self.projects_jobs_workItems = self.ProjectsJobsWorkItemsService(self)
    self.projects_jobs = self.ProjectsJobsService(self)
    self.projects_locations_flexTemplates = self.ProjectsLocationsFlexTemplatesService(
        self)
    self.projects_locations_jobs_debug = self.ProjectsLocationsJobsDebugService(
        self)
    self.projects_locations_jobs_messages = self.ProjectsLocationsJobsMessagesService(
        self)
    self.projects_locations_jobs_snapshots = self.ProjectsLocationsJobsSnapshotsService(
        self)
    self.projects_locations_jobs_stages = self.ProjectsLocationsJobsStagesService(
        self)
    self.projects_locations_jobs_workItems = self.ProjectsLocationsJobsWorkItemsService(
        self)
    self.projects_locations_jobs = self.ProjectsLocationsJobsService(self)
    self.projects_locations_snapshots = self.ProjectsLocationsSnapshotsService(
        self)
    self.projects_locations_sql = self.ProjectsLocationsSqlService(self)
    self.projects_locations_templates = self.ProjectsLocationsTemplatesService(
        self)
    self.projects_locations = self.ProjectsLocationsService(self)
    self.projects_snapshots = self.ProjectsSnapshotsService(self)
    self.projects_templates = self.ProjectsTemplatesService(self)
    self.projects = self.ProjectsService(self)

  class ProjectsJobsDebugService(base_api.BaseApiService):
    """Service class for the projects_jobs_debug resource."""

    _NAME = 'projects_jobs_debug'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsJobsDebugService, self).__init__(client)
      self._upload_configs = {}

    def GetConfig(self, request, global_params=None):
      r"""Get encoded debug configuration for component. Not cacheable.

      Args:
        request: (DataflowProjectsJobsDebugGetConfigRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (GetDebugConfigResponse) The response message.
      """
      config = self.GetMethodConfig('GetConfig')
      return self._RunMethod(config, request, global_params=global_params)

    GetConfig.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.jobs.debug.getConfig',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=[],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}/debug/getConfig',
        request_field='getDebugConfigRequest',
        request_type_name='DataflowProjectsJobsDebugGetConfigRequest',
        response_type_name='GetDebugConfigResponse',
        supports_download=False,
    )

    def SendCapture(self, request, global_params=None):
      r"""Send encoded debug capture data for component.

      Args:
        request: (DataflowProjectsJobsDebugSendCaptureRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (SendDebugCaptureResponse) The response message.
      """
      config = self.GetMethodConfig('SendCapture')
      return self._RunMethod(config, request, global_params=global_params)

    SendCapture.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.jobs.debug.sendCapture',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/jobs/{jobId}/debug/sendCapture',
        request_field='sendDebugCaptureRequest',
        request_type_name='DataflowProjectsJobsDebugSendCaptureRequest',
        response_type_name='SendDebugCaptureResponse',
        supports_download=False,
    )

  class ProjectsJobsMessagesService(base_api.BaseApiService):
    """Service class for the projects_jobs_messages resource."""

    _NAME = 'projects_jobs_messages'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsJobsMessagesService, self).__init__(client)
      self._upload_configs = {}

    def List(self, request, global_params=None):
      r"""Request the job status. To request the status of a job, we recommend using `projects.locations.jobs.messages.list` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.messages.list` is not recommended, as you can only request the status of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsJobsMessagesListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListJobMessagesResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.jobs.messages.list',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=[
            'endTime',
            'location',
            'minimumImportance',
            'pageSize',
            'pageToken',
            'startTime'
        ],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}/messages',
        request_field='',
        request_type_name='DataflowProjectsJobsMessagesListRequest',
        response_type_name='ListJobMessagesResponse',
        supports_download=False,
    )

  class ProjectsJobsWorkItemsService(base_api.BaseApiService):
    """Service class for the projects_jobs_workItems resource."""

    _NAME = 'projects_jobs_workItems'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsJobsWorkItemsService, self).__init__(client)
      self._upload_configs = {}

    def Lease(self, request, global_params=None):
      r"""Leases a dataflow WorkItem to run.

      Args:
        request: (DataflowProjectsJobsWorkItemsLeaseRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (LeaseWorkItemResponse) The response message.
      """
      config = self.GetMethodConfig('Lease')
      return self._RunMethod(config, request, global_params=global_params)

    Lease.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.jobs.workItems.lease',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=[],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}/workItems:lease',
        request_field='leaseWorkItemRequest',
        request_type_name='DataflowProjectsJobsWorkItemsLeaseRequest',
        response_type_name='LeaseWorkItemResponse',
        supports_download=False,
    )

    def ReportStatus(self, request, global_params=None):
      r"""Reports the status of dataflow WorkItems leased by a worker.

      Args:
        request: (DataflowProjectsJobsWorkItemsReportStatusRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ReportWorkItemStatusResponse) The response message.
      """
      config = self.GetMethodConfig('ReportStatus')
      return self._RunMethod(config, request, global_params=global_params)

    ReportStatus.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.jobs.workItems.reportStatus',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus',
        request_field='reportWorkItemStatusRequest',
        request_type_name='DataflowProjectsJobsWorkItemsReportStatusRequest',
        response_type_name='ReportWorkItemStatusResponse',
        supports_download=False,
    )

  class ProjectsJobsService(base_api.BaseApiService):
    """Service class for the projects_jobs resource."""

    _NAME = 'projects_jobs'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsJobsService, self).__init__(client)
      self._upload_configs = {}

    def Aggregated(self, request, global_params=None):
      r"""List the jobs of a project across all regions.

      Args:
        request: (DataflowProjectsJobsAggregatedRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListJobsResponse) The response message.
      """
      config = self.GetMethodConfig('Aggregated')
      return self._RunMethod(config, request, global_params=global_params)

    Aggregated.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.jobs.aggregated',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=['filter', 'location', 'pageSize', 'pageToken', 'view'],
        relative_path='v1b3/projects/{projectId}/jobs:aggregated',
        request_field='',
        request_type_name='DataflowProjectsJobsAggregatedRequest',
        response_type_name='ListJobsResponse',
        supports_download=False,
    )

    def Create(self, request, global_params=None):
      r"""Creates a Cloud Dataflow job. To create a job, we recommend using `projects.locations.jobs.create` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.create` is not recommended, as your job will always start in `us-central1`.

      Args:
        request: (DataflowProjectsJobsCreateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Create')
      return self._RunMethod(config, request, global_params=global_params)

    Create.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.jobs.create',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=['location', 'replaceJobId', 'view'],
        relative_path='v1b3/projects/{projectId}/jobs',
        request_field='job',
        request_type_name='DataflowProjectsJobsCreateRequest',
        response_type_name='Job',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Gets the state of the specified Cloud Dataflow job. To get the state of a job, we recommend using `projects.locations.jobs.get` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.get` is not recommended, as you can only get the state of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsJobsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.jobs.get',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=['location', 'view'],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}',
        request_field='',
        request_type_name='DataflowProjectsJobsGetRequest',
        response_type_name='Job',
        supports_download=False,
    )

    def GetMetrics(self, request, global_params=None):
      r"""Request the job status. To request the status of a job, we recommend using `projects.locations.jobs.getMetrics` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.getMetrics` is not recommended, as you can only request the status of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsJobsGetMetricsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (JobMetrics) The response message.
      """
      config = self.GetMethodConfig('GetMetrics')
      return self._RunMethod(config, request, global_params=global_params)

    GetMetrics.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.jobs.getMetrics',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=['location', 'startTime'],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}/metrics',
        request_field='',
        request_type_name='DataflowProjectsJobsGetMetricsRequest',
        response_type_name='JobMetrics',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""List the jobs of a project. To list the jobs of a project in a region, we recommend using `projects.locations.jobs.list` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). To list the all jobs across all regions, use `projects.jobs.aggregated`. Using `projects.jobs.list` is not recommended, as you can only get the list of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsJobsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListJobsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.jobs.list',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=['filter', 'location', 'pageSize', 'pageToken', 'view'],
        relative_path='v1b3/projects/{projectId}/jobs',
        request_field='',
        request_type_name='DataflowProjectsJobsListRequest',
        response_type_name='ListJobsResponse',
        supports_download=False,
    )

    def Snapshot(self, request, global_params=None):
      r"""Snapshot the state of a streaming job.

      Args:
        request: (DataflowProjectsJobsSnapshotRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Snapshot) The response message.
      """
      config = self.GetMethodConfig('Snapshot')
      return self._RunMethod(config, request, global_params=global_params)

    Snapshot.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.jobs.snapshot',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=[],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}:snapshot',
        request_field='snapshotJobRequest',
        request_type_name='DataflowProjectsJobsSnapshotRequest',
        response_type_name='Snapshot',
        supports_download=False,
    )

    def Update(self, request, global_params=None):
      r"""Updates the state of an existing Cloud Dataflow job. To update the state of an existing job, we recommend using `projects.locations.jobs.update` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.update` is not recommended, as you can only update the state of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsJobsUpdateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Update')
      return self._RunMethod(config, request, global_params=global_params)

    Update.method_config = lambda: base_api.ApiMethodInfo(
        http_method='PUT',
        method_id='dataflow.projects.jobs.update',
        ordered_params=['projectId', 'jobId'],
        path_params=['jobId', 'projectId'],
        query_params=['location'],
        relative_path='v1b3/projects/{projectId}/jobs/{jobId}',
        request_field='job',
        request_type_name='DataflowProjectsJobsUpdateRequest',
        response_type_name='Job',
        supports_download=False,
    )

  class ProjectsLocationsFlexTemplatesService(base_api.BaseApiService):
    """Service class for the projects_locations_flexTemplates resource."""

    _NAME = 'projects_locations_flexTemplates'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsFlexTemplatesService,
            self).__init__(client)
      self._upload_configs = {}

    def Launch(self, request, global_params=None):
      r"""Launch a job with a FlexTemplate.

      Args:
        request: (DataflowProjectsLocationsFlexTemplatesLaunchRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (LaunchFlexTemplateResponse) The response message.
      """
      config = self.GetMethodConfig('Launch')
      return self._RunMethod(config, request, global_params=global_params)

    Launch.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.flexTemplates.launch',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/flexTemplates:launch',
        request_field='launchFlexTemplateRequest',
        request_type_name='DataflowProjectsLocationsFlexTemplatesLaunchRequest',
        response_type_name='LaunchFlexTemplateResponse',
        supports_download=False,
    )

  class ProjectsLocationsJobsDebugService(base_api.BaseApiService):
    """Service class for the projects_locations_jobs_debug resource."""

    _NAME = 'projects_locations_jobs_debug'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsJobsDebugService,
            self).__init__(client)
      self._upload_configs = {}

    def GetConfig(self, request, global_params=None):
      r"""Get encoded debug configuration for component. Not cacheable.

      Args:
        request: (DataflowProjectsLocationsJobsDebugGetConfigRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (GetDebugConfigResponse) The response message.
      """
      config = self.GetMethodConfig('GetConfig')
      return self._RunMethod(config, request, global_params=global_params)

    GetConfig.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.jobs.debug.getConfig',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/getConfig',
        request_field='getDebugConfigRequest',
        request_type_name='DataflowProjectsLocationsJobsDebugGetConfigRequest',
        response_type_name='GetDebugConfigResponse',
        supports_download=False,
    )

    def SendCapture(self, request, global_params=None):
      r"""Send encoded debug capture data for component.

      Args:
        request: (DataflowProjectsLocationsJobsDebugSendCaptureRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (SendDebugCaptureResponse) The response message.
      """
      config = self.GetMethodConfig('SendCapture')
      return self._RunMethod(config, request, global_params=global_params)

    SendCapture.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.jobs.debug.sendCapture',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/sendCapture',
        request_field='sendDebugCaptureRequest',
        request_type_name=
        'DataflowProjectsLocationsJobsDebugSendCaptureRequest',
        response_type_name='SendDebugCaptureResponse',
        supports_download=False,
    )

  class ProjectsLocationsJobsMessagesService(base_api.BaseApiService):
    """Service class for the projects_locations_jobs_messages resource."""

    _NAME = 'projects_locations_jobs_messages'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsJobsMessagesService,
            self).__init__(client)
      self._upload_configs = {}

    def List(self, request, global_params=None):
      r"""Request the job status. To request the status of a job, we recommend using `projects.locations.jobs.messages.list` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.messages.list` is not recommended, as you can only request the status of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsLocationsJobsMessagesListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListJobMessagesResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.messages.list',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=
        ['endTime', 'minimumImportance', 'pageSize', 'pageToken', 'startTime'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages',
        request_field='',
        request_type_name='DataflowProjectsLocationsJobsMessagesListRequest',
        response_type_name='ListJobMessagesResponse',
        supports_download=False,
    )

  class ProjectsLocationsJobsSnapshotsService(base_api.BaseApiService):
    """Service class for the projects_locations_jobs_snapshots resource."""

    _NAME = 'projects_locations_jobs_snapshots'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsJobsSnapshotsService,
            self).__init__(client)
      self._upload_configs = {}

    def List(self, request, global_params=None):
      r"""Lists snapshots.

      Args:
        request: (DataflowProjectsLocationsJobsSnapshotsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListSnapshotsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.snapshots.list',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/snapshots',
        request_field='',
        request_type_name='DataflowProjectsLocationsJobsSnapshotsListRequest',
        response_type_name='ListSnapshotsResponse',
        supports_download=False,
    )

  class ProjectsLocationsJobsStagesService(base_api.BaseApiService):
    """Service class for the projects_locations_jobs_stages resource."""

    _NAME = 'projects_locations_jobs_stages'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsJobsStagesService,
            self).__init__(client)
      self._upload_configs = {}

    def GetExecutionDetails(self, request, global_params=None):
      r"""Request detailed information about the execution status of a stage of the job.

      Args:
        request: (DataflowProjectsLocationsJobsStagesGetExecutionDetailsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (StageExecutionDetails) The response message.
      """
      config = self.GetMethodConfig('GetExecutionDetails')
      return self._RunMethod(config, request, global_params=global_params)

    GetExecutionDetails.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.stages.getExecutionDetails',
        ordered_params=['projectId', 'location', 'jobId', 'stageId'],
        path_params=['jobId', 'location', 'projectId', 'stageId'],
        query_params=['endTime', 'pageSize', 'pageToken', 'startTime'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/stages/{stageId}/executionDetails',
        request_field='',
        request_type_name=
        'DataflowProjectsLocationsJobsStagesGetExecutionDetailsRequest',
        response_type_name='StageExecutionDetails',
        supports_download=False,
    )

  class ProjectsLocationsJobsWorkItemsService(base_api.BaseApiService):
    """Service class for the projects_locations_jobs_workItems resource."""

    _NAME = 'projects_locations_jobs_workItems'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsJobsWorkItemsService,
            self).__init__(client)
      self._upload_configs = {}

    def Lease(self, request, global_params=None):
      r"""Leases a dataflow WorkItem to run.

      Args:
        request: (DataflowProjectsLocationsJobsWorkItemsLeaseRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (LeaseWorkItemResponse) The response message.
      """
      config = self.GetMethodConfig('Lease')
      return self._RunMethod(config, request, global_params=global_params)

    Lease.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.jobs.workItems.lease',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease',
        request_field='leaseWorkItemRequest',
        request_type_name='DataflowProjectsLocationsJobsWorkItemsLeaseRequest',
        response_type_name='LeaseWorkItemResponse',
        supports_download=False,
    )

    def ReportStatus(self, request, global_params=None):
      r"""Reports the status of dataflow WorkItems leased by a worker.

      Args:
        request: (DataflowProjectsLocationsJobsWorkItemsReportStatusRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ReportWorkItemStatusResponse) The response message.
      """
      config = self.GetMethodConfig('ReportStatus')
      return self._RunMethod(config, request, global_params=global_params)

    ReportStatus.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.jobs.workItems.reportStatus',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus',
        request_field='reportWorkItemStatusRequest',
        request_type_name=
        'DataflowProjectsLocationsJobsWorkItemsReportStatusRequest',
        response_type_name='ReportWorkItemStatusResponse',
        supports_download=False,
    )

  class ProjectsLocationsJobsService(base_api.BaseApiService):
    """Service class for the projects_locations_jobs resource."""

    _NAME = 'projects_locations_jobs'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsJobsService, self).__init__(client)
      self._upload_configs = {}

    def Create(self, request, global_params=None):
      r"""Creates a Cloud Dataflow job. To create a job, we recommend using `projects.locations.jobs.create` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.create` is not recommended, as your job will always start in `us-central1`.

      Args:
        request: (DataflowProjectsLocationsJobsCreateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Create')
      return self._RunMethod(config, request, global_params=global_params)

    Create.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.jobs.create',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=['replaceJobId', 'view'],
        relative_path='v1b3/projects/{projectId}/locations/{location}/jobs',
        request_field='job',
        request_type_name='DataflowProjectsLocationsJobsCreateRequest',
        response_type_name='Job',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Gets the state of the specified Cloud Dataflow job. To get the state of a job, we recommend using `projects.locations.jobs.get` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.get` is not recommended, as you can only get the state of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsLocationsJobsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.get',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=['view'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}',
        request_field='',
        request_type_name='DataflowProjectsLocationsJobsGetRequest',
        response_type_name='Job',
        supports_download=False,
    )

    def GetExecutionDetails(self, request, global_params=None):
      r"""Request detailed information about the execution status of the job.

      Args:
        request: (DataflowProjectsLocationsJobsGetExecutionDetailsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (JobExecutionDetails) The response message.
      """
      config = self.GetMethodConfig('GetExecutionDetails')
      return self._RunMethod(config, request, global_params=global_params)

    GetExecutionDetails.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.getExecutionDetails',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=['pageSize', 'pageToken'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/executionDetails',
        request_field='',
        request_type_name=
        'DataflowProjectsLocationsJobsGetExecutionDetailsRequest',
        response_type_name='JobExecutionDetails',
        supports_download=False,
    )

    def GetMetrics(self, request, global_params=None):
      r"""Request the job status. To request the status of a job, we recommend using `projects.locations.jobs.getMetrics` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.getMetrics` is not recommended, as you can only request the status of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsLocationsJobsGetMetricsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (JobMetrics) The response message.
      """
      config = self.GetMethodConfig('GetMetrics')
      return self._RunMethod(config, request, global_params=global_params)

    GetMetrics.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.getMetrics',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=['startTime'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics',
        request_field='',
        request_type_name='DataflowProjectsLocationsJobsGetMetricsRequest',
        response_type_name='JobMetrics',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""List the jobs of a project. To list the jobs of a project in a region, we recommend using `projects.locations.jobs.list` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). To list the all jobs across all regions, use `projects.jobs.aggregated`. Using `projects.jobs.list` is not recommended, as you can only get the list of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsLocationsJobsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListJobsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.jobs.list',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=['filter', 'pageSize', 'pageToken', 'view'],
        relative_path='v1b3/projects/{projectId}/locations/{location}/jobs',
        request_field='',
        request_type_name='DataflowProjectsLocationsJobsListRequest',
        response_type_name='ListJobsResponse',
        supports_download=False,
    )

    def Snapshot(self, request, global_params=None):
      r"""Snapshot the state of a streaming job.

      Args:
        request: (DataflowProjectsLocationsJobsSnapshotRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Snapshot) The response message.
      """
      config = self.GetMethodConfig('Snapshot')
      return self._RunMethod(config, request, global_params=global_params)

    Snapshot.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.jobs.snapshot',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}:snapshot',
        request_field='snapshotJobRequest',
        request_type_name='DataflowProjectsLocationsJobsSnapshotRequest',
        response_type_name='Snapshot',
        supports_download=False,
    )

    def Update(self, request, global_params=None):
      r"""Updates the state of an existing Cloud Dataflow job. To update the state of an existing job, we recommend using `projects.locations.jobs.update` with a [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints). Using `projects.jobs.update` is not recommended, as you can only update the state of jobs that are running in `us-central1`.

      Args:
        request: (DataflowProjectsLocationsJobsUpdateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Update')
      return self._RunMethod(config, request, global_params=global_params)

    Update.method_config = lambda: base_api.ApiMethodInfo(
        http_method='PUT',
        method_id='dataflow.projects.locations.jobs.update',
        ordered_params=['projectId', 'location', 'jobId'],
        path_params=['jobId', 'location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}',
        request_field='job',
        request_type_name='DataflowProjectsLocationsJobsUpdateRequest',
        response_type_name='Job',
        supports_download=False,
    )

  class ProjectsLocationsSnapshotsService(base_api.BaseApiService):
    """Service class for the projects_locations_snapshots resource."""

    _NAME = 'projects_locations_snapshots'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsSnapshotsService,
            self).__init__(client)
      self._upload_configs = {}

    def Delete(self, request, global_params=None):
      r"""Deletes a snapshot.

      Args:
        request: (DataflowProjectsLocationsSnapshotsDeleteRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (DeleteSnapshotResponse) The response message.
      """
      config = self.GetMethodConfig('Delete')
      return self._RunMethod(config, request, global_params=global_params)

    Delete.method_config = lambda: base_api.ApiMethodInfo(
        http_method='DELETE',
        method_id='dataflow.projects.locations.snapshots.delete',
        ordered_params=['projectId', 'location', 'snapshotId'],
        path_params=['location', 'projectId', 'snapshotId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/snapshots/{snapshotId}',
        request_field='',
        request_type_name='DataflowProjectsLocationsSnapshotsDeleteRequest',
        response_type_name='DeleteSnapshotResponse',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Gets information about a snapshot.

      Args:
        request: (DataflowProjectsLocationsSnapshotsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Snapshot) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.snapshots.get',
        ordered_params=['projectId', 'location', 'snapshotId'],
        path_params=['location', 'projectId', 'snapshotId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/snapshots/{snapshotId}',
        request_field='',
        request_type_name='DataflowProjectsLocationsSnapshotsGetRequest',
        response_type_name='Snapshot',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""Lists snapshots.

      Args:
        request: (DataflowProjectsLocationsSnapshotsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListSnapshotsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.snapshots.list',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=['jobId'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/snapshots',
        request_field='',
        request_type_name='DataflowProjectsLocationsSnapshotsListRequest',
        response_type_name='ListSnapshotsResponse',
        supports_download=False,
    )

  class ProjectsLocationsSqlService(base_api.BaseApiService):
    """Service class for the projects_locations_sql resource."""

    _NAME = 'projects_locations_sql'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsSqlService, self).__init__(client)
      self._upload_configs = {}

    def Validate(self, request, global_params=None):
      r"""Validates a GoogleSQL query for Cloud Dataflow syntax. Will always confirm the given query parses correctly, and if able to look up schema information from DataCatalog, will validate that the query analyzes properly as well.

      Args:
        request: (DataflowProjectsLocationsSqlValidateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ValidateResponse) The response message.
      """
      config = self.GetMethodConfig('Validate')
      return self._RunMethod(config, request, global_params=global_params)

    Validate.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.sql.validate',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=['query'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/sql:validate',
        request_field='',
        request_type_name='DataflowProjectsLocationsSqlValidateRequest',
        response_type_name='ValidateResponse',
        supports_download=False,
    )

  class ProjectsLocationsTemplatesService(base_api.BaseApiService):
    """Service class for the projects_locations_templates resource."""

    _NAME = 'projects_locations_templates'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsTemplatesService,
            self).__init__(client)
      self._upload_configs = {}

    def Create(self, request, global_params=None):
      r"""Creates a Cloud Dataflow job from a template.

      Args:
        request: (DataflowProjectsLocationsTemplatesCreateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Create')
      return self._RunMethod(config, request, global_params=global_params)

    Create.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.templates.create',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/templates',
        request_field='createJobFromTemplateRequest',
        request_type_name='DataflowProjectsLocationsTemplatesCreateRequest',
        response_type_name='Job',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Get the template associated with a template.

      Args:
        request: (DataflowProjectsLocationsTemplatesGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (GetTemplateResponse) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.locations.templates.get',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=['gcsPath', 'view'],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/templates:get',
        request_field='',
        request_type_name='DataflowProjectsLocationsTemplatesGetRequest',
        response_type_name='GetTemplateResponse',
        supports_download=False,
    )

    def Launch(self, request, global_params=None):
      r"""Launch a template.

      Args:
        request: (DataflowProjectsLocationsTemplatesLaunchRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (LaunchTemplateResponse) The response message.
      """
      config = self.GetMethodConfig('Launch')
      return self._RunMethod(config, request, global_params=global_params)

    Launch.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.templates.launch',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=[
            'dynamicTemplate_gcsPath',
            'dynamicTemplate_stagingLocation',
            'gcsPath',
            'validateOnly'
        ],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/templates:launch',
        request_field='launchTemplateParameters',
        request_type_name='DataflowProjectsLocationsTemplatesLaunchRequest',
        response_type_name='LaunchTemplateResponse',
        supports_download=False,
    )

  class ProjectsLocationsService(base_api.BaseApiService):
    """Service class for the projects_locations resource."""

    _NAME = 'projects_locations'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsLocationsService, self).__init__(client)
      self._upload_configs = {}

    def WorkerMessages(self, request, global_params=None):
      r"""Send a worker_message to the service.

      Args:
        request: (DataflowProjectsLocationsWorkerMessagesRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (SendWorkerMessagesResponse) The response message.
      """
      config = self.GetMethodConfig('WorkerMessages')
      return self._RunMethod(config, request, global_params=global_params)

    WorkerMessages.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.locations.workerMessages',
        ordered_params=['projectId', 'location'],
        path_params=['location', 'projectId'],
        query_params=[],
        relative_path=
        'v1b3/projects/{projectId}/locations/{location}/WorkerMessages',
        request_field='sendWorkerMessagesRequest',
        request_type_name='DataflowProjectsLocationsWorkerMessagesRequest',
        response_type_name='SendWorkerMessagesResponse',
        supports_download=False,
    )

  class ProjectsSnapshotsService(base_api.BaseApiService):
    """Service class for the projects_snapshots resource."""

    _NAME = 'projects_snapshots'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsSnapshotsService, self).__init__(client)
      self._upload_configs = {}

    def Get(self, request, global_params=None):
      r"""Gets information about a snapshot.

      Args:
        request: (DataflowProjectsSnapshotsGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Snapshot) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.snapshots.get',
        ordered_params=['projectId', 'snapshotId'],
        path_params=['projectId', 'snapshotId'],
        query_params=['location'],
        relative_path='v1b3/projects/{projectId}/snapshots/{snapshotId}',
        request_field='',
        request_type_name='DataflowProjectsSnapshotsGetRequest',
        response_type_name='Snapshot',
        supports_download=False,
    )

    def List(self, request, global_params=None):
      r"""Lists snapshots.

      Args:
        request: (DataflowProjectsSnapshotsListRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (ListSnapshotsResponse) The response message.
      """
      config = self.GetMethodConfig('List')
      return self._RunMethod(config, request, global_params=global_params)

    List.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.snapshots.list',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=['jobId', 'location'],
        relative_path='v1b3/projects/{projectId}/snapshots',
        request_field='',
        request_type_name='DataflowProjectsSnapshotsListRequest',
        response_type_name='ListSnapshotsResponse',
        supports_download=False,
    )

  class ProjectsTemplatesService(base_api.BaseApiService):
    """Service class for the projects_templates resource."""

    _NAME = 'projects_templates'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsTemplatesService, self).__init__(client)
      self._upload_configs = {}

    def Create(self, request, global_params=None):
      r"""Creates a Cloud Dataflow job from a template.

      Args:
        request: (DataflowProjectsTemplatesCreateRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (Job) The response message.
      """
      config = self.GetMethodConfig('Create')
      return self._RunMethod(config, request, global_params=global_params)

    Create.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.templates.create',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=[],
        relative_path='v1b3/projects/{projectId}/templates',
        request_field='createJobFromTemplateRequest',
        request_type_name='DataflowProjectsTemplatesCreateRequest',
        response_type_name='Job',
        supports_download=False,
    )

    def Get(self, request, global_params=None):
      r"""Get the template associated with a template.

      Args:
        request: (DataflowProjectsTemplatesGetRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (GetTemplateResponse) The response message.
      """
      config = self.GetMethodConfig('Get')
      return self._RunMethod(config, request, global_params=global_params)

    Get.method_config = lambda: base_api.ApiMethodInfo(
        http_method='GET',
        method_id='dataflow.projects.templates.get',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=['gcsPath', 'location', 'view'],
        relative_path='v1b3/projects/{projectId}/templates:get',
        request_field='',
        request_type_name='DataflowProjectsTemplatesGetRequest',
        response_type_name='GetTemplateResponse',
        supports_download=False,
    )

    def Launch(self, request, global_params=None):
      r"""Launch a template.

      Args:
        request: (DataflowProjectsTemplatesLaunchRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (LaunchTemplateResponse) The response message.
      """
      config = self.GetMethodConfig('Launch')
      return self._RunMethod(config, request, global_params=global_params)

    Launch.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.templates.launch',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=[
            'dynamicTemplate_gcsPath',
            'dynamicTemplate_stagingLocation',
            'gcsPath',
            'location',
            'validateOnly'
        ],
        relative_path='v1b3/projects/{projectId}/templates:launch',
        request_field='launchTemplateParameters',
        request_type_name='DataflowProjectsTemplatesLaunchRequest',
        response_type_name='LaunchTemplateResponse',
        supports_download=False,
    )

  class ProjectsService(base_api.BaseApiService):
    """Service class for the projects resource."""

    _NAME = 'projects'

    def __init__(self, client):
      super(DataflowV1b3.ProjectsService, self).__init__(client)
      self._upload_configs = {}

    def DeleteSnapshots(self, request, global_params=None):
      r"""Deletes a snapshot.

      Args:
        request: (DataflowProjectsDeleteSnapshotsRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (DeleteSnapshotResponse) The response message.
      """
      config = self.GetMethodConfig('DeleteSnapshots')
      return self._RunMethod(config, request, global_params=global_params)

    DeleteSnapshots.method_config = lambda: base_api.ApiMethodInfo(
        http_method='DELETE',
        method_id='dataflow.projects.deleteSnapshots',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=['location', 'snapshotId'],
        relative_path='v1b3/projects/{projectId}/snapshots',
        request_field='',
        request_type_name='DataflowProjectsDeleteSnapshotsRequest',
        response_type_name='DeleteSnapshotResponse',
        supports_download=False,
    )

    def WorkerMessages(self, request, global_params=None):
      r"""Send a worker_message to the service.

      Args:
        request: (DataflowProjectsWorkerMessagesRequest) input message
        global_params: (StandardQueryParameters, default: None) global arguments
      Returns:
        (SendWorkerMessagesResponse) The response message.
      """
      config = self.GetMethodConfig('WorkerMessages')
      return self._RunMethod(config, request, global_params=global_params)

    WorkerMessages.method_config = lambda: base_api.ApiMethodInfo(
        http_method='POST',
        method_id='dataflow.projects.workerMessages',
        ordered_params=['projectId'],
        path_params=['projectId'],
        query_params=[],
        relative_path='v1b3/projects/{projectId}/WorkerMessages',
        request_field='sendWorkerMessagesRequest',
        request_type_name='DataflowProjectsWorkerMessagesRequest',
        response_type_name='SendWorkerMessagesResponse',
        supports_download=False,
    )
