<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;reasonPhrase&quot;: &quot;A String&quot;, # HTTP response phrase
            &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;verb&quot;: &quot;A String&quot;, # HTTP method verb
            &quot;accessList&quot;: [ # A list of variable access actions agaist the api proxy. Supported values: Get, Set, Remove.
              {
                &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;Get&quot;: { # Get action. For example, &quot;Get&quot; : { &quot;name&quot; : &quot;target.name&quot;, &quot;value&quot; : &quot;default&quot; }
                  &quot;value&quot;: &quot;A String&quot;,
                  &quot;name&quot;: &quot;A String&quot;,
                },
                &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;value&quot;: &quot;A String&quot;,
                  &quot;success&quot;: True or False,
                  &quot;name&quot;: &quot;A String&quot;,
                },
              },
            ],
            &quot;ActionResult&quot;: &quot;A String&quot;, # Type of the action result. Can be one of the five: DebugInfo, RequestMessage, ResponseMessage, ErrorMessage, VariableAccess
            &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;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;statusCode&quot;: &quot;A String&quot;, # HTTP response code
            &quot;uRI&quot;: &quot;A String&quot;, # The relative path of the api proxy. for example, `&quot;uRI&quot; : &quot;/iloveapis&quot;`
          },
        ],
      },
    ],
  }</pre>
</div>

</body></html>