<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]` `[TRACE_ID]` is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array. It should not be zero. `[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 might be gaps or overlaps between spans in a trace.
  &quot;attributes&quot;: { # A set of attributes as key-value pairs. # A set of attributes on the span. You can have up to 32 attributes per span.
    &quot;attributeMap&quot;: { # A 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` or `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;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
        &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;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;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;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). Cloud Trace displays the description in the Cloud 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;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;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;attributes&quot;: { # A set of attributes as key-value pairs. # A set of attributes on the link. Up to 32 attributes can be specified per link.
          &quot;attributeMap&quot;: { # A 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` or `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;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
              &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;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;, # The `[SPAN_ID]` for a span within a trace.
        &quot;traceId&quot;: &quot;A String&quot;, # The `[TRACE_ID]` for a trace within a project.
        &quot;type&quot;: &quot;A String&quot;, # The relationship of the current span relative to the linked span.
      },
    ],
  },
  &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]` `[TRACE_ID]` is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array. It should not be zero. `[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;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;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;spanId&quot;: &quot;A String&quot;, # Required. The `[SPAN_ID]` portion of the span&#x27;s resource name.
  &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;stackTrace&quot;: { # A call stack appearing in a trace. # Stack trace captured at the start of the span.
    &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;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;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;loadModule&quot;: { # Binary module. # The binary module from where the code was loaded.
            &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;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;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;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;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;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;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;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;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;timeEvent&quot;: [ # A collection of `TimeEvent`s.
      { # A time-stamped annotation or message event in the Span.
        &quot;annotation&quot;: { # Text annotation with a set of attributes. # Text annotation with a set of attributes.
          &quot;attributes&quot;: { # A set of attributes as key-value pairs. # A set of attributes on the annotation. You can have up to 4 attributes per Annotation.
            &quot;attributeMap&quot;: { # A 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` or `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;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
                &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;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;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;messageEvent&quot;: { # An event describing a message sent/received between Spans. # An event describing a message sent/received between Spans.
          &quot;compressedSizeBytes&quot;: &quot;A String&quot;, # The number of compressed bytes sent or received. If missing, the compressed size is assumed to be the same size as the uncompressed size.
          &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.
          &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;time&quot;: &quot;A String&quot;, # The timestamp indicating the time the event occurred.
      },
    ],
  },
}

  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 might be gaps or overlaps between spans in a trace.
  &quot;attributes&quot;: { # A set of attributes as key-value pairs. # A set of attributes on the span. You can have up to 32 attributes per span.
    &quot;attributeMap&quot;: { # A 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` or `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;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
        &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;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;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;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). Cloud Trace displays the description in the Cloud 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;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;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;attributes&quot;: { # A set of attributes as key-value pairs. # A set of attributes on the link. Up to 32 attributes can be specified per link.
          &quot;attributeMap&quot;: { # A 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` or `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;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
              &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;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;, # The `[SPAN_ID]` for a span within a trace.
        &quot;traceId&quot;: &quot;A String&quot;, # The `[TRACE_ID]` for a trace within a project.
        &quot;type&quot;: &quot;A String&quot;, # The relationship of the current span relative to the linked span.
      },
    ],
  },
  &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]` `[TRACE_ID]` is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array. It should not be zero. `[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;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;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;spanId&quot;: &quot;A String&quot;, # Required. The `[SPAN_ID]` portion of the span&#x27;s resource name.
  &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;stackTrace&quot;: { # A call stack appearing in a trace. # Stack trace captured at the start of the span.
    &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;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;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;loadModule&quot;: { # Binary module. # The binary module from where the code was loaded.
            &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;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;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;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;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;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;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;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;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;timeEvent&quot;: [ # A collection of `TimeEvent`s.
      { # A time-stamped annotation or message event in the Span.
        &quot;annotation&quot;: { # Text annotation with a set of attributes. # Text annotation with a set of attributes.
          &quot;attributes&quot;: { # A set of attributes as key-value pairs. # A set of attributes on the annotation. You can have up to 4 attributes per Annotation.
            &quot;attributeMap&quot;: { # A 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` or `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;boolValue&quot;: True or False, # A Boolean value represented by `true` or `false`.
                &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;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;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;messageEvent&quot;: { # An event describing a message sent/received between Spans. # An event describing a message sent/received between Spans.
          &quot;compressedSizeBytes&quot;: &quot;A String&quot;, # The number of compressed bytes sent or received. If missing, the compressed size is assumed to be the same size as the uncompressed size.
          &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.
          &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;time&quot;: &quot;A String&quot;, # The timestamp indicating the time the event occurred.
      },
    ],
  },
}</pre>
</div>

</body></html>