<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;autoscalingAlgorithm&quot;: &quot;A String&quot;, # The algorithm to use for autoscaling
        &quot;diskSizeGb&quot;: 42, # Worker disk size, in gigabytes.
        &quot;dumpHeapOnOom&quot;: True or False, # If true, save a heap dump before killing a thread or process which is GC thrashing or out of memory. The location of the heap file will either be echoed back to the user, or the user will be given the opportunity to download the heap file.
        &quot;enableStreamingEngine&quot;: True or False, # Whether to enable Streaming Engine for the job.
        &quot;flexrsGoal&quot;: &quot;A String&quot;, # Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/flexrs
        &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;launcherMachineType&quot;: &quot;A String&quot;, # The machine type to use for launching the job. The default is n1-standard-1.
        &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;saveHeapDumpsToGcsPath&quot;: &quot;A String&quot;, # Cloud Storage bucket (directory) to upload heap dumps to the given location. Enabling this implies that heap dumps should be generated on OOM (dump_heap_on_oom is set to true).
        &quot;sdkContainerImage&quot;: &quot;A String&quot;, # Docker registry location of container image to use for the &#x27;worker harness. Default is the container for the version of the SDK. Note this field is only valid for portable pipelines.
        &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the service account to run the job as.
        &quot;stagingLocation&quot;: &quot;A String&quot;, # The Cloud Storage path for staging local files. Must be a valid Cloud Storage URL, beginning with `gs://`.
        &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;customMetadata&quot;: { # Optional. Additional metadata for describing this parameter.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &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;, # Cloud Storage 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;autoscalingAlgorithm&quot;: &quot;A String&quot;, # The algorithm to use for autoscaling
      &quot;diskSizeGb&quot;: 42, # Worker disk size, in gigabytes.
      &quot;dumpHeapOnOom&quot;: True or False, # If true, save a heap dump before killing a thread or process which is GC thrashing or out of memory. The location of the heap file will either be echoed back to the user, or the user will be given the opportunity to download the heap file.
      &quot;enableStreamingEngine&quot;: True or False, # Whether to enable Streaming Engine for the job.
      &quot;flexrsGoal&quot;: &quot;A String&quot;, # Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/flexrs
      &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;launcherMachineType&quot;: &quot;A String&quot;, # The machine type to use for launching the job. The default is n1-standard-1.
      &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;saveHeapDumpsToGcsPath&quot;: &quot;A String&quot;, # Cloud Storage bucket (directory) to upload heap dumps to the given location. Enabling this implies that heap dumps should be generated on OOM (dump_heap_on_oom is set to true).
      &quot;sdkContainerImage&quot;: &quot;A String&quot;, # Docker registry location of container image to use for the &#x27;worker harness. Default is the container for the version of the SDK. Note this field is only valid for portable pipelines.
      &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the service account to run the job as.
      &quot;stagingLocation&quot;: &quot;A String&quot;, # The Cloud Storage path for staging local files. Must be a valid Cloud Storage URL, beginning with `gs://`.
      &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;: { # Use this to pass transform_name_mappings for streaming update jobs. 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. nextID: 26 # 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;debugOptions&quot;: { # Describes any options that have an effect on the debugging of pipelines. # Any debugging options to be supplied to the job.
        &quot;enableHotKeyLogging&quot;: True or False, # When true, enables the logging of the literal hot key to the user&#x27;s Cloud Logging.
      },
      &quot;experiments&quot;: [ # The list of experiments to enable. This field should be used for SDK related experiments and not for service related experiments. The proper field for service related experiments is service_options.
        &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;serviceOptions&quot;: [ # The list of service options to enable. This field should be used for service related experiments only. These experiments, when graduating to GA, should be replaced by dedicated fields or become default (i.e. always on).
        &quot;A String&quot;,
      ],
      &quot;shuffleMode&quot;: &quot;A String&quot;, # Output only. The shuffle mode used for the job.
      &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;environmentId&quot;: &quot;A String&quot;, # Environment ID for the Beam runner API proto Environment that corresponds to the current SDK Harness.
              &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 Cloud Bigtable source used in the Dataflow job.
        { # Metadata for a Cloud 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 Pub/Sub source used in the Dataflow job.
        { # Metadata for a Pub/Sub 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 transform 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;satisfiesPzs&quot;: True or False, # Reserved for future use. This field is set only in responses from the server; it is ignored if it is set in any requests.
    &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 Cloud Storage 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>