<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.jobs.html">jobs</a> . <a href="dataflow_v1b3.projects.jobs.workItems.html">workItems</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="#lease">lease(projectId, jobId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Leases a dataflow WorkItem to run.</p>
<p class="toc_element">
  <code><a href="#reportStatus">reportStatus(projectId, jobId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Reports the status of dataflow WorkItems leased by a worker.</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="lease">lease(projectId, jobId, body=None, x__xgafv=None)</code>
  <pre>Leases a dataflow WorkItem to run.

Args:
  projectId: string, Identifies the project this worker belongs to. (required)
  jobId: string, Identifies the workflow job this worker belongs to. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to lease WorkItems.
  &quot;currentWorkerTime&quot;: &quot;A String&quot;, # The current timestamp at the worker.
  &quot;location&quot;: &quot;A String&quot;, # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains the WorkItem&#x27;s job.
  &quot;requestedLeaseDuration&quot;: &quot;A String&quot;, # The initial lease period.
  &quot;unifiedWorkerRequest&quot;: { # Untranslated bag-of-bytes WorkRequest from UnifiedWorker.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;workItemTypes&quot;: [ # Filter for WorkItem type.
    &quot;A String&quot;,
  ],
  &quot;workerCapabilities&quot;: [ # Worker capabilities. WorkItems might be limited to workers with specific capabilities.
    &quot;A String&quot;,
  ],
  &quot;workerId&quot;: &quot;A String&quot;, # Identifies the worker leasing work -- typically the ID of the virtual machine running the worker.
}

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

