<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="dataflow_v1b3.html">Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.locations.html">locations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.locations.flexTemplates.html">flexTemplates()</a></code>
</p>
<p class="firstline">Returns the flexTemplates Resource.</p>

<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.locations.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.snapshots.html">snapshots()</a></code>
</p>
<p class="firstline">Returns the snapshots Resource.</p>

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

<p class="toc_element">
  <code><a href="dataflow_v1b3.projects.locations.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="#workerMessages">workerMessages(projectId, location, 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="workerMessages">workerMessages(projectId, location, 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)
  location: string, The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains the job. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request for sending worker messages to the service.
    &quot;workerMessages&quot;: [ # The WorkerMessages to send.
      { # WorkerMessage provides information to the backend about a worker.
        &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;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;event&quot;: &quot;A String&quot;, # The event being reported.
        },
        &quot;time&quot;: &quot;A String&quot;, # The timestamp of the worker_message.
        &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;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;vmStartupTime&quot;: &quot;A String&quot;, # The time the VM was booted.
          &quot;msg&quot;: &quot;A String&quot;, # A message describing any unusual health reports.
          &quot;vmIsHealthy&quot;: True or False, # Whether the VM is currently healthy.
          &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;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;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;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 GCS 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 GCS 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;memoryInfo&quot;: [ # Memory utilization samples.
            { # Information about the memory usage of a worker or a container within a worker.
              &quot;timestamp&quot;: &quot;A String&quot;, # Timestamp of the measurement.
              &quot;currentLimitBytes&quot;: &quot;A String&quot;, # Instantenous memory limit in bytes.
              &quot;currentRssBytes&quot;: &quot;A String&quot;, # Instantenous memory (RSS) size in bytes.
              &quot;totalGbMs&quot;: &quot;A String&quot;, # Total memory (RSS) usage since start up in GB * ms.
            },
          ],
          &quot;cpuTime&quot;: [ # CPU utilization samples.
            { # Modeled after information exposed by /proc/stat.
              &quot;timestamp&quot;: &quot;A String&quot;, # Timestamp of the measurement.
              &quot;rate&quot;: 3.14, # Average CPU utilization rate (% non-idle cpu / second) since previous sample.
              &quot;totalMs&quot;: &quot;A String&quot;, # Total active CPU time across all cores (ie., non-idle) in milliseconds since start-up.
            },
          ],
          &quot;containers&quot;: { # Per container information. Key: container name.
            &quot;a_key&quot;: # Object with schema name: ResourceUtilizationReport
          },
        },
        &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;location&quot;: &quot;A String&quot;, # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that contains the job.
  }

  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;workerShutdownNoticeResponse&quot;: { # Service-side response to WorkerMessage issuing shutdown notice. # Service&#x27;s response to shutdown notice (currently empty).
        },
        &quot;workerMetricsResponse&quot;: { # Service-side response to WorkerMessage reporting resource utilization. # Service&#x27;s response to reporting worker metrics (currently empty).
        },
        &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.
        },
      },
    ],
  }</pre>
</div>

</body></html>