<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="tracing_v2.html">Google Tracing API</a> . <a href="tracing_v2.projects.html">projects</a> . <a href="tracing_v2.projects.traces.html">traces</a> . <a href="tracing_v2.projects.traces.spans.html">spans</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(name, body, 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="create">create(name, body, x__xgafv=None)</code>
  <pre>Creates a new Span.

Args:
  name: string, The resource name of Span in the format
`projects/PROJECT_ID/traces/TRACE_ID/spans/SPAN_ID`.
`TRACE_ID` is a unique identifier for a trace within a project and is a
base16-encoded, case-insensitive string and is required to be 32 char long.
`SPAN_ID` is a unique identifier for a span within a trace. It is a
base 16-encoded, case-insensitive string of a 8-bytes array and is required
to be 16 char long. (required)
  body: object, The request body. (required)
    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, optionally, one or more subspans for
    # its sub-operations. (A trace could alternatively contain multiple root spans,
    # or none at all.) Spans do not need to be contiguous. There may be gaps
    # and/or overlaps between spans in a trace.
  "status": { # The `Status` type defines a logical error model that is suitable for different # An optional final status for this span.
      # programming environments, including REST APIs and RPC APIs. It is used by
      # [gRPC](https://github.com/grpc). The error model is designed to be:
      #
      # - Simple to use and understand for most users
      # - Flexible enough to meet unexpected needs
      #
      # # Overview
      #
      # The `Status` message contains three pieces of data: error code, error message,
      # and error details. The error code should be an enum value of
      # google.rpc.Code, but it may accept additional error codes if needed.  The
      # error message should be a developer-facing English message that helps
      # developers *understand* and *resolve* the error. If a localized user-facing
      # error message is needed, put the localized message in the error details or
      # localize it in the client. The optional error details may contain arbitrary
      # information about the error. There is a predefined set of error detail types
      # in the package `google.rpc` that can be used for common error conditions.
      #
      # # Language mapping
      #
      # The `Status` message is the logical representation of the error model, but it
      # is not necessarily the actual wire format. When the `Status` message is
      # exposed in different client libraries and different wire protocols, it can be
      # mapped differently. For example, it will likely be mapped to some exceptions
      # in Java, but more likely mapped to some error codes in C.
      #
      # # Other uses
      #
      # The error model and the `Status` message can be used in a variety of
      # environments, either with or without APIs, to provide a
      # consistent developer experience across different environments.
      #
      # Example uses of this error model include:
      #
      # - Partial errors. If a service needs to return partial errors to the client,
      #     it may embed the `Status` in the normal response to indicate the partial
      #     errors.
      #
      # - Workflow errors. A typical workflow has multiple steps. Each step may
      #     have a `Status` message for error reporting.
      #
      # - Batch operations. If a client uses batch request and batch response, the
      #     `Status` message should be used directly inside batch response, one for
      #     each error sub-response.
      #
      # - Asynchronous operations. If an API call embeds asynchronous operation
      #     results in its response, the status of those operations should be
      #     represented directly using the `Status` message.
      #
      # - Logging. If some API errors are stored in logs, the message `Status` could
      #     be used directly after any stripping needed for security/privacy reasons.
    "message": "A String", # 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.
    "code": 42, # The status code, which should be an enum value of google.rpc.Code.
    "details": [ # A list of messages that carry the error details.  There will be a
        # common set of message types for APIs to use.
      {
        "a_key": "", # Properties of the object. Contains field @type with type URL.
      },
    ],
  },
  "stackTrace": { # StackTrace collected in a trace. # Stack trace captured at the start of the span.
    "stackTraceHashId": "A String", # 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`.
    "stackFrames": { # Represents collection of StackFrames that can be truncated. # Stack frames in this stack trace. A maximum of 128 frames are allowed.
      "frame": [ # Stack frames in this stack trace.
        { # Represents a single stack frame in a stack trace.
          "columnNumber": "A String", # Column number is important in JavaScript (anonymous functions).
              # May not be available in some languages.
          "functionName": { # Represents a string value that might be truncated. # The fully-qualified name that uniquely identifies this function or
              # method (up to 1024 characters).
            "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                # means that the string value was not truncated.
            "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                # 256 bytes.
          },
          "fileName": { # Represents a string value that might be truncated. # The filename of the file containing this frame (up to 256 characters).
            "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                # means that the string value was not truncated.
            "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                # 256 bytes.
          },
          "originalFunctionName": { # Represents a string value that might be truncated. # Used when the function name is
              # [mangled](http://www.avabodh.com/cxxin/namemangling.html). May be
              # fully-qualified (up to 1024 characters).
            "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                # means that the string value was not truncated.
            "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                # 256 bytes.
          },
          "loadModule": { # Binary module. # Binary module the code is loaded from.
            "buildId": { # Represents a string value that might be truncated. # Build_id is a unique identifier for the module, usually a hash of its
                # contents (up to 128 characters).
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
            "module": { # Represents a string value that might be truncated. # E.g. main binary, kernel modules, and dynamic libraries
                # such as libc.so, sharedlib.so (up to 256 characters).
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
          },
          "lineNumber": "A String", # Line number of the frame.
          "sourceVersion": { # Represents a string value that might be truncated. # The version of the deployed source code (up to 128 characters).
            "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                # means that the string value was not truncated.
            "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                # 256 bytes.
          },
        },
      ],
      "droppedFramesCount": 42, # The number of dropped stack frames after the maximum size was enforced.
          # If 0 then no frames were dropped.
    },
  },
  "displayName": { # Represents a string value that might be truncated. # Description of the operation in the span. It is sanitized and displayed in
      # the Stackdriver Trace tool in the
      # {% dynamic print site_values.console_name %}.
      # The display_name may be a method name or some other per-call site
      # name. For the same executable and the same call point, a best practice is
      # to use a consistent operation name, which makes it easier to correlate
      # cross-trace spans.
      # The maximum length for the display_name is 128 bytes.
    "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
        # means that the string value was not truncated.
    "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
        # 256 bytes.
  },
  "name": "A String", # The resource name of Span in the format
      # `projects/PROJECT_ID/traces/TRACE_ID/spans/SPAN_ID`.
      # `TRACE_ID` is a unique identifier for a trace within a project and is a
      # base16-encoded, case-insensitive string and is required to be 32 char long.
      # `SPAN_ID` is a unique identifier for a span within a trace. It is a
      # base 16-encoded, case-insensitive string of a 8-bytes array and is required
      # to be 16 char long.
  "links": { # A collection of links, which are references from this span to a span # A maximum of 128 links are allowed per Span.
      # in the same or different trace.
    "droppedLinksCount": 42, # The number of dropped links after the maximum size was enforced. If
        # 0 then no links were dropped.
    "link": [ # A collection of links.
      { # A pointer from this span to another span in a different `Trace` within
          # the same service project or within a different service project. Used
          # (for example) in batching operations, where a single batch handler
          # processes multiple requests from different traces or when receives a
          # request from a different service project.
        "spanId": "A String", # `SPAN_ID` is a unique identifier for a span within a trace. It is a
            # base16-encoded, case-insensitive string of a 8-bytes array and is
            # required to be 16 char long.
        "traceId": "A String", # `TRACE_ID` is a unique identifier for a trace within a project. It is
            # a base16-encoded, case-insensitive string of a 16-bytes array and is
            # required to be 32 char long.
        "type": "A String", # The relationship of the current span relative to the linked span.
      },
    ],
  },
  "parentSpanId": "A String", # ID of parent span which is a base 16-encoded, case-insensitive string of
      # a 8-bytes array and is required to be 16 char long. If this is a root span,
      # the value must be empty.
  "startTime": "A String", # Start time of the span.
      # On the client side, this is the local machine clock time at which the span
      # execution was started; on the server
      # side, this is the time at which the server application handler started
      # running.
  "spanId": "A String", # Unique identifier for a span within a trace. It is a base 16-encoded,
      # case-insensitive string of a 8-bytes array and is required.
  "attributes": { # Attributes of a span with a key:value format. # A set of attributes on the span. A maximum of 32 attributes are allowed per
      # Span.
    "droppedAttributesCount": 42, # The number of dropped attributes after the maximum size was enforced. If
        # 0 then no attributes were dropped.
    "attributeMap": { # The maximum key length is 128 bytes (attributes are dropped if the
        # key size is larger than the maximum allowed). The value can be a string
        # (up to 256 bytes), integer, or boolean (true/false). Some common pair
        # examples:
        #
        #     "/instance_id": "my-instance"
        #     "/zone": "us-central1-a"
        #     "/grpc/peer_address": "ip:port" (dns, etc.)
        #     "/grpc/deadline": "Duration"
        #     "/http/user_agent"
        #     "/http/request_bytes": 300
        #     "/http/response_bytes": 1200
        #     "/http/url": google.com/apis
        #     "abc.com/myattribute": true
      "a_key": { # The allowed types for the value side of an attribute key:value pair.
        "stringValue": { # Represents a string value that might be truncated. # A string value (up to 256 bytes).
          "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
              # means that the string value was not truncated.
          "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
              # 256 bytes.
        },
        "intValue": "A String", # An integer value.
        "boolValue": True or False, # A boolean value.
      },
    },
  },
  "timeEvents": { # A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation # A maximum of 32 annotations and 128 network events are allowed per Span.
      # on the span, consisting of either user-supplied key:value pairs, or
      # details of an RPC message sent/received on the network.
    "timeEvent": [ # A collection of `TimeEvent`s.
      { # A time-stamped annotation in the Span.
        "networkEvent": { # An event describing an RPC message sent/received on the network. A # An event describing an RPC message sent/received on the network.
            # maximum of 128 network events are allowed per Span.
          "messageSize": "A String", # The number of bytes sent or received.
          "messageId": "A String", # An identifier for the message, which must be unique in this span.
          "type": "A String", # Type of NetworkEvent. Indicates whether the RPC message was sent or
              # received.
          "time": "A String", # If available, this is the kernel time:
              #
              # *  For sent messages, this is the time at which the first bit was sent.
              # *  For received messages, this is the time at which the last bit was
              #    received.
        },
        "annotation": { # Text annotation with a set of attributes. A maximum of 32 annotations are # One or more key:value pairs.
            # allowed per Span.
          "attributes": { # Attributes of a span with a key:value format. # A set of attributes on the annotation. A maximum of 4 attributes are
              # allowed per Annotation.
            "droppedAttributesCount": 42, # The number of dropped attributes after the maximum size was enforced. If
                # 0 then no attributes were dropped.
            "attributeMap": { # The maximum key length is 128 bytes (attributes are dropped if the
                # key size is larger than the maximum allowed). The value can be a string
                # (up to 256 bytes), integer, or boolean (true/false). Some common pair
                # examples:
                #
                #     "/instance_id": "my-instance"
                #     "/zone": "us-central1-a"
                #     "/grpc/peer_address": "ip:port" (dns, etc.)
                #     "/grpc/deadline": "Duration"
                #     "/http/user_agent"
                #     "/http/request_bytes": 300
                #     "/http/response_bytes": 1200
                #     "/http/url": google.com/apis
                #     "abc.com/myattribute": true
              "a_key": { # The allowed types for the value side of an attribute key:value pair.
                "stringValue": { # Represents a string value that might be truncated. # A string value (up to 256 bytes).
                  "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                      # means that the string value was not truncated.
                  "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                      # 256 bytes.
                },
                "intValue": "A String", # An integer value.
                "boolValue": True or False, # A boolean value.
              },
            },
          },
          "description": { # Represents a string value that might be truncated. # A user-supplied message describing the event. The maximum length for
              # the description is 256 bytes.
            "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                # means that the string value was not truncated.
            "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                # 256 bytes.
          },
        },
        "time": "A String", # The timestamp indicating the time the event occurred.
      },
    ],
    "droppedNetworkEventsCount": 42, # The number of dropped network events after the maximum size was enforced.
        # If 0 then no annotations were dropped.
    "droppedAnnotationsCount": 42, # The number of dropped annotations after the maximum size was enforced. If
        # 0 then no annotations were dropped.
  },
  "endTime": "A String", # End time of the span.
      # On the client side, this is the local machine clock time at which the span
      # execution was ended; on the server
      # side, this is the time at which the server application handler stopped
      # running.
}

  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, optionally, one or more subspans for
      # its sub-operations. (A trace could alternatively contain multiple root spans,
      # or none at all.) Spans do not need to be contiguous. There may be gaps
      # and/or overlaps between spans in a trace.
    "status": { # The `Status` type defines a logical error model that is suitable for different # An optional final status for this span.
        # programming environments, including REST APIs and RPC APIs. It is used by
        # [gRPC](https://github.com/grpc). The error model is designed to be:
        #
        # - Simple to use and understand for most users
        # - Flexible enough to meet unexpected needs
        #
        # # Overview
        #
        # The `Status` message contains three pieces of data: error code, error message,
        # and error details. The error code should be an enum value of
        # google.rpc.Code, but it may accept additional error codes if needed.  The
        # error message should be a developer-facing English message that helps
        # developers *understand* and *resolve* the error. If a localized user-facing
        # error message is needed, put the localized message in the error details or
        # localize it in the client. The optional error details may contain arbitrary
        # information about the error. There is a predefined set of error detail types
        # in the package `google.rpc` that can be used for common error conditions.
        #
        # # Language mapping
        #
        # The `Status` message is the logical representation of the error model, but it
        # is not necessarily the actual wire format. When the `Status` message is
        # exposed in different client libraries and different wire protocols, it can be
        # mapped differently. For example, it will likely be mapped to some exceptions
        # in Java, but more likely mapped to some error codes in C.
        #
        # # Other uses
        #
        # The error model and the `Status` message can be used in a variety of
        # environments, either with or without APIs, to provide a
        # consistent developer experience across different environments.
        #
        # Example uses of this error model include:
        #
        # - Partial errors. If a service needs to return partial errors to the client,
        #     it may embed the `Status` in the normal response to indicate the partial
        #     errors.
        #
        # - Workflow errors. A typical workflow has multiple steps. Each step may
        #     have a `Status` message for error reporting.
        #
        # - Batch operations. If a client uses batch request and batch response, the
        #     `Status` message should be used directly inside batch response, one for
        #     each error sub-response.
        #
        # - Asynchronous operations. If an API call embeds asynchronous operation
        #     results in its response, the status of those operations should be
        #     represented directly using the `Status` message.
        #
        # - Logging. If some API errors are stored in logs, the message `Status` could
        #     be used directly after any stripping needed for security/privacy reasons.
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details.  There will be a
          # common set of message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "stackTrace": { # StackTrace collected in a trace. # Stack trace captured at the start of the span.
      "stackTraceHashId": "A String", # 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`.
      "stackFrames": { # Represents collection of StackFrames that can be truncated. # Stack frames in this stack trace. A maximum of 128 frames are allowed.
        "frame": [ # Stack frames in this stack trace.
          { # Represents a single stack frame in a stack trace.
            "columnNumber": "A String", # Column number is important in JavaScript (anonymous functions).
                # May not be available in some languages.
            "functionName": { # Represents a string value that might be truncated. # The fully-qualified name that uniquely identifies this function or
                # method (up to 1024 characters).
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
            "fileName": { # Represents a string value that might be truncated. # The filename of the file containing this frame (up to 256 characters).
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
            "originalFunctionName": { # Represents a string value that might be truncated. # Used when the function name is
                # [mangled](http://www.avabodh.com/cxxin/namemangling.html). May be
                # fully-qualified (up to 1024 characters).
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
            "loadModule": { # Binary module. # Binary module the code is loaded from.
              "buildId": { # Represents a string value that might be truncated. # Build_id is a unique identifier for the module, usually a hash of its
                  # contents (up to 128 characters).
                "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                    # means that the string value was not truncated.
                "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                    # 256 bytes.
              },
              "module": { # Represents a string value that might be truncated. # E.g. main binary, kernel modules, and dynamic libraries
                  # such as libc.so, sharedlib.so (up to 256 characters).
                "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                    # means that the string value was not truncated.
                "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                    # 256 bytes.
              },
            },
            "lineNumber": "A String", # Line number of the frame.
            "sourceVersion": { # Represents a string value that might be truncated. # The version of the deployed source code (up to 128 characters).
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
          },
        ],
        "droppedFramesCount": 42, # The number of dropped stack frames after the maximum size was enforced.
            # If 0 then no frames were dropped.
      },
    },
    "displayName": { # Represents a string value that might be truncated. # Description of the operation in the span. It is sanitized and displayed in
        # the Stackdriver Trace tool in the
        # {% dynamic print site_values.console_name %}.
        # The display_name may be a method name or some other per-call site
        # name. For the same executable and the same call point, a best practice is
        # to use a consistent operation name, which makes it easier to correlate
        # cross-trace spans.
        # The maximum length for the display_name is 128 bytes.
      "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
          # means that the string value was not truncated.
      "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
          # 256 bytes.
    },
    "name": "A String", # The resource name of Span in the format
        # `projects/PROJECT_ID/traces/TRACE_ID/spans/SPAN_ID`.
        # `TRACE_ID` is a unique identifier for a trace within a project and is a
        # base16-encoded, case-insensitive string and is required to be 32 char long.
        # `SPAN_ID` is a unique identifier for a span within a trace. It is a
        # base 16-encoded, case-insensitive string of a 8-bytes array and is required
        # to be 16 char long.
    "links": { # A collection of links, which are references from this span to a span # A maximum of 128 links are allowed per Span.
        # in the same or different trace.
      "droppedLinksCount": 42, # The number of dropped links after the maximum size was enforced. If
          # 0 then no links were dropped.
      "link": [ # A collection of links.
        { # A pointer from this span to another span in a different `Trace` within
            # the same service project or within a different service project. Used
            # (for example) in batching operations, where a single batch handler
            # processes multiple requests from different traces or when receives a
            # request from a different service project.
          "spanId": "A String", # `SPAN_ID` is a unique identifier for a span within a trace. It is a
              # base16-encoded, case-insensitive string of a 8-bytes array and is
              # required to be 16 char long.
          "traceId": "A String", # `TRACE_ID` is a unique identifier for a trace within a project. It is
              # a base16-encoded, case-insensitive string of a 16-bytes array and is
              # required to be 32 char long.
          "type": "A String", # The relationship of the current span relative to the linked span.
        },
      ],
    },
    "parentSpanId": "A String", # ID of parent span which is a base 16-encoded, case-insensitive string of
        # a 8-bytes array and is required to be 16 char long. If this is a root span,
        # the value must be empty.
    "startTime": "A String", # Start time of the span.
        # On the client side, this is the local machine clock time at which the span
        # execution was started; on the server
        # side, this is the time at which the server application handler started
        # running.
    "spanId": "A String", # Unique identifier for a span within a trace. It is a base 16-encoded,
        # case-insensitive string of a 8-bytes array and is required.
    "attributes": { # Attributes of a span with a key:value format. # A set of attributes on the span. A maximum of 32 attributes are allowed per
        # Span.
      "droppedAttributesCount": 42, # The number of dropped attributes after the maximum size was enforced. If
          # 0 then no attributes were dropped.
      "attributeMap": { # The maximum key length is 128 bytes (attributes are dropped if the
          # key size is larger than the maximum allowed). The value can be a string
          # (up to 256 bytes), integer, or boolean (true/false). Some common pair
          # examples:
          #
          #     "/instance_id": "my-instance"
          #     "/zone": "us-central1-a"
          #     "/grpc/peer_address": "ip:port" (dns, etc.)
          #     "/grpc/deadline": "Duration"
          #     "/http/user_agent"
          #     "/http/request_bytes": 300
          #     "/http/response_bytes": 1200
          #     "/http/url": google.com/apis
          #     "abc.com/myattribute": true
        "a_key": { # The allowed types for the value side of an attribute key:value pair.
          "stringValue": { # Represents a string value that might be truncated. # A string value (up to 256 bytes).
            "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                # means that the string value was not truncated.
            "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                # 256 bytes.
          },
          "intValue": "A String", # An integer value.
          "boolValue": True or False, # A boolean value.
        },
      },
    },
    "timeEvents": { # A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation # A maximum of 32 annotations and 128 network events are allowed per Span.
        # on the span, consisting of either user-supplied key:value pairs, or
        # details of an RPC message sent/received on the network.
      "timeEvent": [ # A collection of `TimeEvent`s.
        { # A time-stamped annotation in the Span.
          "networkEvent": { # An event describing an RPC message sent/received on the network. A # An event describing an RPC message sent/received on the network.
              # maximum of 128 network events are allowed per Span.
            "messageSize": "A String", # The number of bytes sent or received.
            "messageId": "A String", # An identifier for the message, which must be unique in this span.
            "type": "A String", # Type of NetworkEvent. Indicates whether the RPC message was sent or
                # received.
            "time": "A String", # If available, this is the kernel time:
                #
                # *  For sent messages, this is the time at which the first bit was sent.
                # *  For received messages, this is the time at which the last bit was
                #    received.
          },
          "annotation": { # Text annotation with a set of attributes. A maximum of 32 annotations are # One or more key:value pairs.
              # allowed per Span.
            "attributes": { # Attributes of a span with a key:value format. # A set of attributes on the annotation. A maximum of 4 attributes are
                # allowed per Annotation.
              "droppedAttributesCount": 42, # The number of dropped attributes after the maximum size was enforced. If
                  # 0 then no attributes were dropped.
              "attributeMap": { # The maximum key length is 128 bytes (attributes are dropped if the
                  # key size is larger than the maximum allowed). The value can be a string
                  # (up to 256 bytes), integer, or boolean (true/false). Some common pair
                  # examples:
                  #
                  #     "/instance_id": "my-instance"
                  #     "/zone": "us-central1-a"
                  #     "/grpc/peer_address": "ip:port" (dns, etc.)
                  #     "/grpc/deadline": "Duration"
                  #     "/http/user_agent"
                  #     "/http/request_bytes": 300
                  #     "/http/response_bytes": 1200
                  #     "/http/url": google.com/apis
                  #     "abc.com/myattribute": true
                "a_key": { # The allowed types for the value side of an attribute key:value pair.
                  "stringValue": { # Represents a string value that might be truncated. # A string value (up to 256 bytes).
                    "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                        # means that the string value was not truncated.
                    "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                        # 256 bytes.
                  },
                  "intValue": "A String", # An integer value.
                  "boolValue": True or False, # A boolean value.
                },
              },
            },
            "description": { # Represents a string value that might be truncated. # A user-supplied message describing the event. The maximum length for
                # the description is 256 bytes.
              "truncatedCharacterCount": 42, # The number of characters truncated from the original string value. If 0 it
                  # means that the string value was not truncated.
              "value": "A String", # The truncated string value. E.g. for a string attribute this may have up to
                  # 256 bytes.
            },
          },
          "time": "A String", # The timestamp indicating the time the event occurred.
        },
      ],
      "droppedNetworkEventsCount": 42, # The number of dropped network events after the maximum size was enforced.
          # If 0 then no annotations were dropped.
      "droppedAnnotationsCount": 42, # The number of dropped annotations after the maximum size was enforced. If
          # 0 then no annotations were dropped.
    },
    "endTime": "A String", # End time of the span.
        # On the client side, this is the local machine clock time at which the span
        # execution was ended; on the server
        # side, this is the time at which the server application handler stopped
        # running.
  }</pre>
</div>

</body></html>