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

<p class="toc_element">
  <code><a href="#batchWrite">batchWrite(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sends new spans to new or existing traces. You cannot update existing spans.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchWrite">batchWrite(name, body=None, x__xgafv=None)</code>
  <pre>Sends new spans to new or existing traces. You cannot update existing spans.

Args:
  name: string, Required. The name of the project where the spans belong. The format is `projects/[PROJECT_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for the `BatchWriteSpans` method.
    &quot;spans&quot;: [ # Required. A list of new spans. The span names must not match existing spans, or the results are undefined.
      { # A span represents a single operation within a trace. Spans can be nested to form a trace tree. Often, a trace contains a root span that describes the end-to-end latency, and one or more subspans for its sub-operations. A trace can also contain multiple root spans, or none at all. Spans do not need to be contiguous—there may be gaps or overlaps between spans in a trace.
        &quot;parentSpanId&quot;: &quot;A String&quot;, # The [SPAN_ID] of this span&#x27;s parent span. If this is a root span, then this field must be empty.
        &quot;displayName&quot;: { # Represents a string that might be shortened to a specified length. # Required. A description of the span&#x27;s operation (up to 128 bytes). Trace displays the description in the Google Cloud Platform Console. For example, the display name can be a qualified method name or a file name and a line number where the operation is called. A best practice is to use the same display name within an application and at the same call point. This makes it easier to correlate spans in different traces.
          &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
          &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
        },
        &quot;stackTrace&quot;: { # A call stack appearing in a trace. # Stack trace captured at the start of the span.
          &quot;stackTraceHashId&quot;: &quot;A String&quot;, # The hash ID is used to conserve network bandwidth for duplicate stack traces within a single trace. Often multiple spans will have identical stack traces. The first occurrence of a stack trace should contain both the `stackFrame` content and a value in `stackTraceHashId`. Subsequent spans within the same request can refer to that stack trace by only setting `stackTraceHashId`.
          &quot;stackFrames&quot;: { # A collection of stack frames, which can be truncated. # Stack frames in this stack trace. A maximum of 128 frames are allowed.
            &quot;frame&quot;: [ # Stack frames in this call stack.
              { # Represents a single stack frame in a stack trace.
                &quot;functionName&quot;: { # Represents a string that might be shortened to a specified length. # The fully-qualified name that uniquely identifies the function or method that is active in this frame (up to 1024 bytes).
                  &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                  &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                },
                &quot;loadModule&quot;: { # Binary module. # The binary module from where the code was loaded.
                  &quot;module&quot;: { # Represents a string that might be shortened to a specified length. # For example: main binary, kernel modules, and dynamic libraries such as libc.so, sharedlib.so (up to 256 bytes).
                    &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                    &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                  },
                  &quot;buildId&quot;: { # Represents a string that might be shortened to a specified length. # A unique identifier for the module, usually a hash of its contents (up to 128 bytes).
                    &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                    &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                  },
                },
                &quot;originalFunctionName&quot;: { # Represents a string that might be shortened to a specified length. # An un-mangled function name, if `function_name` is [mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can be fully-qualified (up to 1024 bytes).
                  &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                  &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                },
                &quot;sourceVersion&quot;: { # Represents a string that might be shortened to a specified length. # The version of the deployed source code (up to 128 bytes).
                  &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                  &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                },
                &quot;fileName&quot;: { # Represents a string that might be shortened to a specified length. # The name of the source file where the function call appears (up to 256 bytes).
                  &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                  &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                },
                &quot;columnNumber&quot;: &quot;A String&quot;, # The column number where the function call appears, if available. This is important in JavaScript because of its anonymous functions.
                &quot;lineNumber&quot;: &quot;A String&quot;, # The line number in `file_name` where the function call appears.
              },
            ],
            &quot;droppedFramesCount&quot;: 42, # The number of stack frames that were dropped because there were too many stack frames. If this value is 0, then no stack frames were dropped.
          },
        },
        &quot;childSpanCount&quot;: 42, # Optional. The number of child spans that were generated while this span was active. If set, allows implementation to detect missing child spans.
        &quot;endTime&quot;: &quot;A String&quot;, # Required. The end time of the span. On the client side, this is the time kept by the local machine where the span execution ends. On the server side, this is the time when the server application handler stops running.
        &quot;sameProcessAsParentSpan&quot;: True or False, # Optional. Set this parameter to indicate whether this span is in the same process as its parent. If you do not set this parameter, Trace is unable to take advantage of this helpful information.
        &quot;name&quot;: &quot;A String&quot;, # Required. The resource name of the span in the following format: projects/[PROJECT_ID]/traces/[TRACE_ID]/spans/SPAN_ID is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array. [SPAN_ID] is a unique identifier for a span within a trace; it is a 16-character hexadecimal encoding of an 8-byte array. It should not be zero.
        &quot;spanId&quot;: &quot;A String&quot;, # Required. The [SPAN_ID] portion of the span&#x27;s resource name.
        &quot;links&quot;: { # A collection of links, which are references from this span to a span in the same or different trace. # Links associated with the span. You can have up to 128 links per Span.
          &quot;link&quot;: [ # A collection of links.
            { # A pointer from the current span to another span in the same trace or in a different trace. For example, this can be used in batching operations, where a single batch handler processes multiple requests from different traces or when the handler receives a request from a different project.
              &quot;type&quot;: &quot;A String&quot;, # The relationship of the current span relative to the linked span.
              &quot;attributes&quot;: { # A set of attributes, each in the format `[KEY]:[VALUE]`. # A set of attributes on the link. You have have up to 32 attributes per link.
                &quot;droppedAttributesCount&quot;: 42, # The number of attributes that were discarded. Attributes can be discarded because their keys are too long or because there are too many attributes. If this value is 0 then all attributes are valid.
                &quot;attributeMap&quot;: { # The set of attributes. Each attribute&#x27;s key can be up to 128 bytes long. The value can be a string up to 256 bytes, a signed 64-bit integer, or the Boolean values `true` and `false`. For example: &quot;/instance_id&quot;: { &quot;string_value&quot;: { &quot;value&quot;: &quot;my-instance&quot; } } &quot;/http/request_bytes&quot;: { &quot;int_value&quot;: 300 } &quot;abc.com/myattribute&quot;: { &quot;bool_value&quot;: false }
                  &quot;a_key&quot;: { # The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute.
                    &quot;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
                    &quot;stringValue&quot;: { # Represents a string that might be shortened to a specified length. # A string up to 256 bytes long.
                      &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                      &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                    },
                    &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
                  },
                },
              },
              &quot;traceId&quot;: &quot;A String&quot;, # The [TRACE_ID] for a trace within a project.
              &quot;spanId&quot;: &quot;A String&quot;, # The [SPAN_ID] for a span within a trace.
            },
          ],
          &quot;droppedLinksCount&quot;: 42, # The number of dropped links after the maximum size was enforced. If this value is 0, then no links were dropped.
        },
        &quot;spanKind&quot;: &quot;A String&quot;, # Optional. Distinguishes between spans generated in a particular context. For example, two spans with the same name may be distinguished using `CLIENT` (caller) and `SERVER` (callee) to identify an RPC call.
        &quot;startTime&quot;: &quot;A String&quot;, # Required. The start time of the span. On the client side, this is the time kept by the local machine where the span execution starts. On the server side, this is the time when the server&#x27;s application handler starts running.
        &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Optional. The final status for this span.
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
        },
        &quot;timeEvents&quot;: { # A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation on the span, consisting of either user-supplied key:value pairs, or details of a message sent/received between Spans. # A set of time events. You can have up to 32 annotations and 128 message events per span.
          &quot;droppedMessageEventsCount&quot;: 42, # The number of dropped message events in all the included time events. If the value is 0, then no message events were dropped.
          &quot;droppedAnnotationsCount&quot;: 42, # The number of dropped annotations in all the included time events. If the value is 0, then no annotations were dropped.
          &quot;timeEvent&quot;: [ # A collection of `TimeEvent`s.
            { # A time-stamped annotation or message event in the Span.
              &quot;messageEvent&quot;: { # An event describing a message sent/received between Spans. # An event describing a message sent/received between Spans.
                &quot;id&quot;: &quot;A String&quot;, # An identifier for the MessageEvent&#x27;s message that can be used to match SENT and RECEIVED MessageEvents. It is recommended to be unique within a Span.
                &quot;type&quot;: &quot;A String&quot;, # Type of MessageEvent. Indicates whether the message was sent or received.
                &quot;compressedSizeBytes&quot;: &quot;A String&quot;, # The number of compressed bytes sent or received. If missing assumed to be the same size as uncompressed.
                &quot;uncompressedSizeBytes&quot;: &quot;A String&quot;, # The number of uncompressed bytes sent or received.
              },
              &quot;time&quot;: &quot;A String&quot;, # The timestamp indicating the time the event occurred.
              &quot;annotation&quot;: { # Text annotation with a set of attributes. # Text annotation with a set of attributes.
                &quot;description&quot;: { # Represents a string that might be shortened to a specified length. # A user-supplied message describing the event. The maximum length for the description is 256 bytes.
                  &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                  &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                },
                &quot;attributes&quot;: { # A set of attributes, each in the format `[KEY]:[VALUE]`. # A set of attributes on the annotation. You can have up to 4 attributes per Annotation.
                  &quot;droppedAttributesCount&quot;: 42, # The number of attributes that were discarded. Attributes can be discarded because their keys are too long or because there are too many attributes. If this value is 0 then all attributes are valid.
                  &quot;attributeMap&quot;: { # The set of attributes. Each attribute&#x27;s key can be up to 128 bytes long. The value can be a string up to 256 bytes, a signed 64-bit integer, or the Boolean values `true` and `false`. For example: &quot;/instance_id&quot;: { &quot;string_value&quot;: { &quot;value&quot;: &quot;my-instance&quot; } } &quot;/http/request_bytes&quot;: { &quot;int_value&quot;: 300 } &quot;abc.com/myattribute&quot;: { &quot;bool_value&quot;: false }
                    &quot;a_key&quot;: { # The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute.
                      &quot;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
                      &quot;stringValue&quot;: { # Represents a string that might be shortened to a specified length. # A string up to 256 bytes long.
                        &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                        &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
                      },
                      &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
                    },
                  },
                },
              },
            },
          ],
        },
        &quot;attributes&quot;: { # A set of attributes, each in the format `[KEY]:[VALUE]`. # A set of attributes on the span. You can have up to 32 attributes per span.
          &quot;droppedAttributesCount&quot;: 42, # The number of attributes that were discarded. Attributes can be discarded because their keys are too long or because there are too many attributes. If this value is 0 then all attributes are valid.
          &quot;attributeMap&quot;: { # The set of attributes. Each attribute&#x27;s key can be up to 128 bytes long. The value can be a string up to 256 bytes, a signed 64-bit integer, or the Boolean values `true` and `false`. For example: &quot;/instance_id&quot;: { &quot;string_value&quot;: { &quot;value&quot;: &quot;my-instance&quot; } } &quot;/http/request_bytes&quot;: { &quot;int_value&quot;: 300 } &quot;abc.com/myattribute&quot;: { &quot;bool_value&quot;: false }
            &quot;a_key&quot;: { # The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute.
              &quot;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
              &quot;stringValue&quot;: { # Represents a string that might be shortened to a specified length. # A string up to 256 bytes long.
                &quot;truncatedByteCount&quot;: 42, # The number of bytes removed from the original string. If this value is 0, then the string was not shortened.
                &quot;value&quot;: &quot;A String&quot;, # The shortened string. For example, if the original string is 500 bytes long and the limit of the string is 128 bytes, then `value` contains the first 128 bytes of the 500-byte string. Truncation always happens on a UTF8 character boundary. If there are multi-byte characters in the string, then the length of the shortened string might be less than the size limit.
              },
              &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
            },
          },
        },
      },
    ],
  }

  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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

</body></html>