<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">Stackdriver Trace API</a> . <a href="cloudtrace_v1.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="cloudtrace_v1.projects.traces.html">traces()</a></code>
</p>
<p class="firstline">Returns the traces Resource.</p>

<p class="toc_element">
  <code><a href="#patchTraces">patchTraces(projectId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Sends new traces to Stackdriver Trace or updates existing traces. If the ID</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="patchTraces">patchTraces(projectId, body, x__xgafv=None)</code>
  <pre>Sends new traces to Stackdriver Trace or updates existing traces. If the ID
of a trace that you send matches that of an existing trace, any fields
in the existing trace and its spans are overwritten by the provided values,
and any new fields provided are merged with the existing trace data. If the
ID does not match, a new trace is created.

Args:
  projectId: string, ID of the Cloud project where the trace data is stored. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # List of new or updated traces.
    "traces": [ # List of traces.
      { # 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.
        "projectId": "A String", # Project ID of the Cloud project where the trace data is stored.
        "traceId": "A String", # Globally unique identifier for the trace. This identifier is a 128-bit
            # numeric value formatted as a 32-byte hex string.
        "spans": [ # 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.
            "kind": "A String", # 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.
            "name": "A String", # Name of the span. Must be less than 128 bytes. The span name is sanitized
                # and displayed in the Stackdriver Trace tool in the
                # {% dynamic print site_values.console_name %}.
                # 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.
            "labels": { # 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/redirected_url`
                # *   `/http/request/size`
                # *   `/http/response/size`
                # *   `/http/status_code`
                # *   `/http/url`
                # *   `/http/user_agent`
                # *   `/pid`
                # *   `/stacktrace`
                # *   `/tid`
              "a_key": "A String",
            },
            "parentSpanId": "A String", # ID of the parent span, if any. Optional.
            "startTime": "A String", # Start time of the span in nanoseconds from the UNIX epoch.
            "spanId": "A String", # Identifier for the span. Must be a 64-bit integer other than 0 and
                # unique within a trace.
            "endTime": "A String", # End time of the span in nanoseconds from the UNIX epoch.
          },
        ],
      },
    ],
  }

  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>

</body></html>