<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="apigee_v1.organizations.environments.apis.revisions.debugsessions.data.html">data()</a></code>
</p>
<p class="firstline">Returns the data Resource.</p>

<p class="toc_element">
  <code><a href="#create">create(parent, body=None, timeout=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a debug session for a deployed API Proxy revision.</p>
<p class="toc_element">
  <code><a href="#deleteData">deleteData(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the data from a debug session. This does not cancel the debug</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves a debug session.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageToken=None, pageSize=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists debug sessions that are currently active in the given API Proxy</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="create">create(parent, body=None, timeout=None, x__xgafv=None)</code>
  <pre>Creates a debug session for a deployed API Proxy revision.

Args:
  parent: string, Required. The resource name of the API Proxy revision deployment for which
to create the DebugSession. Must be of the form
 `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}`. (required)
  body: object, The request body.
    The object takes the form of:

{
  &quot;count&quot;: 42, # Optional. The number of request to be traced. Min = 1, Max = 15, Default
      # = 10.
  &quot;timeout&quot;: &quot;A String&quot;, # Optional. The time in seconds after which this DebugSession should end.
      # This value will override the value in query param, if both are provided.
  &quot;filter&quot;: &quot;A String&quot;, # Optional. A conditional statement which is evaluated against the request
      # message to determine if it should be traced. Syntax matches that of on
      # API Proxy bundle flow Condition.
  &quot;name&quot;: &quot;A String&quot;, # A unique ID for this DebugSession.
  &quot;validity&quot;: 42, # Optional. The length of time, in seconds, that this debug session is valid,
      # starting from when it&#x27;s received in the control plane. Min = 1, Max = 15,
      # Default = 10.
  &quot;tracesize&quot;: 42, # Optional. The maximum number of bytes captured from the response payload.
      # Min = 0, Max = 5120, Default = 5120.
}

  timeout: string, Optional. The time in seconds after which this DebugSession should end.
A timeout specified in DebugSession will overwrite this value.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;count&quot;: 42, # Optional. The number of request to be traced. Min = 1, Max = 15, Default
        # = 10.
    &quot;timeout&quot;: &quot;A String&quot;, # Optional. The time in seconds after which this DebugSession should end.
        # This value will override the value in query param, if both are provided.
    &quot;filter&quot;: &quot;A String&quot;, # Optional. A conditional statement which is evaluated against the request
        # message to determine if it should be traced. Syntax matches that of on
        # API Proxy bundle flow Condition.
    &quot;name&quot;: &quot;A String&quot;, # A unique ID for this DebugSession.
    &quot;validity&quot;: 42, # Optional. The length of time, in seconds, that this debug session is valid,
        # starting from when it&#x27;s received in the control plane. Min = 1, Max = 15,
        # Default = 10.
    &quot;tracesize&quot;: 42, # Optional. The maximum number of bytes captured from the response payload.
        # Min = 0, Max = 5120, Default = 5120.
  }</pre>
</div>

<div class="method">
    <code class="details" id="deleteData">deleteData(name, x__xgafv=None)</code>
  <pre>Deletes the data from a debug session. This does not cancel the debug
session or prevent further data from being collected if the session is
still active in runtime pods.

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

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated
      # empty messages in your APIs. A typical example is to use it as the request
      # or the response type of an API method. For instance:
      #
      #     service Foo {
      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves a debug session.

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

Returns:
  An object of the form:

    {
    &quot;count&quot;: 42, # Optional. The number of request to be traced. Min = 1, Max = 15, Default
        # = 10.
    &quot;timeout&quot;: &quot;A String&quot;, # Optional. The time in seconds after which this DebugSession should end.
        # This value will override the value in query param, if both are provided.
    &quot;filter&quot;: &quot;A String&quot;, # Optional. A conditional statement which is evaluated against the request
        # message to determine if it should be traced. Syntax matches that of on
        # API Proxy bundle flow Condition.
    &quot;name&quot;: &quot;A String&quot;, # A unique ID for this DebugSession.
    &quot;validity&quot;: 42, # Optional. The length of time, in seconds, that this debug session is valid,
        # starting from when it&#x27;s received in the control plane. Min = 1, Max = 15,
        # Default = 10.
    &quot;tracesize&quot;: 42, # Optional. The maximum number of bytes captured from the response payload.
        # Min = 0, Max = 5120, Default = 5120.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageToken=None, pageSize=None, x__xgafv=None)</code>
  <pre>Lists debug sessions that are currently active in the given API Proxy
revision.

Args:
  parent: string, Required. The name of the API Proxy revision deployment for which
to list debug sessions. Must be of the form:
 `organizations/{organization}/environments/{environment}/apis/{api}/revisions/{revision}`. (required)
  pageToken: string, Page token, returned from a previous ListDebugSessions call, that you
can use to retrieve the next page.
  pageSize: integer, Maximum number of debug sessions to return. The page size defaults
to 25.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Page token that you can include in a ListDebugSessionsRequest to
        # retrieve the next page. If omitted, no subsequent pages exist.
    &quot;sessions&quot;: [ # Session info that includes debug session ID and the first transaction
        # creation timestamp.
      { # Session carries the debug session id and its creation time.
        &quot;id&quot;: &quot;A String&quot;, # The debug session ID.
        &quot;timestampMs&quot;: &quot;A String&quot;, # The first transaction creation timestamp in millisecond, recoreded by UAP.
      },
    ],
  }</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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>