<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> . <a href="cloudtrace_v2.projects.traces.spans.html">spans</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="#createSpan">createSpan(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new span.</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="createSpan">createSpan(name, body=None, x__xgafv=None)</code>
  <pre>Creates a new span.

Args:
  name: string, 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. (required)
  body: object, The request body.
    The object takes the form of:

{ # 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;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;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;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;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;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;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
              &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
            },
          },
          &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;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;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;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;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;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;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
        &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
      },
    },
    &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;spanId&quot;: &quot;A String&quot;, # Required. The [SPAN_ID] portion of the span&#x27;s resource name.
  &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;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;frame&quot;: [ # Stack frames in this call stack.
        { # Represents a single stack frame in a stack trace.
          &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;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;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;lineNumber&quot;: &quot;A String&quot;, # The line number in `file_name` where the function call appears.
          &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;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;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;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;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;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;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;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;type&quot;: &quot;A String&quot;, # Type of MessageEvent. Indicates whether the message was sent or received.
          &quot;uncompressedSizeBytes&quot;: &quot;A String&quot;, # The number of uncompressed bytes sent or received.
          &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;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;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;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;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;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
                &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
              },
            },
            &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;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;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;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;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;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;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.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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;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;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;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;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;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;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
                &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
              },
            },
            &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;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;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;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;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;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;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
          &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
        },
      },
      &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;spanId&quot;: &quot;A String&quot;, # Required. The [SPAN_ID] portion of the span&#x27;s resource name.
    &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;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;frame&quot;: [ # Stack frames in this call stack.
          { # Represents a single stack frame in a stack trace.
            &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;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;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;lineNumber&quot;: &quot;A String&quot;, # The line number in `file_name` where the function call appears.
            &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;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;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;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;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;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;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;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;type&quot;: &quot;A String&quot;, # Type of MessageEvent. Indicates whether the message was sent or received.
            &quot;uncompressedSizeBytes&quot;: &quot;A String&quot;, # The number of uncompressed bytes sent or received.
            &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;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;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;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;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;intValue&quot;: &quot;A String&quot;, # A 64-bit signed integer.
                  &quot;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
                },
              },
              &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;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;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;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;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;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;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.
    },
  }</pre>
</div>

</body></html>