<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.jobs.html">jobs</a> . <a href="dataflow_v1b3.projects.jobs.debug.html">debug</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#getConfig">getConfig(projectId, jobId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Get encoded debug configuration for component. Not cacheable.</p>
<p class="toc_element">
  <code><a href="#sendCapture">sendCapture(projectId, jobId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Send encoded debug capture data for component.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="getConfig">getConfig(projectId, jobId, body, x__xgafv=None)</code>
  <pre>Get encoded debug configuration for component. Not cacheable.

Args:
  projectId: string, The project id. (required)
  jobId: string, The job id. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request to get updated debug configuration for component.
    "workerId": "A String", # The worker id, i.e., VM hostname.
    "location": "A String", # The [regional endpoint]
        # (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that
        # contains the job specified by job_id.
    "componentId": "A String", # The internal component id for which debug configuration is
        # requested.
  }

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

Returns:
  An object of the form:

    { # Response to a get debug configuration request.
    "config": "A String", # The encoded debug configuration for the requested component.
  }</pre>
</div>

<div class="method">
    <code class="details" id="sendCapture">sendCapture(projectId, jobId, body, x__xgafv=None)</code>
  <pre>Send encoded debug capture data for component.

Args:
  projectId: string, The project id. (required)
  jobId: string, The job id. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Request to send encoded debug information.
    "workerId": "A String", # The worker id, i.e., VM hostname.
    "data": "A String", # The encoded debug information.
    "componentId": "A String", # The internal component id for which debug information is sent.
    "location": "A String", # The [regional endpoint]
        # (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) that
        # contains the job specified by job_id.
  }

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

Returns:
  An object of the form:

    { # Response to a send capture request.
      # nothing
  }</pre>
</div>

</body></html>