<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.jobs.html">jobs()</a></code>
</p>
<p class="firstline">Returns the jobs Resource.</p>

<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.locations.html">locations()</a></code>
</p>
<p class="firstline">Returns the locations Resource.</p>

<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.snapshots.html">snapshots()</a></code>
</p>
<p class="firstline">Returns the snapshots Resource.</p>

<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.templates.html">templates()</a></code>
</p>
<p class="firstline">Returns the templates Resource.</p>

<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="#deleteSnapshots">deleteSnapshots(projectId, location=None, snapshotId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a snapshot.</p>
<p class="toc_element">
  <code><a href="#workerMessages">workerMessages(projectId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Send a worker_message to the service.</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="deleteSnapshots">deleteSnapshots(projectId, location=None, snapshotId=None, x__xgafv=None)</code>
  <pre>Deletes a snapshot.

Args:
  projectId: string, The ID of the Cloud Platform project that the snapshot belongs to. (required)
  location: string, The location that contains this snapshot.
  snapshotId: string, The ID of the snapshot.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response from deleting a snapshot.
}</pre>
</div>

<div class="method">
    <code class="details" id="workerMessages">workerMessages(projectId, body=None, x__xgafv=None)</code>
  <pre>Send a worker_message to the service.

Args:
  projectId: string, The project to send the WorkerMessages to. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request for sending worker messages to the service.
  &quot;location&quot;: &quot;A String&quot;, # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains the job.
  &quot;workerMessages&quot;: [ # The WorkerMessages to send.
    { # WorkerMessage provides information to the backend about a worker.
      &quot;dataSamplingReport&quot;: { # Contains per-worker telemetry about the data sampling feature. # Optional. Contains metrics related to go/dataflow-data-sampling-telemetry.
        &quot;bytesWrittenDelta&quot;: &quot;A String&quot;, # Optional. Delta of bytes written to file from previous report.
        &quot;elementsSampledBytes&quot;: &quot;A String&quot;, # Optional. Delta of bytes sampled from previous report.
        &quot;elementsSampledCount&quot;: &quot;A String&quot;, # Optional. Delta of number of elements sampled from previous report.
        &quot;exceptionsSampledCount&quot;: &quot;A String&quot;, # Optional. Delta of number of samples taken from user code exceptions from previous report.
        &quot;pcollectionsSampledCount&quot;: &quot;A String&quot;, # Optional. Delta of number of PCollections sampled from previous report.
        &quot;persistenceErrorsCount&quot;: &quot;A String&quot;, # Optional. Delta of errors counts from persisting the samples from previous report.
        &quot;translationErrorsCount&quot;: &quot;A String&quot;, # Optional. Delta of errors counts from retrieving, or translating the samples from previous report.
      },
      &quot;labels&quot;: { # Labels are used to group WorkerMessages. For example, a worker_message about a particular container might have the labels: { &quot;JOB_ID&quot;: &quot;2015-04-22&quot;, &quot;WORKER_ID&quot;: &quot;wordcount-vm-2015…&quot; &quot;CONTAINER_TYPE&quot;: &quot;worker&quot;, &quot;CONTAINER_ID&quot;: &quot;ac1234def&quot;} Label tags typically correspond to Label enum values. However, for ease of development other strings can be used as tags. LABEL_UNSPECIFIED should not be used here.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;streamingScalingReport&quot;: { # Contains per-user worker telemetry used in streaming autoscaling. # Contains per-user worker telemetry used in streaming autoscaling.
        &quot;activeBundleCount&quot;: 42, # Current acive bundle count.
        &quot;activeThreadCount&quot;: 42, # Current acive thread count.
        &quot;maximumBundleCount&quot;: 42, # Maximum bundle count limit.
        &quot;maximumBytesCount&quot;: 42, # Maximum bytes count limit.
        &quot;maximumThreadCount&quot;: 42, # Maximum thread count limit.
        &quot;outstandingBytesCount&quot;: 42, # Current outstanding bytes count.
      },
      &quot;time&quot;: &quot;A String&quot;, # The timestamp of the worker_message.
      &quot;workerHealthReport&quot;: { # WorkerHealthReport contains information about the health of a worker. The VM should be identified by the labels attached to the WorkerMessage that this health ping belongs to. # The health of a worker.
        &quot;msg&quot;: &quot;A String&quot;, # Message describing any unusual health reports.
        &quot;pods&quot;: [ # The pods running on the worker. See: http://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_pod This field is used by the worker to send the status of the indvidual containers running on each worker.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
          },
        ],
        &quot;reportInterval&quot;: &quot;A String&quot;, # The interval at which the worker is sending health reports. The default value of 0 should be interpreted as the field is not being explicitly set by the worker.
        &quot;vmBrokenCode&quot;: &quot;A String&quot;, # Code to describe a specific reason, if known, that a VM has reported broken state.
        &quot;vmIsBroken&quot;: True or False, # Whether the VM is in a permanently broken state. Broken VMs should be abandoned or deleted ASAP to avoid assigning or completing any work.
        &quot;vmIsHealthy&quot;: True or False, # Whether the VM is currently healthy.
        &quot;vmStartupTime&quot;: &quot;A String&quot;, # The time the VM was booted.
      },
      &quot;workerLifecycleEvent&quot;: { # A report of an event in a worker&#x27;s lifecycle. The proto contains one event, because the worker is expected to asynchronously send each message immediately after the event. Due to this asynchrony, messages may arrive out of order (or missing), and it is up to the consumer to interpret. The timestamp of the event is in the enclosing WorkerMessage proto. # Record of worker lifecycle events.
        &quot;containerStartTime&quot;: &quot;A String&quot;, # The start time of this container. All events will report this so that events can be grouped together across container/VM restarts.
        &quot;event&quot;: &quot;A String&quot;, # The event being reported.
        &quot;metadata&quot;: { # Other stats that can accompany an event. E.g. { &quot;downloaded_bytes&quot; : &quot;123456&quot; }
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;workerMessageCode&quot;: { # A message code is used to report status and error messages to the service. The message codes are intended to be machine readable. The service will take care of translating these into user understandable messages if necessary. Example use cases: 1. Worker processes reporting successful startup. 2. Worker processes reporting specific errors (e.g. package staging failure). # A worker message code.
        &quot;code&quot;: &quot;A String&quot;, # The code is a string intended for consumption by a machine that identifies the type of message being sent. Examples: 1. &quot;HARNESS_STARTED&quot; might be used to indicate the worker harness has started. 2. &quot;GCS_DOWNLOAD_ERROR&quot; might be used to indicate an error downloading a Cloud Storage file as part of the boot process of one of the worker containers. This is a string and not an enum to make it easy to add new codes without waiting for an API change.
        &quot;parameters&quot;: { # Parameters contains specific information about the code. This is a struct to allow parameters of different types. Examples: 1. For a &quot;HARNESS_STARTED&quot; message parameters might provide the name of the worker and additional data like timing information. 2. For a &quot;GCS_DOWNLOAD_ERROR&quot; parameters might contain fields listing the Cloud Storage objects being downloaded and fields containing errors. In general complex data structures should be avoided. If a worker needs to send a specific and complicated data structure then please consider defining a new proto and adding it to the data oneof in WorkerMessageResponse. Conventions: Parameters should only be used for information that isn&#x27;t typically passed as a label. hostname and other worker identifiers should almost always be passed as labels since they will be included on most messages.
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object.
        },
      },
      &quot;workerMetrics&quot;: { # Worker metrics exported from workers. This contains resource utilization metrics accumulated from a variety of sources. For more information, see go/df-resource-signals. # Resource metrics reported by workers.
        &quot;containers&quot;: { # Per container information. Key: container name.
          &quot;a_key&quot;: # Object with schema name: ResourceUtilizationReport
        },
        &quot;cpuTime&quot;: [ # CPU utilization samples.
          { # Modeled after information exposed by /proc/stat.
            &quot;rate&quot;: 3.14, # Average CPU utilization rate (% non-idle cpu / second) since previous sample.
            &quot;timestamp&quot;: &quot;A String&quot;, # Timestamp of the measurement.
            &quot;totalMs&quot;: &quot;A String&quot;, # Total active CPU time across all cores (ie., non-idle) in milliseconds since start-up.
          },
        ],
        &quot;memoryInfo&quot;: [ # Memory utilization samples.
          { # Information about the memory usage of a worker or a container within a worker.
            &quot;currentLimitBytes&quot;: &quot;A String&quot;, # Instantenous memory limit in bytes.
            &quot;currentOoms&quot;: &quot;A String&quot;, # Number of Out of Memory (OOM) events recorded since the previous measurement.
            &quot;currentRssBytes&quot;: &quot;A String&quot;, # Instantenous memory (RSS) size in bytes.
            &quot;timestamp&quot;: &quot;A String&quot;, # Timestamp of the measurement.
            &quot;totalGbMs&quot;: &quot;A String&quot;, # Total memory (RSS) usage since start up in GB * ms.
          },
        ],
      },
      &quot;workerShutdownNotice&quot;: { # Shutdown notification from workers. This is to be sent by the shutdown script of the worker VM so that the backend knows that the VM is being shut down. # Shutdown notice by workers.
        &quot;reason&quot;: &quot;A String&quot;, # The reason for the worker shutdown. Current possible values are: &quot;UNKNOWN&quot;: shutdown reason is unknown. &quot;PREEMPTION&quot;: shutdown reason is preemption. Other possible reasons may be added in the future.
      },
      &quot;workerThreadScalingReport&quot;: { # Contains information about the thread scaling information of a worker. # Thread scaling information reported by workers.
        &quot;currentThreadCount&quot;: 42, # Current number of active threads in a worker.
      },
    },
  ],
}

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

Returns:
  An object of the form:

    { # The response to the worker messages.
  &quot;workerMessageResponses&quot;: [ # The servers response to the worker messages.
    { # A worker_message response allows the server to pass information to the sender.
      &quot;workerHealthReportResponse&quot;: { # WorkerHealthReportResponse contains information returned to the worker in response to a health ping. # The service&#x27;s response to a worker&#x27;s health report.
        &quot;reportInterval&quot;: &quot;A String&quot;, # A positive value indicates the worker should change its reporting interval to the specified value. The default value of zero means no change in report rate is requested by the server.
      },
      &quot;workerMetricsResponse&quot;: { # Service-side response to WorkerMessage reporting resource utilization. # Service&#x27;s response to reporting worker metrics (currently empty).
      },
      &quot;workerShutdownNoticeResponse&quot;: { # Service-side response to WorkerMessage issuing shutdown notice. # Service&#x27;s response to shutdown notice (currently empty).
      },
      &quot;workerThreadScalingReportResponse&quot;: { # Contains the thread scaling recommendation for a worker from the backend. # Service&#x27;s thread scaling recommendation for workers.
        &quot;recommendedThreadCount&quot;: 42, # Recommended number of threads for a worker.
      },
    },
  ],
}</pre>
</div>

</body></html>