<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="cloudtrace_v1.html">Cloud Trace API</a> . <a href="cloudtrace_v1.projects.html">projects</a> . <a href="cloudtrace_v1.projects.traces.html">traces</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(projectId, traceId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a single trace by its ID.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, endTime=None, filter=None, orderBy=None, pageSize=None, pageToken=None, startTime=None, view=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns of a list of traces that match the specified filter conditions.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, traceId, x__xgafv=None)</code>
  <pre>Gets a single trace by its ID.

Args:
  projectId: string, Required. ID of the Cloud project where the trace data is stored. (required)
  traceId: string, Required. ID of the trace to return. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A trace describes how long it takes for an application to perform an operation. It consists of a set of spans, each of which represent a single timed event within the operation.
  &quot;projectId&quot;: &quot;A String&quot;, # Project ID of the Cloud project where the trace data is stored.
  &quot;spans&quot;: [ # Collection of spans in the trace.
    { # A span represents a single timed event within a trace. Spans can be nested and form a trace tree. Often, a trace contains a root span that describes the end-to-end latency of an operation and, optionally, one or more subspans for its suboperations. Spans do not need to be contiguous. There may be gaps between spans in a trace.
      &quot;endTime&quot;: &quot;A String&quot;, # End time of the span in nanoseconds from the UNIX epoch.
      &quot;kind&quot;: &quot;A String&quot;, # Distinguishes between spans generated in a particular context. For example, two spans with the same name may be distinguished using `RPC_CLIENT` and `RPC_SERVER` to identify queueing latency associated with the span.
      &quot;labels&quot;: { # Collection of labels associated with the span. Label keys must be less than 128 bytes. Label values must be less than 16 kilobytes (10MB for `/stacktrace` values). Some predefined label keys exist, or you may create your own. When creating your own, we recommend the following formats: * `/category/product/key` for agents of well-known products (e.g. `/db/mongodb/read_size`). * `short_host/path/key` for domain-specific keys (e.g. `foo.com/myproduct/bar`) Predefined labels include: * `/agent` * `/component` * `/error/message` * `/error/name` * `/http/client_city` * `/http/client_country` * `/http/client_protocol` * `/http/client_region` * `/http/host` * `/http/method` * `/http/path` * `/http/redirected_url` * `/http/request/size` * `/http/response/size` * `/http/route` * `/http/status_code` * `/http/url` * `/http/user_agent` * `/pid` * `/stacktrace` * `/tid`
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # Name of the span. Must be less than 128 bytes. The span name is sanitized and displayed in the Trace tool in the Google Cloud Platform Console. The name may be a method name or some other per-call site name. For the same executable and the same call point, a best practice is to use a consistent name, which makes it easier to correlate cross-trace spans.
      &quot;parentSpanId&quot;: &quot;A String&quot;, # Optional. ID of the parent span, if any.
      &quot;spanId&quot;: &quot;A String&quot;, # Identifier for the span. Must be a 64-bit integer other than 0 and unique within a trace. For example, `2205310701640571284`.
      &quot;startTime&quot;: &quot;A String&quot;, # Start time of the span in nanoseconds from the UNIX epoch.
    },
  ],
  &quot;traceId&quot;: &quot;A String&quot;, # Globally unique identifier for the trace. This identifier is a 128-bit numeric value formatted as a 32-byte hex string. For example, `382d4f4c6b7bb2f4a972559d9085001d`. The numeric value should not be zero.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, endTime=None, filter=None, orderBy=None, pageSize=None, pageToken=None, startTime=None, view=None, x__xgafv=None)</code>
  <pre>Returns of a list of traces that match the specified filter conditions.

Args:
  projectId: string, Required. ID of the Cloud project where the trace data is stored. (required)
  endTime: string, End of the time interval (inclusive) during which the trace data was collected from the application.
  filter: string, Optional. A filter against labels for the request. By default, searches use prefix matching. To specify exact match, prepend a plus symbol (`+`) to the search term. Multiple terms are ANDed. Syntax: * `root:NAME_PREFIX` or `NAME_PREFIX`: Return traces where any root span starts with `NAME_PREFIX`. * `+root:NAME` or `+NAME`: Return traces where any root span&#x27;s name is exactly `NAME`. * `span:NAME_PREFIX`: Return traces where any span starts with `NAME_PREFIX`. * `+span:NAME`: Return traces where any span&#x27;s name is exactly `NAME`. * `latency:DURATION`: Return traces whose overall latency is greater or equal to than `DURATION`. Accepted units are nanoseconds (`ns`), milliseconds (`ms`), and seconds (`s`). Default is `ms`. For example, `latency:24ms` returns traces whose overall latency is greater than or equal to 24 milliseconds. * `label:LABEL_KEY`: Return all traces containing the specified label key (exact match, case-sensitive) regardless of the key:value pair&#x27;s value (including empty values). * `LABEL_KEY:VALUE_PREFIX`: Return all traces containing the specified label key (exact match, case-sensitive) whose value starts with `VALUE_PREFIX`. Both a key and a value must be specified. * `+LABEL_KEY:VALUE`: Return all traces containing a key:value pair exactly matching the specified text. Both a key and a value must be specified. * `method:VALUE`: Equivalent to `/http/method:VALUE`. * `url:VALUE`: Equivalent to `/http/url:VALUE`.
  orderBy: string, Optional. Field used to sort the returned traces. Can be one of the following: * `trace_id` * `name` (`name` field of root span in the trace) * `duration` (difference between `end_time` and `start_time` fields of the root span) * `start` (`start_time` field of the root span) Descending order can be specified by appending `desc` to the sort field (for example, `name desc`). Only one sort field is permitted.
  pageSize: integer, Optional. Maximum number of traces to return. If not specified or &lt;= 0, the implementation selects a reasonable value. The implementation may return fewer traces than the requested page size.
  pageToken: string, Token identifying the page of results to return. If provided, use the value of the `next_page_token` field from a previous request.
  startTime: string, Start of the time interval (inclusive) during which the trace data was collected from the application.
  view: string, Optional. Type of data returned for traces in the list. Default is `MINIMAL`.
    Allowed values
      VIEW_TYPE_UNSPECIFIED - Default is `MINIMAL` if unspecified.
      MINIMAL - Minimal view of the trace record that contains only the project and trace IDs.
      ROOTSPAN - Root span view of the trace record that returns the root spans along with the minimal trace data.
      COMPLETE - Complete view of the trace record that contains the actual trace data. This is equivalent to calling the REST `get` or RPC `GetTrace` method using the ID of each listed trace.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for the `ListTraces` method.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # If defined, indicates that there are more traces that match the request and that this value should be passed to the next request to continue retrieving additional traces.
  &quot;traces&quot;: [ # List of trace records as specified by the view parameter.
    { # A trace describes how long it takes for an application to perform an operation. It consists of a set of spans, each of which represent a single timed event within the operation.
      &quot;projectId&quot;: &quot;A String&quot;, # Project ID of the Cloud project where the trace data is stored.
      &quot;spans&quot;: [ # Collection of spans in the trace.
        { # A span represents a single timed event within a trace. Spans can be nested and form a trace tree. Often, a trace contains a root span that describes the end-to-end latency of an operation and, optionally, one or more subspans for its suboperations. Spans do not need to be contiguous. There may be gaps between spans in a trace.
          &quot;endTime&quot;: &quot;A String&quot;, # End time of the span in nanoseconds from the UNIX epoch.
          &quot;kind&quot;: &quot;A String&quot;, # Distinguishes between spans generated in a particular context. For example, two spans with the same name may be distinguished using `RPC_CLIENT` and `RPC_SERVER` to identify queueing latency associated with the span.
          &quot;labels&quot;: { # Collection of labels associated with the span. Label keys must be less than 128 bytes. Label values must be less than 16 kilobytes (10MB for `/stacktrace` values). Some predefined label keys exist, or you may create your own. When creating your own, we recommend the following formats: * `/category/product/key` for agents of well-known products (e.g. `/db/mongodb/read_size`). * `short_host/path/key` for domain-specific keys (e.g. `foo.com/myproduct/bar`) Predefined labels include: * `/agent` * `/component` * `/error/message` * `/error/name` * `/http/client_city` * `/http/client_country` * `/http/client_protocol` * `/http/client_region` * `/http/host` * `/http/method` * `/http/path` * `/http/redirected_url` * `/http/request/size` * `/http/response/size` * `/http/route` * `/http/status_code` * `/http/url` * `/http/user_agent` * `/pid` * `/stacktrace` * `/tid`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;name&quot;: &quot;A String&quot;, # Name of the span. Must be less than 128 bytes. The span name is sanitized and displayed in the Trace tool in the Google Cloud Platform Console. The name may be a method name or some other per-call site name. For the same executable and the same call point, a best practice is to use a consistent name, which makes it easier to correlate cross-trace spans.
          &quot;parentSpanId&quot;: &quot;A String&quot;, # Optional. ID of the parent span, if any.
          &quot;spanId&quot;: &quot;A String&quot;, # Identifier for the span. Must be a 64-bit integer other than 0 and unique within a trace. For example, `2205310701640571284`.
          &quot;startTime&quot;: &quot;A String&quot;, # Start time of the span in nanoseconds from the UNIX epoch.
        },
      ],
      &quot;traceId&quot;: &quot;A String&quot;, # Globally unique identifier for the trace. This identifier is a 128-bit numeric value formatted as a 32-byte hex string. For example, `382d4f4c6b7bb2f4a972559d9085001d`. The numeric value should not be zero.
    },
  ],
}</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>