<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="apigee_v1.html">Apigee API</a> . <a href="apigee_v1.organizations.html">organizations</a> . <a href="apigee_v1.organizations.environments.html">environments</a> . <a href="apigee_v1.organizations.environments.apis.html">apis</a> . <a href="apigee_v1.organizations.environments.apis.revisions.html">revisions</a> . <a href="apigee_v1.organizations.environments.apis.revisions.debugsessions.html">debugsessions</a> . <a href="apigee_v1.organizations.environments.apis.revisions.debugsessions.data.html">data</a></h1>
<h2>Instance Methods</h2>
<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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the debug data from a transaction.</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="get">get(name, x__xgafv=None)</code>
  <pre>Gets the debug data from a transaction.

Args:
  name: string, Required. The name of the debug session transaction. Must be of the form: `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}/debugsessions/{session}/data/{transaction}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A transaction contains all of the debug information of the entire message flow of an API call processed by the runtime plane. The information is collected and recorded at critical points of the message flow in the runtime apiproxy.
  &quot;completed&quot;: True or False, # Flag indicating whether a transaction is completed or not
  &quot;point&quot;: [ # List of debug data collected by runtime plane at various defined points in the flow.
    { # Point is a group of information collected by runtime plane at critical points of the message flow of the processed API request. This is a list of supported point IDs, categorized to three major buckets. For each category, debug points that we are currently supporting are listed below: - Flow status debug points: StateChange FlowInfo Condition Execution DebugMask Error - Flow control debug points: FlowCallout Paused Resumed FlowReturn BreakFlow Error - Runtime debug points: ScriptExecutor FlowCalloutStepDefinition CustomTarget StepDefinition Oauth2ServicePoint RaiseFault NodeJS The detail information of the given debug point is stored in a list of results.
      &quot;id&quot;: &quot;A String&quot;, # Name of a step in the transaction.
      &quot;results&quot;: [ # List of results extracted from a given debug point.
        { # Result is short for &quot;action result&quot;, could be different types identified by &quot;action_result&quot; field. Supported types: 1. DebugInfo : generic debug info collected by runtime recorded as a list of properties. For example, the contents could be virtual host info, state change result, or execution metadata. Required fields : properties, timestamp 2. RequestMessage: information of a http request. Contains headers, request URI and http methods type.Required fields : headers, uri, verb 3. ResponseMessage: information of a http response. Contains headers, reason phrase and http status code. Required fields : headers, reasonPhrase, statusCode 4. ErrorMessage: information of a http error message. Contains detail error message, reason phrase and status code. Required fields : content, headers, reasonPhrase, statusCode 5. VariableAccess: a list of variable access actions, can be Get, Set and Remove. Required fields : accessList
          &quot;ActionResult&quot;: &quot;A String&quot;, # Type of the action result. Can be one of the five: DebugInfo, RequestMessage, ResponseMessage, ErrorMessage, VariableAccess
          &quot;accessList&quot;: [ # A list of variable access actions agaist the api proxy. Supported values: Get, Set, Remove.
            {
              &quot;Get&quot;: { # Get action. For example, &quot;Get&quot; : { &quot;name&quot; : &quot;target.name&quot;, &quot;value&quot; : &quot;default&quot; }
                &quot;name&quot;: &quot;A String&quot;,
                &quot;value&quot;: &quot;A String&quot;,
              },
              &quot;Remove&quot;: { # Remove action. For example, &quot;Remove&quot; : { &quot;name&quot; : &quot;target.name&quot;, &quot;success&quot; : true }
                &quot;name&quot;: &quot;A String&quot;,
                &quot;success&quot;: True or False,
              },
              &quot;Set&quot;: { # Set action. For example, &quot;Set&quot; : { &quot;name&quot; : &quot;target.name&quot;, &quot;success&quot; : true, &quot;value&quot; : &quot;default&quot; }
                &quot;name&quot;: &quot;A String&quot;,
                &quot;success&quot;: True or False,
                &quot;value&quot;: &quot;A String&quot;,
              },
            },
          ],
          &quot;content&quot;: &quot;A String&quot;, # Error message content. for example, &quot;content&quot; : &quot;{\&quot;fault\&quot;:{\&quot;faultstring\&quot;:\&quot;API timed out\&quot;,\&quot;detail\&quot;:{\&quot;errorcode\&quot;:\&quot;flow.APITimedOut\&quot;}}}&quot;
          &quot;headers&quot;: [ # A list of HTTP headers. for example, &#x27;&quot;headers&quot; : [ { &quot;name&quot; : &quot;Content-Length&quot;, &quot;value&quot; : &quot;83&quot; }, { &quot;name&quot; : &quot;Content-Type&quot;, &quot;value&quot; : &quot;application/json&quot; } ]&#x27;
            { # A single property entry in the Properties message.
              &quot;name&quot;: &quot;A String&quot;, # The property key
              &quot;value&quot;: &quot;A String&quot;, # The property value
            },
          ],
          &quot;properties&quot;: { # Message for compatibility with legacy Edge specification for Java Properties object in JSON. # Name value pairs used for DebugInfo ActionResult.
            &quot;property&quot;: [ # List of all properties in the object
              { # A single property entry in the Properties message.
                &quot;name&quot;: &quot;A String&quot;, # The property key
                &quot;value&quot;: &quot;A String&quot;, # The property value
              },
            ],
          },
          &quot;reasonPhrase&quot;: &quot;A String&quot;, # HTTP response phrase
          &quot;statusCode&quot;: &quot;A String&quot;, # HTTP response code
          &quot;timestamp&quot;: &quot;A String&quot;, # Timestamp of when the result is recorded. Its format is dd-mm-yy hh:mm:ss:xxx. For example, `&quot;timestamp&quot; : &quot;12-08-19 00:31:59:960&quot;`
          &quot;uRI&quot;: &quot;A String&quot;, # The relative path of the api proxy. for example, `&quot;uRI&quot; : &quot;/iloveapis&quot;`
          &quot;verb&quot;: &quot;A String&quot;, # HTTP method verb
        },
      ],
    },
  ],
}</pre>
</div>

</body></html>