<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="dataflow_v1b3.html">Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.locations.html">locations</a> . <a href="dataflow_v1b3.projects.locations.flexTemplates.html">flexTemplates</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#launch">launch(projectId, location, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Launch a job with a FlexTemplate.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="launch">launch(projectId, location, body=None, x__xgafv=None)</code>
  <pre>Launch a job with a FlexTemplate.

Args:
  projectId: string, Required. The ID of the Cloud Platform project that the job belongs to. (required)
  location: string, Required. The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request. E.g., us-central1, us-west1. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to launch a Cloud Dataflow job from a FlexTemplate.
  &quot;launchParameter&quot;: { # Launch FlexTemplate Parameter. # Required. Parameter to launch a job form Flex Template.
    &quot;containerSpec&quot;: { # Container Spec. # Spec about the container image to launch.
      &quot;defaultEnvironment&quot;: { # The environment values to be set at runtime for flex template. # Default runtime environment for the job.
        &quot;additionalExperiments&quot;: [ # Additional experiment flags for the job.
          &quot;A String&quot;,
        ],
        &quot;additionalUserLabels&quot;: { # Additional user labels to be specified for the job. Keys and values must follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of &quot;key&quot;: value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1kg&quot;, &quot;count&quot;: &quot;3&quot; }.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;enableStreamingEngine&quot;: True or False, # Whether to enable Streaming Engine for the job.
        &quot;ipConfiguration&quot;: &quot;A String&quot;, # Configuration for VM IPs.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/
        &quot;machineType&quot;: &quot;A String&quot;, # The machine type to use for the job. Defaults to the value from the template if not specified.
        &quot;maxWorkers&quot;: 42, # The maximum number of Google Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000.
        &quot;network&quot;: &quot;A String&quot;, # Network to which VMs will be assigned. If empty or unspecified, the service will use the network &quot;default&quot;.
        &quot;numWorkers&quot;: 42, # The initial number of Google Compute Engine instances for the job.
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the service account to run the job as.
        &quot;subnetwork&quot;: &quot;A String&quot;, # Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form &quot;https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK&quot; or &quot;regions/REGION/subnetworks/SUBNETWORK&quot;. If the subnetwork is located in a Shared VPC network, you must use the complete URL.
        &quot;tempLocation&quot;: &quot;A String&quot;, # The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`.
        &quot;workerRegion&quot;: &quot;A String&quot;, # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1&quot;. Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane&#x27;s region.
        &quot;workerZone&quot;: &quot;A String&quot;, # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1-a&quot;. Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane&#x27;s region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence.
        &quot;zone&quot;: &quot;A String&quot;, # The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence.
      },
      &quot;image&quot;: &quot;A String&quot;, # Name of the docker container image. E.g., gcr.io/project/some-image
      &quot;metadata&quot;: { # Metadata describing a template. # Metadata describing a template including description and validation rules.
        &quot;description&quot;: &quot;A String&quot;, # Optional. A description of the template.
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of the template.
        &quot;parameters&quot;: [ # The parameters for the template.
          { # Metadata for a specific parameter.
            &quot;helpText&quot;: &quot;A String&quot;, # Required. The help text to display for the parameter.
            &quot;isOptional&quot;: True or False, # Optional. Whether the parameter is optional. Defaults to false.
            &quot;label&quot;: &quot;A String&quot;, # Required. The label to display for the parameter.
            &quot;name&quot;: &quot;A String&quot;, # Required. The name of the parameter.
            &quot;paramType&quot;: &quot;A String&quot;, # Optional. The type of the parameter. Used for selecting input picker.
            &quot;regexes&quot;: [ # Optional. Regexes that the parameter must match.
              &quot;A String&quot;,
            ],
          },
        ],
      },
      &quot;sdkInfo&quot;: { # SDK Information. # Required. SDK info of the Flex Template.
        &quot;language&quot;: &quot;A String&quot;, # Required. The SDK Language.
        &quot;version&quot;: &quot;A String&quot;, # Optional. The SDK version.
      },
    },
    &quot;containerSpecGcsPath&quot;: &quot;A String&quot;, # Gcs path to a file with json serialized ContainerSpec as content.
    &quot;environment&quot;: { # The environment values to be set at runtime for flex template. # The runtime environment for the FlexTemplate job
      &quot;additionalExperiments&quot;: [ # Additional experiment flags for the job.
        &quot;A String&quot;,
      ],
      &quot;additionalUserLabels&quot;: { # Additional user labels to be specified for the job. Keys and values must follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of &quot;key&quot;: value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1kg&quot;, &quot;count&quot;: &quot;3&quot; }.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;enableStreamingEngine&quot;: True or False, # Whether to enable Streaming Engine for the job.
      &quot;ipConfiguration&quot;: &quot;A String&quot;, # Configuration for VM IPs.
      &quot;kmsKeyName&quot;: &quot;A String&quot;, # Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/
      &quot;machineType&quot;: &quot;A String&quot;, # The machine type to use for the job. Defaults to the value from the template if not specified.
      &quot;maxWorkers&quot;: 42, # The maximum number of Google Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000.
      &quot;network&quot;: &quot;A String&quot;, # Network to which VMs will be assigned. If empty or unspecified, the service will use the network &quot;default&quot;.
      &quot;numWorkers&quot;: 42, # The initial number of Google Compute Engine instances for the job.
      &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the service account to run the job as.
      &quot;subnetwork&quot;: &quot;A String&quot;, # Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form &quot;https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK&quot; or &quot;regions/REGION/subnetworks/SUBNETWORK&quot;. If the subnetwork is located in a Shared VPC network, you must use the complete URL.
      &quot;tempLocation&quot;: &quot;A String&quot;, # The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`.
      &quot;workerRegion&quot;: &quot;A String&quot;, # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1&quot;. Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane&#x27;s region.
      &quot;workerZone&quot;: &quot;A String&quot;, # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1-a&quot;. Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane&#x27;s region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence.
      &quot;zone&quot;: &quot;A String&quot;, # The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence.
    },
    &quot;jobName&quot;: &quot;A String&quot;, # Required. The job name to use for the created job. For update job request, job name should be same as the existing running job.
    &quot;launchOptions&quot;: { # Launch options for this flex template job. This is a common set of options across languages and templates. This should not be used to pass job parameters.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;parameters&quot;: { # The parameters for FlexTemplate. Ex. {&quot;num_workers&quot;:&quot;5&quot;}
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;transformNameMappings&quot;: { # Users need to set transform_name_mappings Ex:{&quot;oldTransformName&quot;:&quot;newTransformName&quot;,...}&#x27;
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;update&quot;: True or False, # Set this to true if you are sending a request to update a running streaming job. When set, the job name should be the same as the running job.
  },
  &quot;validateOnly&quot;: True or False, # If true, the request is validated but not actually executed. Defaults to false.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response to the request to launch a job from Flex Template.
  &quot;job&quot;: { # Defines a job to be run by the Cloud Dataflow service. # The job that was launched, if the request was not a dry run and the job was successfully launched.
    &quot;clientRequestId&quot;: &quot;A String&quot;, # The client&#x27;s unique identifier of the job, re-used across retried attempts. If this field is set, the service will ensure its uniqueness. The request to create a job will fail if the service has knowledge of a previously submitted job with the same client&#x27;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.
    &quot;createTime&quot;: &quot;A String&quot;, # The timestamp when the job was initially created. Immutable and set by the Cloud Dataflow service.
    &quot;createdFromSnapshotId&quot;: &quot;A String&quot;, # If this is specified, the job&#x27;s initial state is populated from the given snapshot.
    &quot;currentState&quot;: &quot;A String&quot;, # 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.
    &quot;currentStateTime&quot;: &quot;A String&quot;, # The timestamp associated with the current state.
    &quot;environment&quot;: { # Describes the environment in which a Dataflow Job runs. # The environment for the job.
      &quot;clusterManagerApiService&quot;: &quot;A String&quot;, # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. &quot;compute.googleapis.com&quot;.
      &quot;dataset&quot;: &quot;A String&quot;, # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
      &quot;experiments&quot;: [ # The list of experiments to enable.
        &quot;A String&quot;,
      ],
      &quot;flexResourceSchedulingGoal&quot;: &quot;A String&quot;, # Which Flexible Resource Scheduling mode to run in.
      &quot;internalExperiments&quot;: { # Experimental settings.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;sdkPipelineOptions&quot;: { # 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.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # Identity to run virtual machines as. Defaults to the default account.
      &quot;serviceKmsKeyName&quot;: &quot;A String&quot;, # If set, contains the Cloud KMS key identifier used to encrypt data at rest, AKA a Customer Managed Encryption Key (CMEK). Format: projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
      &quot;tempStoragePrefix&quot;: &quot;A String&quot;, # The prefix of the resources the system should use for temporary storage. The system will append the suffix &quot;/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
      &quot;userAgent&quot;: { # A description of the process that generated the request.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;version&quot;: { # A structure describing which components and their versions of the service are required in order to run the job.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;workerPools&quot;: [ # The worker pools. At least one &quot;harness&quot; worker pool must be specified in order for the job to have workers.
        { # 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.
          &quot;autoscalingSettings&quot;: { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
            &quot;algorithm&quot;: &quot;A String&quot;, # The algorithm to use for autoscaling.
            &quot;maxNumWorkers&quot;: 42, # The maximum number of workers to cap scaling at.
          },
          &quot;dataDisks&quot;: [ # Data disks that are used by a VM in this workflow.
            { # Describes the data disk used by a workflow job.
              &quot;diskType&quot;: &quot;A String&quot;, # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in &quot;pd-standard&quot;. If SSD persistent disks are available, the resource name typically ends with &quot;pd-ssd&quot;. The actual valid values are defined the Google Compute Engine API, not 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
              &quot;mountPoint&quot;: &quot;A String&quot;, # Directory in a VM where disk is mounted.
              &quot;sizeGb&quot;: 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
            },
          ],
          &quot;defaultPackageSet&quot;: &quot;A String&quot;, # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
          &quot;diskSizeGb&quot;: 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
          &quot;diskSourceImage&quot;: &quot;A String&quot;, # Fully qualified source image for disks.
          &quot;diskType&quot;: &quot;A String&quot;, # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
          &quot;ipConfiguration&quot;: &quot;A String&quot;, # Configuration for VM IPs.
          &quot;kind&quot;: &quot;A String&quot;, # The kind of the worker pool; currently only `harness` and `shuffle` are supported.
          &quot;machineType&quot;: &quot;A String&quot;, # Machine type (e.g. &quot;n1-standard-1&quot;). If empty or unspecified, the service will attempt to choose a reasonable default.
          &quot;metadata&quot;: { # Metadata to set on the Google Compute Engine VMs.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;network&quot;: &quot;A String&quot;, # Network to which VMs will be assigned. If empty or unspecified, the service will use the network &quot;default&quot;.
          &quot;numThreadsPerWorker&quot;: 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
          &quot;numWorkers&quot;: 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
          &quot;onHostMaintenance&quot;: &quot;A String&quot;, # The action to take on host maintenance, as defined by the Google Compute Engine API.
          &quot;packages&quot;: [ # Packages to be installed on workers.
            { # 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&#x27;s code and all of the various dependencies (libraries, data files, etc.) required in order for that code to run.
              &quot;location&quot;: &quot;A String&quot;, # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
              &quot;name&quot;: &quot;A String&quot;, # The name of the package.
            },
          ],
          &quot;poolArgs&quot;: { # Extra arguments for this worker pool.
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
          &quot;sdkHarnessContainerImages&quot;: [ # Set of SDK harness containers needed to execute this pipeline. This will only be set in the Fn API path. For non-cross-language pipelines this should have only one entry. Cross-language pipelines will have two or more entries.
            { # Defines a SDK harness container for executing Dataflow pipelines.
              &quot;containerImage&quot;: &quot;A String&quot;, # A docker container image that resides in Google Container Registry.
              &quot;useSingleCorePerContainer&quot;: True or False, # If true, recommends the Dataflow service to use only one core per SDK container instance with this image. If false (or unset) recommends using more than one core per SDK container instance with this image for efficiency. Note that Dataflow service may choose to override this property if needed.
            },
          ],
          &quot;subnetwork&quot;: &quot;A String&quot;, # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form &quot;regions/REGION/subnetworks/SUBNETWORK&quot;.
          &quot;taskrunnerSettings&quot;: { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
            &quot;alsologtostderr&quot;: True or False, # Whether to also send taskrunner log info to stderr.
            &quot;baseTaskDir&quot;: &quot;A String&quot;, # The location on the worker for task-specific subdirectories.
            &quot;baseUrl&quot;: &quot;A String&quot;, # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, &quot;Relative Uniform Resource Locators&quot;. If not specified, the default value is &quot;http://www.googleapis.com/&quot;
            &quot;commandlinesFileName&quot;: &quot;A String&quot;, # The file to store preprocessing commands in.
            &quot;continueOnException&quot;: True or False, # Whether to continue taskrunner if an exception is hit.
            &quot;dataflowApiVersion&quot;: &quot;A String&quot;, # The API version of endpoint, e.g. &quot;v1b3&quot;
            &quot;harnessCommand&quot;: &quot;A String&quot;, # The command to launch the worker harness.
            &quot;languageHint&quot;: &quot;A String&quot;, # The suggested backend language.
            &quot;logDir&quot;: &quot;A String&quot;, # The directory on the VM to store logs.
            &quot;logToSerialconsole&quot;: True or False, # Whether to send taskrunner log info to Google Compute Engine VM serial console.
            &quot;logUploadLocation&quot;: &quot;A String&quot;, # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
            &quot;oauthScopes&quot;: [ # The OAuth2 scopes to be requested by the taskrunner in order to access the Cloud Dataflow API.
              &quot;A String&quot;,
            ],
            &quot;parallelWorkerSettings&quot;: { # Provides data to pass through to the worker harness. # The settings to pass to the parallel worker harness.
              &quot;baseUrl&quot;: &quot;A String&quot;, # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, &quot;Relative Uniform Resource Locators&quot;. If not specified, the default value is &quot;http://www.googleapis.com/&quot;
              &quot;reportingEnabled&quot;: True or False, # Whether to send work progress updates to the service.
              &quot;servicePath&quot;: &quot;A String&quot;, # The Cloud Dataflow service path relative to the root URL, for example, &quot;dataflow/v1b3/projects&quot;.
              &quot;shuffleServicePath&quot;: &quot;A String&quot;, # The Shuffle service path relative to the root URL, for example, &quot;shuffle/v1beta1&quot;.
              &quot;tempStoragePrefix&quot;: &quot;A String&quot;, # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
              &quot;workerId&quot;: &quot;A String&quot;, # The ID of the worker running this pipeline.
            },
            &quot;streamingWorkerMainClass&quot;: &quot;A String&quot;, # The streaming worker main class name.
            &quot;taskGroup&quot;: &quot;A String&quot;, # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. &quot;wheel&quot;.
            &quot;taskUser&quot;: &quot;A String&quot;, # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. &quot;root&quot;.
            &quot;tempStoragePrefix&quot;: &quot;A String&quot;, # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
            &quot;vmId&quot;: &quot;A String&quot;, # The ID string of the VM.
            &quot;workflowFileName&quot;: &quot;A String&quot;, # The file to store the workflow in.
          },
          &quot;teardownPolicy&quot;: &quot;A String&quot;, # 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&#x27;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.
          &quot;workerHarnessContainerImage&quot;: &quot;A String&quot;, # Required. Docker container image that executes the Cloud Dataflow worker harness, residing in Google Container Registry. Deprecated for the Fn API path. Use sdk_harness_container_images instead.
          &quot;zone&quot;: &quot;A String&quot;, # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
        },
      ],
      &quot;workerRegion&quot;: &quot;A String&quot;, # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1&quot;. Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane&#x27;s region.
      &quot;workerZone&quot;: &quot;A String&quot;, # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1-a&quot;. Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane&#x27;s region is chosen based on available capacity.
    },
    &quot;executionInfo&quot;: { # Additional information about how a Cloud Dataflow job will be executed that isn&#x27;t contained in the submitted job. # Deprecated.
      &quot;stages&quot;: { # A mapping from each stage to the information about that stage.
        &quot;a_key&quot;: { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
          &quot;stepName&quot;: [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
            &quot;A String&quot;,
          ],
        },
      },
    },
    &quot;id&quot;: &quot;A String&quot;, # 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.
    &quot;jobMetadata&quot;: { # Metadata available primarily for filtering jobs. Will be included in the ListJob response and Job SUMMARY view. # This field is populated by the Dataflow service to support filtering jobs by the metadata values provided here. Populated for ListJobs and all GetJob views SUMMARY and higher.
      &quot;bigTableDetails&quot;: [ # Identification of a BigTable source used in the Dataflow job.
        { # Metadata for a BigTable connector used by the job.
          &quot;instanceId&quot;: &quot;A String&quot;, # InstanceId accessed in the connection.
          &quot;projectId&quot;: &quot;A String&quot;, # ProjectId accessed in the connection.
          &quot;tableId&quot;: &quot;A String&quot;, # TableId accessed in the connection.
        },
      ],
      &quot;bigqueryDetails&quot;: [ # Identification of a BigQuery source used in the Dataflow job.
        { # Metadata for a BigQuery connector used by the job.
          &quot;dataset&quot;: &quot;A String&quot;, # Dataset accessed in the connection.
          &quot;projectId&quot;: &quot;A String&quot;, # Project accessed in the connection.
          &quot;query&quot;: &quot;A String&quot;, # Query used to access data in the connection.
          &quot;table&quot;: &quot;A String&quot;, # Table accessed in the connection.
        },
      ],
      &quot;datastoreDetails&quot;: [ # Identification of a Datastore source used in the Dataflow job.
        { # Metadata for a Datastore connector used by the job.
          &quot;namespace&quot;: &quot;A String&quot;, # Namespace used in the connection.
          &quot;projectId&quot;: &quot;A String&quot;, # ProjectId accessed in the connection.
        },
      ],
      &quot;fileDetails&quot;: [ # Identification of a File source used in the Dataflow job.
        { # Metadata for a File connector used by the job.
          &quot;filePattern&quot;: &quot;A String&quot;, # File Pattern used to access files by the connector.
        },
      ],
      &quot;pubsubDetails&quot;: [ # Identification of a PubSub source used in the Dataflow job.
        { # Metadata for a PubSub connector used by the job.
          &quot;subscription&quot;: &quot;A String&quot;, # Subscription used in the connection.
          &quot;topic&quot;: &quot;A String&quot;, # Topic accessed in the connection.
        },
      ],
      &quot;sdkVersion&quot;: { # The version of the SDK used to run the job. # The SDK version used to run the job.
        &quot;sdkSupportStatus&quot;: &quot;A String&quot;, # The support status for this SDK version.
        &quot;version&quot;: &quot;A String&quot;, # The version of the SDK used to run the job.
        &quot;versionDisplayName&quot;: &quot;A String&quot;, # A readable string describing the version of the SDK.
      },
      &quot;spannerDetails&quot;: [ # Identification of a Spanner source used in the Dataflow job.
        { # Metadata for a Spanner connector used by the job.
          &quot;databaseId&quot;: &quot;A String&quot;, # DatabaseId accessed in the connection.
          &quot;instanceId&quot;: &quot;A String&quot;, # InstanceId accessed in the connection.
          &quot;projectId&quot;: &quot;A String&quot;, # ProjectId accessed in the connection.
        },
      ],
    },
    &quot;labels&quot;: { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be &lt;= 128 bytes in size.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;location&quot;: &quot;A String&quot;, # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains this job.
    &quot;name&quot;: &quot;A String&quot;, # 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])?`
    &quot;pipelineDescription&quot;: { # A descriptive representation of submitted pipeline as well as the executed form. This data is provided by the Dataflow service for ease of visualizing the pipeline and interpreting Dataflow provided metrics. # Preliminary field: The format of this data may change at any time. A description of the user pipeline and stages through which it is executed. Created by Cloud Dataflow service. Only retrieved with JOB_VIEW_DESCRIPTION or JOB_VIEW_ALL.
      &quot;displayData&quot;: [ # Pipeline level display data.
        { # Data provided with a pipeline or transform to provide descriptive info.
          &quot;boolValue&quot;: True or False, # Contains value if the data is of a boolean type.
          &quot;durationValue&quot;: &quot;A String&quot;, # Contains value if the data is of duration type.
          &quot;floatValue&quot;: 3.14, # Contains value if the data is of float type.
          &quot;int64Value&quot;: &quot;A String&quot;, # Contains value if the data is of int64 type.
          &quot;javaClassValue&quot;: &quot;A String&quot;, # Contains value if the data is of java class type.
          &quot;key&quot;: &quot;A String&quot;, # The key identifying the display data. This is intended to be used as a label for the display data when viewed in a dax monitoring system.
          &quot;label&quot;: &quot;A String&quot;, # An optional label to display in a dax UI for the element.
          &quot;namespace&quot;: &quot;A String&quot;, # The namespace for the key. This is usually a class name or programming language namespace (i.e. python module) which defines the display data. This allows a dax monitoring system to specially handle the data and perform custom rendering.
          &quot;shortStrValue&quot;: &quot;A String&quot;, # A possible additional shorter value to display. For example a java_class_name_value of com.mypackage.MyDoFn will be stored with MyDoFn as the short_str_value and com.mypackage.MyDoFn as the java_class_name value. short_str_value can be displayed and java_class_name_value will be displayed as a tooltip.
          &quot;strValue&quot;: &quot;A String&quot;, # Contains value if the data is of string type.
          &quot;timestampValue&quot;: &quot;A String&quot;, # Contains value if the data is of timestamp type.
          &quot;url&quot;: &quot;A String&quot;, # An optional full URL.
        },
      ],
      &quot;executionPipelineStage&quot;: [ # Description of each stage of execution of the pipeline.
        { # Description of the composing transforms, names/ids, and input/outputs of a stage of execution. Some composing transforms and sources may have been generated by the Dataflow service during execution planning.
          &quot;componentSource&quot;: [ # Collections produced and consumed by component transforms of this stage.
            { # Description of an interstitial value between transforms in an execution stage.
              &quot;name&quot;: &quot;A String&quot;, # Dataflow service generated name for this source.
              &quot;originalTransformOrCollection&quot;: &quot;A String&quot;, # User name for the original user transform or collection with which this source is most closely associated.
              &quot;userName&quot;: &quot;A String&quot;, # Human-readable name for this transform; may be user or system generated.
            },
          ],
          &quot;componentTransform&quot;: [ # Transforms that comprise this execution stage.
            { # Description of a transform executed as part of an execution stage.
              &quot;name&quot;: &quot;A String&quot;, # Dataflow service generated name for this source.
              &quot;originalTransform&quot;: &quot;A String&quot;, # User name for the original user transform with which this transform is most closely associated.
              &quot;userName&quot;: &quot;A String&quot;, # Human-readable name for this transform; may be user or system generated.
            },
          ],
          &quot;id&quot;: &quot;A String&quot;, # Dataflow service generated id for this stage.
          &quot;inputSource&quot;: [ # Input sources for this stage.
            { # Description of an input or output of an execution stage.
              &quot;name&quot;: &quot;A String&quot;, # Dataflow service generated name for this source.
              &quot;originalTransformOrCollection&quot;: &quot;A String&quot;, # User name for the original user transform or collection with which this source is most closely associated.
              &quot;sizeBytes&quot;: &quot;A String&quot;, # Size of the source, if measurable.
              &quot;userName&quot;: &quot;A String&quot;, # Human-readable name for this source; may be user or system generated.
            },
          ],
          &quot;kind&quot;: &quot;A String&quot;, # Type of tranform this stage is executing.
          &quot;name&quot;: &quot;A String&quot;, # Dataflow service generated name for this stage.
          &quot;outputSource&quot;: [ # Output sources for this stage.
            { # Description of an input or output of an execution stage.
              &quot;name&quot;: &quot;A String&quot;, # Dataflow service generated name for this source.
              &quot;originalTransformOrCollection&quot;: &quot;A String&quot;, # User name for the original user transform or collection with which this source is most closely associated.
              &quot;sizeBytes&quot;: &quot;A String&quot;, # Size of the source, if measurable.
              &quot;userName&quot;: &quot;A String&quot;, # Human-readable name for this source; may be user or system generated.
            },
          ],
          &quot;prerequisiteStage&quot;: [ # Other stages that must complete before this stage can run.
            &quot;A String&quot;,
          ],
        },
      ],
      &quot;originalPipelineTransform&quot;: [ # Description of each transform in the pipeline and collections between them.
        { # Description of the type, names/ids, and input/outputs for a transform.
          &quot;displayData&quot;: [ # Transform-specific display data.
            { # Data provided with a pipeline or transform to provide descriptive info.
              &quot;boolValue&quot;: True or False, # Contains value if the data is of a boolean type.
              &quot;durationValue&quot;: &quot;A String&quot;, # Contains value if the data is of duration type.
              &quot;floatValue&quot;: 3.14, # Contains value if the data is of float type.
              &quot;int64Value&quot;: &quot;A String&quot;, # Contains value if the data is of int64 type.
              &quot;javaClassValue&quot;: &quot;A String&quot;, # Contains value if the data is of java class type.
              &quot;key&quot;: &quot;A String&quot;, # The key identifying the display data. This is intended to be used as a label for the display data when viewed in a dax monitoring system.
              &quot;label&quot;: &quot;A String&quot;, # An optional label to display in a dax UI for the element.
              &quot;namespace&quot;: &quot;A String&quot;, # The namespace for the key. This is usually a class name or programming language namespace (i.e. python module) which defines the display data. This allows a dax monitoring system to specially handle the data and perform custom rendering.
              &quot;shortStrValue&quot;: &quot;A String&quot;, # A possible additional shorter value to display. For example a java_class_name_value of com.mypackage.MyDoFn will be stored with MyDoFn as the short_str_value and com.mypackage.MyDoFn as the java_class_name value. short_str_value can be displayed and java_class_name_value will be displayed as a tooltip.
              &quot;strValue&quot;: &quot;A String&quot;, # Contains value if the data is of string type.
              &quot;timestampValue&quot;: &quot;A String&quot;, # Contains value if the data is of timestamp type.
              &quot;url&quot;: &quot;A String&quot;, # An optional full URL.
            },
          ],
          &quot;id&quot;: &quot;A String&quot;, # SDK generated id of this transform instance.
          &quot;inputCollectionName&quot;: [ # User names for all collection inputs to this transform.
            &quot;A String&quot;,
          ],
          &quot;kind&quot;: &quot;A String&quot;, # Type of transform.
          &quot;name&quot;: &quot;A String&quot;, # User provided name for this transform instance.
          &quot;outputCollectionName&quot;: [ # User names for all collection outputs to this transform.
            &quot;A String&quot;,
          ],
        },
      ],
    },
    &quot;projectId&quot;: &quot;A String&quot;, # The ID of the Cloud Platform project that the job belongs to.
    &quot;replaceJobId&quot;: &quot;A String&quot;, # 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.
    &quot;replacedByJobId&quot;: &quot;A String&quot;, # If another job is an update of this job (and thus, this job is in `JOB_STATE_UPDATED`), this field contains the ID of that job.
    &quot;requestedState&quot;: &quot;A String&quot;, # The job&#x27;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&#x27;s requested state to `JOB_STATE_CANCELLED` or `JOB_STATE_DONE`, irrevocably terminating the job if it has not already reached a terminal state.
    &quot;stageStates&quot;: [ # This field may be mutated by the Cloud Dataflow service; callers cannot mutate it.
      { # A message describing the state of a particular execution stage.
        &quot;currentStateTime&quot;: &quot;A String&quot;, # The time at which the stage transitioned to this state.
        &quot;executionStageName&quot;: &quot;A String&quot;, # The name of the execution stage.
        &quot;executionStageState&quot;: &quot;A String&quot;, # Executions stage states allow the same set of values as JobState.
      },
    ],
    &quot;startTime&quot;: &quot;A String&quot;, # The timestamp when the job was started (transitioned to JOB_STATE_PENDING). Flexible resource scheduling jobs are started with some delay after job creation, so start_time is unset before start and is updated when the job is started by the Cloud Dataflow service. For other jobs, start_time always equals to create_time and is immutable and set by the Cloud Dataflow service.
    &quot;steps&quot;: [ # Exactly one of step or steps_location should be specified. The top-level steps that constitute the entire job. Only retrieved with JOB_VIEW_ALL.
      { # 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&#x27;s an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection&#x27;s elements. * Validate the elements. * Apply a user-defined function to map each element to some 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 Cloud Dataflow service may be used to run many different types of jobs, not just Map-Reduce.
        &quot;kind&quot;: &quot;A String&quot;, # The kind of step in the Cloud Dataflow job.
        &quot;name&quot;: &quot;A String&quot;, # The name that identifies the step. This must be unique for each step with respect to all other steps in the Cloud Dataflow job.
        &quot;properties&quot;: { # Named properties associated with the step. Each kind of predefined step has its own required set of properties. Must be provided on Create. Only retrieved with JOB_VIEW_ALL.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
    ],
    &quot;stepsLocation&quot;: &quot;A String&quot;, # The GCS location where the steps are stored.
    &quot;tempFiles&quot;: [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
      &quot;A String&quot;,
    ],
    &quot;transformNameMapping&quot;: { # The map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;type&quot;: &quot;A String&quot;, # The type of Cloud Dataflow job.
  },
}</pre>
</div>

</body></html>