<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">Google 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.messages.html">messages</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(projectId, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, location=None, minimumImportance=None, endTime=None)</a></code></p>
<p class="firstline">Request the job status.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(projectId, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, location=None, minimumImportance=None, endTime=None)</code>
  <pre>Request the job status.

Args:
  projectId: string, A project id. (required)
  jobId: string, The job to get messages about. (required)
  startTime: string, If specified, return only messages with timestamps >= start_time.
The default is the job creation time (i.e. beginning of messages).
  pageSize: integer, If specified, determines the maximum number of messages to
return.  If unspecified, the service may choose an appropriate
default, or may return an arbitrarily large number of results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  pageToken: string, If supplied, this should be the value of next_page_token returned
by an earlier call. This will cause the next page of results to
be returned.
  location: string, The location which contains the job specified by job_id.
  minimumImportance: string, Filter to only get messages with importance >= level
  endTime: string, Return only messages with timestamps < end_time. The default is now
(i.e. return up to the latest messages available).

Returns:
  An object of the form:

    { # Response to a request to list job messages.
    "nextPageToken": "A String", # The token to obtain the next page of results if there are more.
    "autoscalingEvents": [ # Autoscaling events in ascending timestamp order.
      { # A structured message reporting an autoscaling decision made by the Dataflow
          # service.
        "eventType": "A String", # The type of autoscaling event to report.
        "currentNumWorkers": "A String", # The current number of workers the job has.
        "description": { # A rich message format, including a human readable string, a key for # A message describing why the system decided to adjust the current
            # number of workers, why it failed, or why the system decided to
            # not make any changes to the number of workers.
            # identifying the message, and structured data associated with the message for
            # programmatic consumption.
          "messageKey": "A String", # Idenfier for this message type.  Used by external systems to
              # internationalize or personalize message.
          "messageText": "A String", # Human-readable version of message.
          "parameters": [ # The structured data associated with this message.
            { # Structured data associated with this message.
              "value": "", # Value for this parameter.
              "key": "A String", # Key or name for this parameter.
            },
          ],
        },
        "targetNumWorkers": "A String", # The target number of workers the worker pool wants to resize to use.
        "time": "A String", # The time this event was emitted to indicate a new target or current
            # num_workers value.
      },
    ],
    "jobMessages": [ # Messages in ascending timestamp order.
      { # A particular message pertaining to a Dataflow job.
        "messageImportance": "A String", # Importance level of the message.
        "messageText": "A String", # The text of the message.
        "id": "A String", # Deprecated.
        "time": "A String", # The timestamp of the message.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>