Returns:
  An object of the form:

    { # Response to a request to lease WorkItems.
  &quot;unifiedWorkerResponse&quot;: { # Untranslated bag-of-bytes WorkResponse for UnifiedWorker.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;workItems&quot;: [ # A list of the leased WorkItems.
    { # WorkItem represents basic information about a WorkItem to be executed in the cloud.
      &quot;configuration&quot;: &quot;A String&quot;, # Work item-specific configuration as an opaque blob.
      &quot;id&quot;: &quot;A String&quot;, # Identifies this WorkItem.
      &quot;initialReportIndex&quot;: &quot;A String&quot;, # The initial index to use when reporting the status of the WorkItem.
      &quot;jobId&quot;: &quot;A String&quot;, # Identifies the workflow job this WorkItem belongs to.
      &quot;leaseExpireTime&quot;: &quot;A String&quot;, # Time when the lease on this Work will expire.
      &quot;mapTask&quot;: { # MapTask consists of an ordered set of instructions, each of which describes one particular low-level operation for the worker to perform in order to accomplish the MapTask&#x27;s WorkItem. Each instruction must appear in the list before any instructions which depends on its output. # Additional information for MapTask WorkItems.
        &quot;counterPrefix&quot;: &quot;A String&quot;, # Counter prefix that can be used to prefix counters. Not currently used in Dataflow.
        &quot;instructions&quot;: [ # The instructions in the MapTask.
          { # Describes a particular operation comprising a MapTask.
            &quot;flatten&quot;: { # An instruction that copies its inputs (zero or more) to its (single) output. # Additional information for Flatten instructions.
              &quot;inputs&quot;: [ # Describes the inputs to the flatten instruction.
                { # An input of an instruction, as a reference to an output of a producer instruction.
                  &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                  &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
                },
              ],
            },
            &quot;name&quot;: &quot;A String&quot;, # User-provided name of this operation.
            &quot;originalName&quot;: &quot;A String&quot;, # System-defined name for the operation in the original workflow graph.
            &quot;outputs&quot;: [ # Describes the outputs of the instruction.
              { # An output of an instruction.
                &quot;codec&quot;: { # The codec to use to encode data being written via this output.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;name&quot;: &quot;A String&quot;, # The user-provided name of this output.
                &quot;onlyCountKeyBytes&quot;: True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the key size.
                &quot;onlyCountValueBytes&quot;: True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the value size.
                &quot;originalName&quot;: &quot;A String&quot;, # System-defined name for this output in the original workflow graph. Outputs that do not contribute to an original instruction do not set this.
                &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of this output. Unique across the workflow.
              },
            ],
            &quot;parDo&quot;: { # An instruction that does a ParDo operation. Takes one main input and zero or more side inputs, and produces zero or more outputs. Runs user code. # Additional information for ParDo instructions.
              &quot;input&quot;: { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
                &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
              },
              &quot;multiOutputInfos&quot;: [ # Information about each of the outputs, if user_fn is a MultiDoFn.
                { # Information about an output of a multi-output DoFn.
                  &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will emit to this output by; this should correspond to the tag of some SideInputInfo.
                },
              ],
              &quot;numOutputs&quot;: 42, # The number of outputs.
              &quot;sideInputs&quot;: [ # Zero or more side inputs.
                { # Information about a side input of a DoFn or an input of a SeqDoFn.
                  &quot;kind&quot;: { # How to interpret the source element(s) as a side input value.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                  &quot;sources&quot;: [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
                    { # A source that records can be read and decoded from.
                      &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                        {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                        },
                      ],
                      &quot;codec&quot;: { # The codec to use to decode data read from the source.
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                      &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                      &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                        &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                        &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                        &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                      },
                      &quot;spec&quot;: { # The source to read from, plus its parameters.
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                    },
                  ],
                  &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
                },
              ],
              &quot;userFn&quot;: { # The user function to invoke.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
            &quot;partialGroupByKey&quot;: { # An instruction that does a partial group-by-key. One input and one output. # Additional information for PartialGroupByKey instructions.
              &quot;input&quot;: { # An input of an instruction, as a reference to an output of a producer instruction. # Describes the input to the partial group-by-key instruction.
                &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
              },
              &quot;inputElementCodec&quot;: { # The codec to use for interpreting an element in the input PTable.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;originalCombineValuesInputStoreName&quot;: &quot;A String&quot;, # If this instruction includes a combining function this is the name of the intermediate store between the GBK and the CombineValues.
              &quot;originalCombineValuesStepName&quot;: &quot;A String&quot;, # If this instruction includes a combining function, this is the name of the CombineValues instruction lifted into this instruction.
              &quot;sideInputs&quot;: [ # Zero or more side inputs.
                { # Information about a side input of a DoFn or an input of a SeqDoFn.
                  &quot;kind&quot;: { # How to interpret the source element(s) as a side input value.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                  &quot;sources&quot;: [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
                    { # A source that records can be read and decoded from.
                      &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                        {
                          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                        },
                      ],
                      &quot;codec&quot;: { # The codec to use to decode data read from the source.
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                      &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                      &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                        &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                        &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                        &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                      },
                      &quot;spec&quot;: { # The source to read from, plus its parameters.
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                    },
                  ],
                  &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
                },
              ],
              &quot;valueCombiningFn&quot;: { # The value combining function to invoke.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
            &quot;read&quot;: { # An instruction that reads records. Takes no inputs, produces one output. # Additional information for Read instructions.
              &quot;source&quot;: { # A source that records can be read and decoded from. # The source to read from.
                &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                ],
                &quot;codec&quot;: { # The codec to use to decode data read from the source.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                  &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                  &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                  &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                },
                &quot;spec&quot;: { # The source to read from, plus its parameters.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
              },
            },
            &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of this operation. Unique across the workflow.
            &quot;write&quot;: { # An instruction that writes records. Takes one input, produces no outputs. # Additional information for Write instructions.
              &quot;input&quot;: { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
                &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
              },
              &quot;sink&quot;: { # A sink that records can be encoded and written to. # The sink to write to.
                &quot;codec&quot;: { # The codec to use to encode data written to the sink.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;spec&quot;: { # The sink to write to, plus its parameters.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
              },
            },
          },
        ],
        &quot;stageName&quot;: &quot;A String&quot;, # System-defined name of the stage containing this MapTask. Unique across the workflow.
        &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of this MapTask. Unique across the workflow.
      },
      &quot;packages&quot;: [ # Any required packages that need to be fetched in order to execute this WorkItem.
        { # 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;projectId&quot;: &quot;A String&quot;, # Identifies the cloud project this WorkItem belongs to.
      &quot;reportStatusInterval&quot;: &quot;A String&quot;, # Recommended reporting interval.
      &quot;seqMapTask&quot;: { # Describes a particular function to invoke. # Additional information for SeqMapTask WorkItems.
        &quot;inputs&quot;: [ # Information about each of the inputs.
          { # Information about a side input of a DoFn or an input of a SeqDoFn.
            &quot;kind&quot;: { # How to interpret the source element(s) as a side input value.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;sources&quot;: [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
              { # A source that records can be read and decoded from.
                &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                ],
                &quot;codec&quot;: { # The codec to use to decode data read from the source.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                  &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                  &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                  &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                },
                &quot;spec&quot;: { # The source to read from, plus its parameters.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
              },
            ],
            &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # The user-provided name of the SeqDo operation.
        &quot;outputInfos&quot;: [ # Information about each of the outputs.
          { # Information about an output of a SeqMapTask.
            &quot;sink&quot;: { # A sink that records can be encoded and written to. # The sink to write the output value to.
              &quot;codec&quot;: { # The codec to use to encode data written to the sink.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
              &quot;spec&quot;: { # The sink to write to, plus its parameters.
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            },
            &quot;tag&quot;: &quot;A String&quot;, # The id of the TupleTag the user code will tag the output value by.
          },
        ],
        &quot;stageName&quot;: &quot;A String&quot;, # System-defined name of the stage containing the SeqDo operation. Unique across the workflow.
        &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of the SeqDo operation. Unique across the workflow.
        &quot;userFn&quot;: { # The user function to invoke.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
      &quot;shellTask&quot;: { # A task which consists of a shell command for the worker to execute. # Additional information for ShellTask WorkItems.
        &quot;command&quot;: &quot;A String&quot;, # The shell command to run.
        &quot;exitCode&quot;: 42, # Exit code for the task.
      },
      &quot;sourceOperationTask&quot;: { # A work item that represents the different operations that can be performed on a user-defined Source specification. # Additional information for source operation WorkItems.
        &quot;getMetadata&quot;: { # A request to compute the SourceMetadata of a Source. # Information about a request to get metadata about a source.
          &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source whose metadata should be computed.
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
        &quot;name&quot;: &quot;A String&quot;, # User-provided name of the Read instruction for this source.
        &quot;originalName&quot;: &quot;A String&quot;, # System-defined name for the Read instruction for this source in the original workflow graph.
        &quot;split&quot;: { # Represents the operation to split a high-level Source specification into bundles (parts for parallel processing). At a high level, splitting of a source into bundles happens as follows: SourceSplitRequest is applied to the source. If it returns SOURCE_SPLIT_OUTCOME_USE_CURRENT, no further splitting happens and the source is used &quot;as is&quot;. Otherwise, splitting is applied recursively to each produced DerivedSource. As an optimization, for any Source, if its does_not_need_splitting is true, the framework assumes that splitting this source would return SOURCE_SPLIT_OUTCOME_USE_CURRENT, and doesn&#x27;t initiate a SourceSplitRequest. This applies both to the initial source being split and to bundles produced from it. # Information about a request to split a source.
          &quot;options&quot;: { # Hints for splitting a Source into bundles (parts for parallel processing) using SourceSplitRequest. # Hints for tuning the splitting process.
            &quot;desiredBundleSizeBytes&quot;: &quot;A String&quot;, # The source should be split into a set of bundles where the estimated size of each is approximately this many bytes.
            &quot;desiredShardSizeBytes&quot;: &quot;A String&quot;, # DEPRECATED in favor of desired_bundle_size_bytes.
          },
          &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source to be split.
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
        &quot;stageName&quot;: &quot;A String&quot;, # System-defined name of the stage containing the source operation. Unique across the workflow.
        &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of the Read instruction for this source. Unique across the workflow.
      },
      &quot;streamingComputationTask&quot;: { # A task which describes what action should be performed for the specified streaming computation ranges. # Additional information for StreamingComputationTask WorkItems.
        &quot;computationRanges&quot;: [ # Contains ranges of a streaming computation this task should apply to.
          { # Describes full or partial data disk assignment information of the computation ranges.
            &quot;computationId&quot;: &quot;A String&quot;, # The ID of the computation.
            &quot;rangeAssignments&quot;: [ # Data disk assignments for ranges from this computation.
              { # Data disk assignment information for a specific key-range of a sharded computation. Currently we only support UTF-8 character splits to simplify encoding into JSON.
                &quot;dataDisk&quot;: &quot;A String&quot;, # The name of the data disk where data for this range is stored. This name is local to the Google Cloud Platform project and uniquely identifies the disk within that project, for example &quot;myproject-1014-104817-4c2-harness-0-disk-1&quot;.
                &quot;end&quot;: &quot;A String&quot;, # The end (exclusive) of the key range.
                &quot;start&quot;: &quot;A String&quot;, # The start (inclusive) of the key range.
              },
            ],
          },
        ],
        &quot;dataDisks&quot;: [ # Describes the set of data disks this task should apply to.
          { # Describes mounted data disk.
            &quot;dataDisk&quot;: &quot;A String&quot;, # The name of the data disk. This name is local to the Google Cloud Platform project and uniquely identifies the disk within that project, for example &quot;myproject-1014-104817-4c2-harness-0-disk-1&quot;.
          },
        ],
        &quot;taskType&quot;: &quot;A String&quot;, # A type of streaming computation task.
      },
      &quot;streamingConfigTask&quot;: { # A task that carries configuration information for streaming computations. # Additional information for StreamingConfigTask WorkItems.
        &quot;commitStreamChunkSizeBytes&quot;: &quot;A String&quot;, # Chunk size for commit streams from the harness to windmill.
        &quot;getDataStreamChunkSizeBytes&quot;: &quot;A String&quot;, # Chunk size for get data streams from the harness to windmill.
        &quot;maxWorkItemCommitBytes&quot;: &quot;A String&quot;, # Maximum size for work item commit supported windmill storage layer.
        &quot;streamingComputationConfigs&quot;: [ # Set of computation configuration information.
          { # Configuration information for a single streaming computation.
            &quot;computationId&quot;: &quot;A String&quot;, # Unique identifier for this computation.
            &quot;instructions&quot;: [ # Instructions that comprise the computation.
              { # Describes a particular operation comprising a MapTask.
                &quot;flatten&quot;: { # An instruction that copies its inputs (zero or more) to its (single) output. # Additional information for Flatten instructions.
                  &quot;inputs&quot;: [ # Describes the inputs to the flatten instruction.
                    { # An input of an instruction, as a reference to an output of a producer instruction.
                      &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                      &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
                    },
                  ],
                },
                &quot;name&quot;: &quot;A String&quot;, # User-provided name of this operation.
                &quot;originalName&quot;: &quot;A String&quot;, # System-defined name for the operation in the original workflow graph.
                &quot;outputs&quot;: [ # Describes the outputs of the instruction.
                  { # An output of an instruction.
                    &quot;codec&quot;: { # The codec to use to encode data being written via this output.
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The user-provided name of this output.
                    &quot;onlyCountKeyBytes&quot;: True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the key size.
                    &quot;onlyCountValueBytes&quot;: True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the value size.
                    &quot;originalName&quot;: &quot;A String&quot;, # System-defined name for this output in the original workflow graph. Outputs that do not contribute to an original instruction do not set this.
                    &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of this output. Unique across the workflow.
                  },
                ],
                &quot;parDo&quot;: { # An instruction that does a ParDo operation. Takes one main input and zero or more side inputs, and produces zero or more outputs. Runs user code. # Additional information for ParDo instructions.
                  &quot;input&quot;: { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
                    &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                    &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
                  },
                  &quot;multiOutputInfos&quot;: [ # Information about each of the outputs, if user_fn is a MultiDoFn.
                    { # Information about an output of a multi-output DoFn.
                      &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will emit to this output by; this should correspond to the tag of some SideInputInfo.
                    },
                  ],
                  &quot;numOutputs&quot;: 42, # The number of outputs.
                  &quot;sideInputs&quot;: [ # Zero or more side inputs.
                    { # Information about a side input of a DoFn or an input of a SeqDoFn.
                      &quot;kind&quot;: { # How to interpret the source element(s) as a side input value.
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                      &quot;sources&quot;: [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
                        { # A source that records can be read and decoded from.
                          &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                            {
                              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                            },
                          ],
                          &quot;codec&quot;: { # The codec to use to decode data read from the source.
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                          },
                          &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                          &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                            &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                            &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                            &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                          },
                          &quot;spec&quot;: { # The source to read from, plus its parameters.
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                          },
                        },
                      ],
                      &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
                    },
                  ],
                  &quot;userFn&quot;: { # The user function to invoke.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                },
                &quot;partialGroupByKey&quot;: { # An instruction that does a partial group-by-key. One input and one output. # Additional information for PartialGroupByKey instructions.
                  &quot;input&quot;: { # An input of an instruction, as a reference to an output of a producer instruction. # Describes the input to the partial group-by-key instruction.
                    &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                    &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
                  },
                  &quot;inputElementCodec&quot;: { # The codec to use for interpreting an element in the input PTable.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                  &quot;originalCombineValuesInputStoreName&quot;: &quot;A String&quot;, # If this instruction includes a combining function this is the name of the intermediate store between the GBK and the CombineValues.
                  &quot;originalCombineValuesStepName&quot;: &quot;A String&quot;, # If this instruction includes a combining function, this is the name of the CombineValues instruction lifted into this instruction.
                  &quot;sideInputs&quot;: [ # Zero or more side inputs.
                    { # Information about a side input of a DoFn or an input of a SeqDoFn.
                      &quot;kind&quot;: { # How to interpret the source element(s) as a side input value.
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                      &quot;sources&quot;: [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
                        { # A source that records can be read and decoded from.
                          &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                            {
                              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                            },
                          ],
                          &quot;codec&quot;: { # The codec to use to decode data read from the source.
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                          },
                          &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                          &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                            &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                            &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                            &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                          },
                          &quot;spec&quot;: { # The source to read from, plus its parameters.
                            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                          },
                        },
                      ],
                      &quot;tag&quot;: &quot;A String&quot;, # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
                    },
                  ],
                  &quot;valueCombiningFn&quot;: { # The value combining function to invoke.
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                },
                &quot;read&quot;: { # An instruction that reads records. Takes no inputs, produces one output. # Additional information for Read instructions.
                  &quot;source&quot;: { # A source that records can be read and decoded from. # The source to read from.
                    &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                      {
                        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                      },
                    ],
                    &quot;codec&quot;: { # The codec to use to decode data read from the source.
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                    },
                    &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                    &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                      &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                      &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                      &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                    },
                    &quot;spec&quot;: { # The source to read from, plus its parameters.
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                    },
                  },
                },
                &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of this operation. Unique across the workflow.
                &quot;write&quot;: { # An instruction that writes records. Takes one input, produces no outputs. # Additional information for Write instructions.
                  &quot;input&quot;: { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
                    &quot;outputNum&quot;: 42, # The output index (origin zero) within the producer.
                    &quot;producerInstructionIndex&quot;: 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input&#x27;s instruction&#x27;s containing MapTask.
                  },
                  &quot;sink&quot;: { # A sink that records can be encoded and written to. # The sink to write to.
                    &quot;codec&quot;: { # The codec to use to encode data written to the sink.
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                    },
                    &quot;spec&quot;: { # The sink to write to, plus its parameters.
                      &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                    },
                  },
                },
              },
            ],
            &quot;stageName&quot;: &quot;A String&quot;, # Stage name of this computation.
            &quot;systemName&quot;: &quot;A String&quot;, # System defined name for this computation.
            &quot;transformUserNameToStateFamily&quot;: { # Map from user name of stateful transforms in this stage to their state family.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
          },
        ],
        &quot;userStepToStateFamilyNameMap&quot;: { # Map from user step names to state families.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;windmillServiceEndpoint&quot;: &quot;A String&quot;, # If present, the worker must use this endpoint to communicate with Windmill Service dispatchers, otherwise the worker must continue to use whatever endpoint it had been using.
        &quot;windmillServicePort&quot;: &quot;A String&quot;, # If present, the worker must use this port to communicate with Windmill Service dispatchers. Only applicable when windmill_service_endpoint is specified.
      },
      &quot;streamingSetupTask&quot;: { # A task which initializes part of a streaming Dataflow job. # Additional information for StreamingSetupTask WorkItems.
        &quot;drain&quot;: True or False, # The user has requested drain.
        &quot;receiveWorkPort&quot;: 42, # The TCP port on which the worker should listen for messages from other streaming computation workers.
        &quot;snapshotConfig&quot;: { # Streaming appliance snapshot configuration. # Configures streaming appliance snapshot.
          &quot;importStateEndpoint&quot;: &quot;A String&quot;, # Indicates which endpoint is used to import appliance state.
          &quot;snapshotId&quot;: &quot;A String&quot;, # If set, indicates the snapshot id for the snapshot being performed.
        },
        &quot;streamingComputationTopology&quot;: { # Global topology of the streaming Dataflow job, including all computations and their sharded locations. # The global topology of the streaming Dataflow job.
          &quot;computations&quot;: [ # The computations associated with a streaming Dataflow job.
            { # All configuration data for a particular Computation.
              &quot;computationId&quot;: &quot;A String&quot;, # The ID of the computation.
              &quot;inputs&quot;: [ # The inputs to the computation.
                { # Describes a stream of data, either as input to be processed or as output of a streaming Dataflow job.
                  &quot;customSourceLocation&quot;: { # Identifies the location of a custom souce. # The stream is a custom source.
                    &quot;stateful&quot;: True or False, # Whether this source is stateful.
                  },
                  &quot;pubsubLocation&quot;: { # Identifies a pubsub location to use for transferring data into or out of a streaming Dataflow job. # The stream is a pubsub stream.
                    &quot;dropLateData&quot;: True or False, # Indicates whether the pipeline allows late-arriving data.
                    &quot;idLabel&quot;: &quot;A String&quot;, # If set, contains a pubsub label from which to extract record ids. If left empty, record deduplication will be strictly best effort.
                    &quot;subscription&quot;: &quot;A String&quot;, # A pubsub subscription, in the form of &quot;pubsub.googleapis.com/subscriptions//&quot;
                    &quot;timestampLabel&quot;: &quot;A String&quot;, # If set, contains a pubsub label from which to extract record timestamps. If left empty, record timestamps will be generated upon arrival.
                    &quot;topic&quot;: &quot;A String&quot;, # A pubsub topic, in the form of &quot;pubsub.googleapis.com/topics//&quot;
                    &quot;trackingSubscription&quot;: &quot;A String&quot;, # If set, specifies the pubsub subscription that will be used for tracking custom time timestamps for watermark estimation.
                    &quot;withAttributes&quot;: True or False, # If true, then the client has requested to get pubsub attributes.
                  },
                  &quot;sideInputLocation&quot;: { # Identifies the location of a streaming side input. # The stream is a streaming side input.
                    &quot;stateFamily&quot;: &quot;A String&quot;, # Identifies the state family where this side input is stored.
                    &quot;tag&quot;: &quot;A String&quot;, # Identifies the particular side input within the streaming Dataflow job.
                  },
                  &quot;streamingStageLocation&quot;: { # Identifies the location of a streaming computation stage, for stage-to-stage communication. # The stream is part of another computation within the current streaming Dataflow job.
                    &quot;streamId&quot;: &quot;A String&quot;, # Identifies the particular stream within the streaming Dataflow job.
                  },
                },
              ],
              &quot;keyRanges&quot;: [ # The key ranges processed by the computation.
                { # Location information for a specific key-range of a sharded computation. Currently we only support UTF-8 character splits to simplify encoding into JSON.
                  &quot;dataDisk&quot;: &quot;A String&quot;, # The name of the data disk where data for this range is stored. This name is local to the Google Cloud Platform project and uniquely identifies the disk within that project, for example &quot;myproject-1014-104817-4c2-harness-0-disk-1&quot;.
                  &quot;deliveryEndpoint&quot;: &quot;A String&quot;, # The physical location of this range assignment to be used for streaming computation cross-worker message delivery.
                  &quot;deprecatedPersistentDirectory&quot;: &quot;A String&quot;, # DEPRECATED. The location of the persistent state for this range, as a persistent directory in the worker local filesystem.
                  &quot;end&quot;: &quot;A String&quot;, # The end (exclusive) of the key range.
                  &quot;start&quot;: &quot;A String&quot;, # The start (inclusive) of the key range.
                },
              ],
              &quot;outputs&quot;: [ # The outputs from the computation.
                { # Describes a stream of data, either as input to be processed or as output of a streaming Dataflow job.
                  &quot;customSourceLocation&quot;: { # Identifies the location of a custom souce. # The stream is a custom source.
                    &quot;stateful&quot;: True or False, # Whether this source is stateful.
                  },
                  &quot;pubsubLocation&quot;: { # Identifies a pubsub location to use for transferring data into or out of a streaming Dataflow job. # The stream is a pubsub stream.
                    &quot;dropLateData&quot;: True or False, # Indicates whether the pipeline allows late-arriving data.
                    &quot;idLabel&quot;: &quot;A String&quot;, # If set, contains a pubsub label from which to extract record ids. If left empty, record deduplication will be strictly best effort.
                    &quot;subscription&quot;: &quot;A String&quot;, # A pubsub subscription, in the form of &quot;pubsub.googleapis.com/subscriptions//&quot;
                    &quot;timestampLabel&quot;: &quot;A String&quot;, # If set, contains a pubsub label from which to extract record timestamps. If left empty, record timestamps will be generated upon arrival.
                    &quot;topic&quot;: &quot;A String&quot;, # A pubsub topic, in the form of &quot;pubsub.googleapis.com/topics//&quot;
                    &quot;trackingSubscription&quot;: &quot;A String&quot;, # If set, specifies the pubsub subscription that will be used for tracking custom time timestamps for watermark estimation.
                    &quot;withAttributes&quot;: True or False, # If true, then the client has requested to get pubsub attributes.
                  },
                  &quot;sideInputLocation&quot;: { # Identifies the location of a streaming side input. # The stream is a streaming side input.
                    &quot;stateFamily&quot;: &quot;A String&quot;, # Identifies the state family where this side input is stored.
                    &quot;tag&quot;: &quot;A String&quot;, # Identifies the particular side input within the streaming Dataflow job.
                  },
                  &quot;streamingStageLocation&quot;: { # Identifies the location of a streaming computation stage, for stage-to-stage communication. # The stream is part of another computation within the current streaming Dataflow job.
                    &quot;streamId&quot;: &quot;A String&quot;, # Identifies the particular stream within the streaming Dataflow job.
                  },
                },
              ],
              &quot;stateFamilies&quot;: [ # The state family values.
                { # State family configuration.
                  &quot;isRead&quot;: True or False, # If true, this family corresponds to a read operation.
                  &quot;stateFamily&quot;: &quot;A String&quot;, # The state family value.
                },
              ],
              &quot;systemStageName&quot;: &quot;A String&quot;, # The system stage name.
            },
          ],
          &quot;dataDiskAssignments&quot;: [ # The disks assigned to a streaming Dataflow job.
            { # Data disk assignment for a given VM instance.
              &quot;dataDisks&quot;: [ # Mounted data disks. The order is important a data disk&#x27;s 0-based index in this list defines which persistent directory the disk is mounted to, for example the list of { &quot;myproject-1014-104817-4c2-harness-0-disk-0&quot; }, { &quot;myproject-1014-104817-4c2-harness-0-disk-1&quot; }.
                &quot;A String&quot;,
              ],
              &quot;vmInstance&quot;: &quot;A String&quot;, # VM instance name the data disks mounted to, for example &quot;myproject-1014-104817-4c2-harness-0&quot;.
            },
          ],
          &quot;forwardingKeyBits&quot;: 42, # The size (in bits) of keys that will be assigned to source messages.
          &quot;persistentStateVersion&quot;: 42, # Version number for persistent state.
          &quot;userStageToComputationNameMap&quot;: { # Maps user stage names to stable computation names.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;workerHarnessPort&quot;: 42, # The TCP port used by the worker to communicate with the Dataflow worker harness.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="reportStatus">reportStatus(projectId, jobId, body=None, x__xgafv=None)</code>
  <pre>Reports the status of dataflow WorkItems leased by a worker.

Args:
  projectId: string, The project which owns the WorkItem&#x27;s job. (required)
  jobId: string, The job which the WorkItem is part of. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to report the status of WorkItems.
  &quot;currentWorkerTime&quot;: &quot;A String&quot;, # The current timestamp at the worker.
  &quot;location&quot;: &quot;A String&quot;, # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains the WorkItem&#x27;s job.
  &quot;unifiedWorkerRequest&quot;: { # Untranslated bag-of-bytes WorkProgressUpdateRequest from UnifiedWorker.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;workItemStatuses&quot;: [ # The order is unimportant, except that the order of the WorkItemServiceState messages in the ReportWorkItemStatusResponse corresponds to the order of WorkItemStatus messages here.
    { # Conveys a worker&#x27;s progress through the work described by a WorkItem.
      &quot;completed&quot;: True or False, # True if the WorkItem was completed (successfully or unsuccessfully).
      &quot;counterUpdates&quot;: [ # Worker output counters for this WorkItem.
        { # An update to a Counter sent from a worker.
          &quot;boolean&quot;: True or False, # Boolean value for And, Or.
          &quot;cumulative&quot;: True or False, # True if this counter is reported as the total cumulative aggregate value accumulated since the worker started working on this WorkItem. By default this is false, indicating that this counter is reported as a delta.
          &quot;distribution&quot;: { # A metric value representing a distribution. # Distribution data
            &quot;count&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The count of the number of elements present in the distribution.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
            &quot;histogram&quot;: { # Histogram of value counts for a distribution. Buckets have an inclusive lower bound and exclusive upper bound and use &quot;1,2,5 bucketing&quot;: The first bucket range is from [0,1) and all subsequent bucket boundaries are powers of ten multiplied by 1, 2, or 5. Thus, bucket boundaries are 0, 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, ... Negative values are not supported. # (Optional) Histogram of value counts for the distribution.
              &quot;bucketCounts&quot;: [ # Counts of values in each bucket. For efficiency, prefix and trailing buckets with count = 0 are elided. Buckets can store the full range of values of an unsigned long, with ULLONG_MAX falling into the 59th bucket with range [1e19, 2e19).
                &quot;A String&quot;,
              ],
              &quot;firstBucketOffset&quot;: 42, # Starting index of first stored bucket. The non-inclusive upper-bound of the ith bucket is given by: pow(10,(i-first_bucket_offset)/3) * (1,2,5)[(i-first_bucket_offset)%3]
            },
            &quot;max&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The maximum value present in the distribution.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
            &quot;min&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The minimum value present in the distribution.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
            &quot;sum&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # Use an int64 since we&#x27;d prefer the added precision. If overflow is a common problem we can detect it and use an additional int64 or a double.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
            &quot;sumOfSquares&quot;: 3.14, # Use a double since the sum of squares is likely to overflow int64.
          },
          &quot;floatingPoint&quot;: 3.14, # Floating point value for Sum, Max, Min.
          &quot;floatingPointList&quot;: { # A metric value representing a list of floating point numbers. # List of floating point numbers, for Set.
            &quot;elements&quot;: [ # Elements of the list.
              3.14,
            ],
          },
          &quot;floatingPointMean&quot;: { # A representation of a floating point mean metric contribution. # Floating point mean aggregation value for Mean.
            &quot;count&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The number of values being aggregated.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
            &quot;sum&quot;: 3.14, # The sum of all values being aggregated.
          },
          &quot;integer&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # Integer value for Sum, Max, Min.
            &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
            &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
          },
          &quot;integerGauge&quot;: { # A metric value representing temporal values of a variable. # Gauge data
            &quot;timestamp&quot;: &quot;A String&quot;, # The time at which this value was measured. Measured as msecs from epoch.
            &quot;value&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The value of the variable represented by this gauge.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
          },
          &quot;integerList&quot;: { # A metric value representing a list of integers. # List of integers, for Set.
            &quot;elements&quot;: [ # Elements of the list.
              { # A representation of an int64, n, that is immune to precision loss when encoded in JSON.
                &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
                &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
              },
            ],
          },
          &quot;integerMean&quot;: { # A representation of an integer mean metric contribution. # Integer mean aggregation value for Mean.
            &quot;count&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The number of values being aggregated.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
            &quot;sum&quot;: { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The sum of all values being aggregated.
              &quot;highBits&quot;: 42, # The high order bits, including the sign: n &gt;&gt; 32.
              &quot;lowBits&quot;: 42, # The low order bits: n &amp; 0xffffffff.
            },
          },
          &quot;internal&quot;: &quot;&quot;, # Value for internally-defined counters used by the Dataflow service.
          &quot;nameAndKind&quot;: { # Basic metadata about a counter. # Counter name and aggregation type.
            &quot;kind&quot;: &quot;A String&quot;, # Counter aggregation kind.
            &quot;name&quot;: &quot;A String&quot;, # Name of the counter.
          },
          &quot;shortId&quot;: &quot;A String&quot;, # The service-generated short identifier for this counter. The short_id -&gt; (name, metadata) mapping is constant for the lifetime of a job.
          &quot;stringList&quot;: { # A metric value representing a list of strings. # List of strings, for Set.
            &quot;elements&quot;: [ # Elements of the list.
              &quot;A String&quot;,
            ],
          },
          &quot;structuredNameAndMetadata&quot;: { # A single message which encapsulates structured name and metadata for a given counter. # Counter structured name and metadata.
            &quot;metadata&quot;: { # CounterMetadata includes all static non-name non-value counter attributes. # Metadata associated with a counter
              &quot;description&quot;: &quot;A String&quot;, # Human-readable description of the counter semantics.
              &quot;kind&quot;: &quot;A String&quot;, # Counter aggregation kind.
              &quot;otherUnits&quot;: &quot;A String&quot;, # A string referring to the unit type.
              &quot;standardUnits&quot;: &quot;A String&quot;, # System defined Units, see above enum.
            },
            &quot;name&quot;: { # Identifies a counter within a per-job namespace. Counters whose structured names are the same get merged into a single value for the job. # Structured name of the counter.
              &quot;componentStepName&quot;: &quot;A String&quot;, # Name of the optimized step being executed by the workers.
              &quot;executionStepName&quot;: &quot;A String&quot;, # Name of the stage. An execution step contains multiple component steps.
              &quot;inputIndex&quot;: 42, # Index of an input collection that&#x27;s being read from/written to as a side input. The index identifies a step&#x27;s side inputs starting by 1 (e.g. the first side input has input_index 1, the third has input_index 3). Side inputs are identified by a pair of (original_step_name, input_index). This field helps uniquely identify them.
              &quot;name&quot;: &quot;A String&quot;, # Counter name. Not necessarily globally-unique, but unique within the context of the other fields. Required.
              &quot;origin&quot;: &quot;A String&quot;, # One of the standard Origins defined above.
              &quot;originNamespace&quot;: &quot;A String&quot;, # A string containing a more specific namespace of the counter&#x27;s origin.
              &quot;originalRequestingStepName&quot;: &quot;A String&quot;, # The step name requesting an operation, such as GBK. I.e. the ParDo causing a read/write from shuffle to occur, or a read from side inputs.
              &quot;originalStepName&quot;: &quot;A String&quot;, # System generated name of the original step in the user&#x27;s graph, before optimization.
              &quot;portion&quot;: &quot;A String&quot;, # Portion of this counter, either key or value.
              &quot;workerId&quot;: &quot;A String&quot;, # ID of a particular worker.
            },
          },
        },
      ],
      &quot;dynamicSourceSplit&quot;: { # When a task splits using WorkItemStatus.dynamic_source_split, this message describes the two parts of the split relative to the description of the current task&#x27;s input. # See documentation of stop_position.
        &quot;primary&quot;: { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # Primary part (continued to be processed by worker). Specified relative to the previously-current source. Becomes current.
          &quot;derivationMode&quot;: &quot;A String&quot;, # What source to base the produced source on (if any).
          &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source.
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
        &quot;residual&quot;: { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # Residual part (returned to the pool of work). Specified relative to the previously-current source.
          &quot;derivationMode&quot;: &quot;A String&quot;, # What source to base the produced source on (if any).
          &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source.
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
      },
      &quot;errors&quot;: [ # Specifies errors which occurred during processing. If errors are provided, and completed = true, then the WorkItem is considered to have failed.
        { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
      ],
      &quot;metricUpdates&quot;: [ # DEPRECATED in favor of counter_updates.
        { # Describes the state of a metric.
          &quot;cumulative&quot;: True or False, # True if this metric is reported as the total cumulative aggregate value accumulated since the worker started working on this WorkItem. By default this is false, indicating that this metric is reported as a delta that is not associated with any WorkItem.
          &quot;distribution&quot;: &quot;&quot;, # A struct value describing properties of a distribution of numeric values.
          &quot;gauge&quot;: &quot;&quot;, # A struct value describing properties of a Gauge. Metrics of gauge type show the value of a metric across time, and is aggregated based on the newest value.
          &quot;internal&quot;: &quot;&quot;, # Worker-computed aggregate value for internal use by the Dataflow service.
          &quot;kind&quot;: &quot;A String&quot;, # Metric aggregation kind. The possible metric aggregation kinds are &quot;Sum&quot;, &quot;Max&quot;, &quot;Min&quot;, &quot;Mean&quot;, &quot;Set&quot;, &quot;And&quot;, &quot;Or&quot;, and &quot;Distribution&quot;. The specified aggregation kind is case-insensitive. If omitted, this is not an aggregated value but instead a single metric sample value.
          &quot;meanCount&quot;: &quot;&quot;, # Worker-computed aggregate value for the &quot;Mean&quot; aggregation kind. This holds the count of the aggregated values and is used in combination with mean_sum above to obtain the actual mean aggregate value. The only possible value type is Long.
          &quot;meanSum&quot;: &quot;&quot;, # Worker-computed aggregate value for the &quot;Mean&quot; aggregation kind. This holds the sum of the aggregated values and is used in combination with mean_count below to obtain the actual mean aggregate value. The only possible value types are Long and Double.
          &quot;name&quot;: { # Identifies a metric, by describing the source which generated the metric. # Name of the metric.
            &quot;context&quot;: { # Zero or more labeled fields which identify the part of the job this metric is associated with, such as the name of a step or collection. For example, built-in counters associated with steps will have context[&#x27;step&#x27;] = . Counters associated with PCollections in the SDK will have context[&#x27;pcollection&#x27;] = .
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;name&quot;: &quot;A String&quot;, # Worker-defined metric name.
            &quot;origin&quot;: &quot;A String&quot;, # Origin (namespace) of metric name. May be blank for user-define metrics; will be &quot;dataflow&quot; for metrics defined by the Dataflow service or SDK.
          },
          &quot;scalar&quot;: &quot;&quot;, # Worker-computed aggregate value for aggregation kinds &quot;Sum&quot;, &quot;Max&quot;, &quot;Min&quot;, &quot;And&quot;, and &quot;Or&quot;. The possible value types are Long, Double, and Boolean.
          &quot;set&quot;: &quot;&quot;, # Worker-computed aggregate value for the &quot;Set&quot; aggregation kind. The only possible value type is a list of Values whose type can be Long, Double, or String, according to the metric&#x27;s type. All Values in the list must be of the same type.
          &quot;updateTime&quot;: &quot;A String&quot;, # Timestamp associated with the metric value. Optional when workers are reporting work progress; it will be filled in responses from the metrics API.
        },
      ],
      &quot;progress&quot;: { # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest. # DEPRECATED in favor of reported_progress.
        &quot;percentComplete&quot;: 3.14, # Obsolete.
        &quot;position&quot;: { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # Obsolete.
          &quot;byteOffset&quot;: &quot;A String&quot;, # Position is a byte offset.
          &quot;concatPosition&quot;: { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
            &quot;index&quot;: 42, # Index of the inner source.
            &quot;position&quot;: # Object with schema name: Position # Position within the inner source.
          },
          &quot;end&quot;: True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
          &quot;key&quot;: &quot;A String&quot;, # Position is a string key, ordered lexicographically.
          &quot;recordIndex&quot;: &quot;A String&quot;, # Position is a record index.
          &quot;shufflePosition&quot;: &quot;A String&quot;, # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
        },
        &quot;remainingTime&quot;: &quot;A String&quot;, # Obsolete.
      },
      &quot;reportIndex&quot;: &quot;A String&quot;, # The report index. When a WorkItem is leased, the lease will contain an initial report index. When a WorkItem&#x27;s status is reported to the system, the report should be sent with that report index, and the response will contain the index the worker should use for the next report. Reports received with unexpected index values will be rejected by the service. In order to preserve idempotency, the worker should not alter the contents of a report, even if the worker must submit the same report multiple times before getting back a response. The worker should not submit a subsequent report until the response for the previous report had been received from the service.
      &quot;reportedProgress&quot;: { # A progress measurement of a WorkItem by a worker. # The worker&#x27;s progress through this WorkItem.
        &quot;consumedParallelism&quot;: { # Represents the level of parallelism in a WorkItem&#x27;s input, reported by the worker. # Total amount of parallelism in the portion of input of this task that has already been consumed and is no longer active. In the first two examples above (see remaining_parallelism), the value should be 29 or 2 respectively. The sum of remaining_parallelism and consumed_parallelism should equal the total amount of parallelism in this work item. If specified, must be finite.
          &quot;isInfinite&quot;: True or False, # Specifies whether the parallelism is infinite. If true, &quot;value&quot; is ignored. Infinite parallelism means the service will assume that the work item can always be split into more non-empty work items by dynamic splitting. This is a work-around for lack of support for infinity by the current JSON-based Java RPC stack.
          &quot;value&quot;: 3.14, # Specifies the level of parallelism in case it is finite.
        },
        &quot;fractionConsumed&quot;: 3.14, # Completion as fraction of the input consumed, from 0.0 (beginning, nothing consumed), to 1.0 (end of the input, entire input consumed).
        &quot;position&quot;: { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # A Position within the work to represent a progress.
          &quot;byteOffset&quot;: &quot;A String&quot;, # Position is a byte offset.
          &quot;concatPosition&quot;: { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
            &quot;index&quot;: 42, # Index of the inner source.
            &quot;position&quot;: # Object with schema name: Position # Position within the inner source.
          },
          &quot;end&quot;: True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
          &quot;key&quot;: &quot;A String&quot;, # Position is a string key, ordered lexicographically.
          &quot;recordIndex&quot;: &quot;A String&quot;, # Position is a record index.
          &quot;shufflePosition&quot;: &quot;A String&quot;, # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
        },
        &quot;remainingParallelism&quot;: { # Represents the level of parallelism in a WorkItem&#x27;s input, reported by the worker. # Total amount of parallelism in the input of this task that remains, (i.e. can be delegated to this task and any new tasks via dynamic splitting). Always at least 1 for non-finished work items and 0 for finished. &quot;Amount of parallelism&quot; refers to how many non-empty parts of the input can be read in parallel. This does not necessarily equal number of records. An input that can be read in parallel down to the individual records is called &quot;perfectly splittable&quot;. An example of non-perfectly parallelizable input is a block-compressed file format where a block of records has to be read as a whole, but different blocks can be read in parallel. Examples: * If we are processing record #30 (starting at 1) out of 50 in a perfectly splittable 50-record input, this value should be 21 (20 remaining + 1 current). * If we are reading through block 3 in a block-compressed file consisting of 5 blocks, this value should be 3 (since blocks 4 and 5 can be processed in parallel by new tasks via dynamic splitting and the current task remains processing block 3). * If we are reading through the last block in a block-compressed file, or reading or processing the last record in a perfectly splittable input, this value should be 1, because apart from the current task, no additional remainder can be split off.
          &quot;isInfinite&quot;: True or False, # Specifies whether the parallelism is infinite. If true, &quot;value&quot; is ignored. Infinite parallelism means the service will assume that the work item can always be split into more non-empty work items by dynamic splitting. This is a work-around for lack of support for infinity by the current JSON-based Java RPC stack.
          &quot;value&quot;: 3.14, # Specifies the level of parallelism in case it is finite.
        },
      },
      &quot;requestedLeaseDuration&quot;: &quot;A String&quot;, # Amount of time the worker requests for its lease.
      &quot;sourceFork&quot;: { # DEPRECATED in favor of DynamicSourceSplit. # DEPRECATED in favor of dynamic_source_split.
        &quot;primary&quot;: { # DEPRECATED in favor of DerivedSource. # DEPRECATED
          &quot;derivationMode&quot;: &quot;A String&quot;, # DEPRECATED
          &quot;source&quot;: { # A source that records can be read and decoded from. # DEPRECATED
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
        &quot;primarySource&quot;: { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # DEPRECATED
          &quot;derivationMode&quot;: &quot;A String&quot;, # What source to base the produced source on (if any).
          &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source.
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
        &quot;residual&quot;: { # DEPRECATED in favor of DerivedSource. # DEPRECATED
          &quot;derivationMode&quot;: &quot;A String&quot;, # DEPRECATED
          &quot;source&quot;: { # A source that records can be read and decoded from. # DEPRECATED
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
        &quot;residualSource&quot;: { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # DEPRECATED
          &quot;derivationMode&quot;: &quot;A String&quot;, # What source to base the produced source on (if any).
          &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source.
            &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
              },
            ],
            &quot;codec&quot;: { # The codec to use to decode data read from the source.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
            &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
            &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
              &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
              &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
              &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
            },
            &quot;spec&quot;: { # The source to read from, plus its parameters.
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
            },
          },
        },
      },
      &quot;sourceOperationResponse&quot;: { # The result of a SourceOperationRequest, specified in ReportWorkItemStatusRequest.source_operation when the work item is completed. # If the work item represented a SourceOperationRequest, and the work is completed, contains the result of the operation.
        &quot;getMetadata&quot;: { # The result of a SourceGetMetadataOperation. # A response to a request to get metadata about a source.
          &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # The computed metadata.
            &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
            &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
            &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
          },
        },
        &quot;split&quot;: { # The response to a SourceSplitRequest. # A response to a request to split a source.
          &quot;bundles&quot;: [ # If outcome is SPLITTING_HAPPENED, then this is a list of bundles into which the source was split. Otherwise this field is ignored. This list can be empty, which means the source represents an empty input.
            { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split.
              &quot;derivationMode&quot;: &quot;A String&quot;, # What source to base the produced source on (if any).
              &quot;source&quot;: { # A source that records can be read and decoded from. # Specification of the source.
                &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                ],
                &quot;codec&quot;: { # The codec to use to decode data read from the source.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                  &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                  &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                  &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                },
                &quot;spec&quot;: { # The source to read from, plus its parameters.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
              },
            },
          ],
          &quot;outcome&quot;: &quot;A String&quot;, # Indicates whether splitting happened and produced a list of bundles. If this is USE_CURRENT_SOURCE_AS_IS, the current source should be processed &quot;as is&quot; without splitting. &quot;bundles&quot; is ignored in this case. If this is SPLITTING_HAPPENED, then &quot;bundles&quot; contains a list of bundles into which the source was split.
          &quot;shards&quot;: [ # DEPRECATED in favor of bundles.
            { # DEPRECATED in favor of DerivedSource.
              &quot;derivationMode&quot;: &quot;A String&quot;, # DEPRECATED
              &quot;source&quot;: { # A source that records can be read and decoded from. # DEPRECATED
                &quot;baseSpecs&quot;: [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                  },
                ],
                &quot;codec&quot;: { # The codec to use to decode data read from the source.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
                &quot;doesNotNeedSplitting&quot;: True or False, # Setting this value to true hints to the framework that the source doesn&#x27;t need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                &quot;metadata&quot;: { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don&#x27;t have this field populated.
                  &quot;estimatedSizeBytes&quot;: &quot;A String&quot;, # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
                  &quot;infinite&quot;: True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
                  &quot;producesSortedKeys&quot;: True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
                },
                &quot;spec&quot;: { # The source to read from, plus its parameters.
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
                },
              },
            },
          ],
        },
      },
      &quot;stopPosition&quot;: { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # A worker may split an active map task in two parts, &quot;primary&quot; and &quot;residual&quot;, continuing to process the primary part and returning the residual part into the pool of available work. This event is called a &quot;dynamic split&quot; and is critical to the dynamic work rebalancing feature. The two obtained sub-tasks are called &quot;parts&quot; of the split. The parts, if concatenated, must represent the same input as would be read by the current task if the split did not happen. The exact way in which the original task is decomposed into the two parts is specified either as a position demarcating them (stop_position), or explicitly as two DerivedSources, if this task consumes a user-defined source type (dynamic_source_split). The &quot;current&quot; task is adjusted as a result of the split: after a task with range [A, B) sends a stop_position update at C, its range is considered to be [A, C), e.g.: * Progress should be interpreted relative to the new range, e.g. &quot;75% completed&quot; means &quot;75% of [A, C) completed&quot; * The worker should interpret proposed_stop_position relative to the new range, e.g. &quot;split at 68%&quot; should be interpreted as &quot;split at 68% of [A, C)&quot;. * If the worker chooses to split again using stop_position, only stop_positions in [A, C) will be accepted. * Etc. dynamic_source_split has similar semantics: e.g., if a task with source S splits using dynamic_source_split into {P, R} (where P and R must be together equivalent to S), then subsequent progress and proposed_stop_position should be interpreted relative to P, and in a potential subsequent dynamic_source_split into {P&#x27;, R&#x27;}, P&#x27; and R&#x27; must be together equivalent to P, etc.
        &quot;byteOffset&quot;: &quot;A String&quot;, # Position is a byte offset.
        &quot;concatPosition&quot;: { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
          &quot;index&quot;: 42, # Index of the inner source.
          &quot;position&quot;: # Object with schema name: Position # Position within the inner source.
        },
        &quot;end&quot;: True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
        &quot;key&quot;: &quot;A String&quot;, # Position is a string key, ordered lexicographically.
        &quot;recordIndex&quot;: &quot;A String&quot;, # Position is a record index.
        &quot;shufflePosition&quot;: &quot;A String&quot;, # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
      },
      &quot;totalThrottlerWaitTimeSeconds&quot;: 3.14, # Total time the worker spent being throttled by external systems.
      &quot;workItemId&quot;: &quot;A String&quot;, # Identifies the WorkItem.
    },
  ],
  &quot;workerId&quot;: &quot;A String&quot;, # The ID of the worker reporting the WorkItem status. If this does not match the ID of the worker which the Dataflow service believes currently has the lease on the WorkItem, the report will be dropped (with an error response).
}

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

Returns:
  An object of the form:

    { # Response from a request to report the status of WorkItems.
  &quot;unifiedWorkerResponse&quot;: { # Untranslated bag-of-bytes WorkProgressUpdateResponse for UnifiedWorker.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;workItemServiceStates&quot;: [ # A set of messages indicating the service-side state for each WorkItem whose status was reported, in the same order as the WorkItemStatus messages in the ReportWorkItemStatusRequest which resulting in this response.
    { # The Dataflow service&#x27;s idea of the current state of a WorkItem being processed by a worker.
      &quot;completeWorkStatus&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # If set, a request to complete the work item with the given status. This will not be set to OK, unless supported by the specific kind of WorkItem. It can be used for the backend to indicate a WorkItem must terminate, e.g., for aborting work.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;harnessData&quot;: { # Other data returned by the service, specific to the particular worker harness.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
      },
      &quot;hotKeyDetection&quot;: { # Proto describing a hot key detected on a given WorkItem. # A hot key is a symptom of poor data distribution in which there are enough elements mapped to a single key to impact pipeline performance. When present, this field includes metadata associated with any hot key.
        &quot;hotKeyAge&quot;: &quot;A String&quot;, # The age of the hot key measured from when it was first detected.
        &quot;systemName&quot;: &quot;A String&quot;, # System-defined name of the step containing this hot key. Unique across the workflow.
        &quot;userStepName&quot;: &quot;A String&quot;, # User-provided name of the step that contains this hot key.
      },
      &quot;leaseExpireTime&quot;: &quot;A String&quot;, # Time at which the current lease will expire.
      &quot;metricShortId&quot;: [ # The short ids that workers should use in subsequent metric updates. Workers should strive to use short ids whenever possible, but it is ok to request the short_id again if a worker lost track of it (e.g. if the worker is recovering from a crash). NOTE: it is possible that the response may have short ids for a subset of the metrics.
        { # The metric short id is returned to the user alongside an offset into ReportWorkItemStatusRequest
          &quot;metricIndex&quot;: 42, # The index of the corresponding metric in the ReportWorkItemStatusRequest. Required.
          &quot;shortId&quot;: &quot;A String&quot;, # The service-generated short identifier for the metric.
        },
      ],
      &quot;nextReportIndex&quot;: &quot;A String&quot;, # The index value to use for the next report sent by the worker. Note: If the report call fails for whatever reason, the worker should reuse this index for subsequent report attempts.
      &quot;reportStatusInterval&quot;: &quot;A String&quot;, # New recommended reporting interval.
      &quot;splitRequest&quot;: { # A suggestion by the service to the worker to dynamically split the WorkItem. # The progress point in the WorkItem where the Dataflow service suggests that the worker truncate the task.
        &quot;fractionConsumed&quot;: 3.14, # A fraction at which to split the work item, from 0.0 (beginning of the input) to 1.0 (end of the input).
        &quot;fractionOfRemainder&quot;: 3.14, # The fraction of the remainder of work to split the work item at, from 0.0 (split at the current position) to 1.0 (end of the input).
        &quot;position&quot;: { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # A Position at which to split the work item.
          &quot;byteOffset&quot;: &quot;A String&quot;, # Position is a byte offset.
          &quot;concatPosition&quot;: { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
            &quot;index&quot;: 42, # Index of the inner source.
            &quot;position&quot;: # Object with schema name: Position # Position within the inner source.
          },
          &quot;end&quot;: True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
          &quot;key&quot;: &quot;A String&quot;, # Position is a string key, ordered lexicographically.
          &quot;recordIndex&quot;: &quot;A String&quot;, # Position is a record index.
          &quot;shufflePosition&quot;: &quot;A String&quot;, # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
        },
      },
      &quot;suggestedStopPoint&quot;: { # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest. # DEPRECATED in favor of split_request.
        &quot;percentComplete&quot;: 3.14, # Obsolete.
        &quot;position&quot;: { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # Obsolete.
          &quot;byteOffset&quot;: &quot;A String&quot;, # Position is a byte offset.
          &quot;concatPosition&quot;: { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
            &quot;index&quot;: 42, # Index of the inner source.
            &quot;position&quot;: # Object with schema name: Position # Position within the inner source.
          },
          &quot;end&quot;: True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
          &quot;key&quot;: &quot;A String&quot;, # Position is a string key, ordered lexicographically.
          &quot;recordIndex&quot;: &quot;A String&quot;, # Position is a record index.
          &quot;shufflePosition&quot;: &quot;A String&quot;, # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
        },
        &quot;remainingTime&quot;: &quot;A String&quot;, # Obsolete.
      },
      &quot;suggestedStopPosition&quot;: { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # Obsolete, always empty.
        &quot;byteOffset&quot;: &quot;A String&quot;, # Position is a byte offset.
        &quot;concatPosition&quot;: { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
          &quot;index&quot;: 42, # Index of the inner source.
          &quot;position&quot;: # Object with schema name: Position # Position within the inner source.
        },
        &quot;end&quot;: True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
        &quot;key&quot;: &quot;A String&quot;, # Position is a string key, ordered lexicographically.
        &quot;recordIndex&quot;: &quot;A String&quot;, # Position is a record index.
        &quot;shufflePosition&quot;: &quot;A String&quot;, # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
      },
    },
  ],
}</pre>
</div>

</body></html>