<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;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;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;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;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;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;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;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;vmStartupTime&quot;: &quot;A String&quot;, # The time the VM was booted.
          &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;vmIsHealthy&quot;: True or False, # Whether the VM is currently healthy.
          &quot;msg&quot;: &quot;A String&quot;, # A message describing any unusual health reports.
          &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;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;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;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;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;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;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.
      },
    ],
  }

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

</body></html>