<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;additionalPipelineOptions&quot;: [ # Optional. Additional pipeline option 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, when processing time is spent almost entirely on garbage collection (GC), saves a heap dump before ending the thread or process. If false, ends the thread or process without saving a heap dump. Does not save a heap dump when the Java Virtual Machine (JVM) has an out of memory error during processing. The location of the heap file is either echoed back to the user, or the user is given the opportunity to download the heap file.
        &quot;enableLauncherVmSerialPortLogging&quot;: True or False, # If true serial port logging will be enabled for the launcher VM.
        &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. Enabling this field implies that `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;streamingMode&quot;: &quot;A String&quot;, # Optional. Specifies the Streaming Engine message processing guarantees. Reduces cost and latency but might result in duplicate messages committed to storage. Designed to run simple mapping streaming ETL jobs at the lowest cost. For example, Change Data Capture (CDC) to BigQuery is a canonical use case. For more information, see [Set the pipeline streaming mode](https://cloud.google.com/dataflow/docs/guides/streaming-modes).
        &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;imageRepositoryCertPath&quot;: &quot;A String&quot;, # Cloud Storage path to self-signed certificate of private registry.
      &quot;imageRepositoryPasswordSecretId&quot;: &quot;A String&quot;, # Secret Manager secret id for password to authenticate to private registry.
      &quot;imageRepositoryUsernameSecretId&quot;: &quot;A String&quot;, # Secret Manager secret id for username to authenticate to private registry.
      &quot;metadata&quot;: { # Metadata describing a template. # Metadata describing a template including description and validation rules.
        &quot;defaultStreamingMode&quot;: &quot;A String&quot;, # Optional. Indicates the default streaming mode for a streaming template. Only valid if both supports_at_least_once and supports_exactly_once are true. Possible values: UNSPECIFIED, EXACTLY_ONCE and AT_LEAST_ONCE
        &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;defaultValue&quot;: &quot;A String&quot;, # Optional. The default values will pre-populate the parameter with the given value from the proto. If default_value is left empty, the parameter will be populated with a default of the relevant type, e.g. false for a boolean.
            &quot;enumOptions&quot;: [ # Optional. The options shown when ENUM ParameterType is specified.
              { # ParameterMetadataEnumOption specifies the option shown in the enum form.
                &quot;description&quot;: &quot;A String&quot;, # Optional. The description to display for the enum option.
                &quot;label&quot;: &quot;A String&quot;, # Optional. The label to display for the enum option.
                &quot;value&quot;: &quot;A String&quot;, # Required. The value of the enum option.
              },
            ],
            &quot;groupName&quot;: &quot;A String&quot;, # Optional. Specifies a group name for this parameter to be rendered under. Group header text will be rendered exactly as specified in this field. Only considered when parent_name is NOT provided.
            &quot;helpText&quot;: &quot;A String&quot;, # Required. The help text to display for the parameter.
            &quot;hiddenUi&quot;: True or False, # Optional. Whether the parameter should be hidden in the UI.
            &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;parentName&quot;: &quot;A String&quot;, # Optional. Specifies the name of the parent parameter. Used in conjunction with &#x27;parent_trigger_values&#x27; to make this parameter conditional (will only be rendered conditionally). Should be mappable to a ParameterMetadata.name field.
            &quot;parentTriggerValues&quot;: [ # Optional. The value(s) of the &#x27;parent_name&#x27; parameter which will trigger this parameter to be shown. If left empty, ANY non-empty value in parent_name will trigger this parameter to be shown. Only considered when this parameter is conditional (when &#x27;parent_name&#x27; has been provided).
              &quot;A String&quot;,
            ],
            &quot;regexes&quot;: [ # Optional. Regexes that the parameter must match.
              &quot;A String&quot;,
            ],
          },
        ],
        &quot;streaming&quot;: True or False, # Optional. Indicates if the template is streaming or not.
        &quot;supportsAtLeastOnce&quot;: True or False, # Optional. Indicates if the streaming template supports at least once mode.
        &quot;supportsExactlyOnce&quot;: True or False, # Optional. Indicates if the streaming template supports exactly once mode.
        &quot;yamlDefinition&quot;: &quot;A String&quot;, # Optional. For future use.
      },
      &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;additionalPipelineOptions&quot;: [ # Optional. Additional pipeline option 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, when processing time is spent almost entirely on garbage collection (GC), saves a heap dump before ending the thread or process. If false, ends the thread or process without saving a heap dump. Does not save a heap dump when the Java Virtual Machine (JVM) has an out of memory error during processing. The location of the heap file is either echoed back to the user, or the user is given the opportunity to download the heap file.
      &quot;enableLauncherVmSerialPortLogging&quot;: True or False, # If true serial port logging will be enabled for the launcher VM.
      &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. Enabling this field implies that `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;streamingMode&quot;: &quot;A String&quot;, # Optional. Specifies the Streaming Engine message processing guarantees. Reduces cost and latency but might result in duplicate messages committed to storage. Designed to run simple mapping streaming ETL jobs at the lowest cost. For example, Change Data Capture (CDC) to BigQuery is a canonical use case. For more information, see [Set the pipeline streaming mode](https://cloud.google.com/dataflow/docs/guides/streaming-modes).
      &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. Do not enter confidential information when you supply string values using the API. # 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 might be mutated by the 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. # Optional. 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;, # Optional. 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. # Optional. Any debugging options to be supplied to the job.
        &quot;dataSampling&quot;: { # Configuration options for sampling elements. # Configuration options for sampling elements from a running pipeline.
          &quot;behaviors&quot;: [ # List of given sampling behaviors to enable. For example, specifying behaviors = [ALWAYS_ON] samples in-flight elements but does not sample exceptions. Can be used to specify multiple behaviors like, behaviors = [ALWAYS_ON, EXCEPTIONS] for specifying periodic sampling and exception sampling. If DISABLED is in the list, then sampling will be disabled and ignore the other given behaviors. Ordering does not matter.
            &quot;A String&quot;,
          ],
        },
        &quot;enableHotKeyLogging&quot;: True or False, # Optional. 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;, # Optional. 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;, # Optional. Identity to run virtual machines as. Defaults to the default account.
      &quot;serviceKmsKeyName&quot;: &quot;A String&quot;, # Optional. 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;: [ # Optional. 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;streamingMode&quot;: &quot;A String&quot;, # Optional. Specifies the Streaming Engine message processing guarantees. Reduces cost and latency but might result in duplicate messages committed to storage. Designed to run simple mapping streaming ETL jobs at the lowest cost. For example, Change Data Capture (CDC) to BigQuery is a canonical use case. For more information, see [Set the pipeline streaming mode](https://cloud.google.com/dataflow/docs/guides/streaming-modes).
      &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;usePublicIps&quot;: True or False, # Optional. True when any worker pool that uses public IPs is present.
      &quot;useStreamingEngineResourceBasedBilling&quot;: True or False, # Output only. Whether the job uses the Streaming Engine resource-based billing model.
      &quot;userAgent&quot;: { # Optional. 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 an SDK harness container for executing Dataflow pipelines.
              &quot;capabilities&quot;: [ # The set of capabilities enumerated in the above Environment proto. See also [beam_runner_api.proto](https://github.com/apache/beam/blob/master/model/pipeline/src/main/proto/org/apache/beam/model/pipeline/v1/beam_runner_api.proto)
                &quot;A String&quot;,
              ],
              &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;, # Optional. 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;, # Optional. 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 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;bugs&quot;: [ # Output only. Known bugs found in this SDK version.
          { # A bug found in the Dataflow SDK.
            &quot;severity&quot;: &quot;A String&quot;, # Output only. How severe the SDK bug is.
            &quot;type&quot;: &quot;A String&quot;, # Output only. Describes the impact of this SDK bug.
            &quot;uri&quot;: &quot;A String&quot;, # Output only. Link to more information on the bug.
          },
        ],
        &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;userDisplayProperties&quot;: { # List of display properties to help UI filter jobs.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &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;, # Optional. The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains this job.
    &quot;name&quot;: &quot;A String&quot;, # Optional. The user-specified Dataflow job name. Only one active job with a given name can exist in a project within one region at any given time. Jobs in different regions can have the same name. If a caller attempts to create a job with the same name as an active job that already exists, the attempt returns the existing job. The name must match the regular expression `[a-z]([-a-z0-9]{0,1022}[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;stepNamesHash&quot;: &quot;A String&quot;, # A hash value of the submitted pipeline portable graph step names if exists.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # The ID of the Google Cloud 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. Applies to `UpdateJob` requests. Set `requested_state` with `UpdateJob` requests to switch between the states `JOB_STATE_STOPPED` and `JOB_STATE_RUNNING`. You can also use `UpdateJob` requests to change a job&#x27;s state from `JOB_STATE_RUNNING` to `JOB_STATE_CANCELLED`, `JOB_STATE_DONE`, or `JOB_STATE_DRAINED`. These states irrevocably terminate the job if it hasn&#x27;t already reached a terminal state. This field has no effect on `CreateJob` requests.
    &quot;runtimeUpdatableParams&quot;: { # Additional job parameters that can only be updated during runtime using the projects.jobs.update method. These fields have no effect when specified during job creation. # This field may ONLY be modified at runtime using the projects.jobs.update method to adjust job behavior. This field has no effect when specified at job creation.
      &quot;maxNumWorkers&quot;: 42, # The maximum number of workers to cap autoscaling at. This field is currently only supported for Streaming Engine jobs.
      &quot;minNumWorkers&quot;: 42, # The minimum number of workers to scale down to. This field is currently only supported for Streaming Engine jobs.
      &quot;workerUtilizationHint&quot;: 3.14, # Target worker utilization, compared against the aggregate utilization of the worker pool by autoscaler, to determine upscaling and downscaling when absent other constraints such as backlog. For more information, see [Update an existing pipeline](https://cloud.google.com/dataflow/docs/guides/updating-a-pipeline).
    },
    &quot;satisfiesPzi&quot;: True or False, # Output only. 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;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;serviceResources&quot;: { # Resources used by the Dataflow Service to run the job. # Output only. Resources used by the Dataflow Service to run the job.
      &quot;zones&quot;: [ # Output only. List of Cloud Zones being used by the Dataflow Service for this job. Example: us-central1-c
        &quot;A String&quot;,
      ],
    },
    &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. **Note:** The properties of this object are not stable and might change. 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;: { # Optional. 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;, # Optional. The type of Dataflow job.
  },
}</pre>
</div>

</body></html>