<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;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;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;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.
      },
    },
  ],
}

  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).
      },
    },
  ],
}</pre>
</div>

</body></html>