{
  "consumes": [
    "application/json"
  ],
  "definitions": {
    "DataV1PutPanelAnnotationBody": {
      "properties": {
        "starts_at": {
          "description": "The start time of the period being annotated.",
          "format": "date-time",
          "type": "string"
        },
        "title": {
          "description": "A short description explaining the annotation. Maximum character length: `100`.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of user-supplied key:value pairs associated with the event. The\nfollowing maximums apply:\n- Number of labels per event: `50`\n- Key character length: `200`\n- Value character length: `500`",
          "type": "object"
        }
      },
      "type": "object"
    },
    "ListTracesRequestQueryType": {
      "enum": [
        "TRACE_IDS",
        "SERVICE_OPERATION"
      ],
      "type": "string"
    },
    "ListTracesRequestTagFilter": {
      "properties": {
        "key": {
          "description": "The key (or name) of the span tag that is inspected by this filter.",
          "type": "string"
        },
        "value": {
          "$ref": "#/definitions/TagFilterStringFilter"
        },
        "numeric_value": {
          "$ref": "#/definitions/TagFilterNumericFilter"
        }
      },
      "type": "object"
    },
    "NumericFilterComparisonType": {
      "enum": [
        "EQUAL",
        "NOT_EQUAL",
        "GREATER_THAN",
        "GREATER_THAN_OR_EQUAL",
        "LESS_THAN",
        "LESS_THAN_OR_EQUAL"
      ],
      "type": "string"
    },
    "QueryLogsRangeRequestTimestampFilter": {
      "properties": {
        "after": {
          "description": "Returns only log messages with a timestamp after this time. If omitted,\ndefaults to the last 30 minutes.",
          "format": "date-time",
          "type": "string"
        },
        "before": {
          "description": "Returns only log messages with a timestamp before this time. If omitted,\ndefaults to the last 30 minutes.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseColumnMeta": {
      "properties": {
        "name": {
          "description": "The column names to include in the tabular results.",
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/QueryLogsRangeResponseColumnMetaType"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseColumnMetaType": {
      "description": "The data type to include in each column.",
      "enum": [
        "BOOLEAN",
        "FLOAT",
        "STRING"
      ],
      "type": "string"
    },
    "QueryLogsRangeResponseGridData": {
      "properties": {
        "columns": {
          "description": "Defines the structure and data types of columns in tabular log results.",
          "items": {
            "$ref": "#/definitions/QueryLogsRangeResponseColumnMeta"
          },
          "type": "array"
        },
        "rows": {
          "description": "Defines the structure and data types of rows in tabular log results.",
          "items": {
            "$ref": "#/definitions/QueryLogsRangeResponseRow"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseMetadata": {
      "properties": {
        "limit_enforced": {
          "description": "Indicates whether the result is truncated by the request limit.",
          "type": "boolean"
        },
        "page": {
          "$ref": "#/definitions/QueryLogsRangeResponseMetadataPageResult"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseMetadataPageResult": {
      "properties": {
        "next_token": {
          "description": "Opaque page token that identifies the next page of items to request.\nAn empty value indicates there are no more items to return.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseRow": {
      "properties": {
        "values": {
          "description": "Values to include that match each column type. Only one of the supported\nfields can be set depending on the type of value.",
          "items": {
            "$ref": "#/definitions/QueryLogsRangeResponseRowValue"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseRowValue": {
      "properties": {
        "bool_value": {
          "description": "Indicates a boolean value.",
          "type": "boolean"
        },
        "float_value": {
          "description": "Indicates a float value.",
          "format": "double",
          "type": "number"
        },
        "string_value": {
          "description": "Indicates a string value.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "QueryLogsRangeResponseTimeSeriesData": {
      "properties": {
        "series": {
          "description": "Specifies the time series to return from query results.",
          "items": {
            "$ref": "#/definitions/TimeSeriesDataTimeSeries"
          },
          "type": "array"
        },
        "group_by_dimension_names": {
          "description": "Names of the dimensions to group results by.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "SpanLink": {
      "description": "A pointer from the current span to another span in the same trace or in a\ndifferent trace. For example, this can be used in batching operations,\nwhere a single batch handler processes multiple requests from different\ntraces or when the handler receives a request from a different project.",
      "properties": {
        "trace_id": {
          "description": "A unique identifier of a trace that this linked span is part of. The ID is a\n16-byte array.",
          "format": "byte",
          "type": "string"
        },
        "span_id": {
          "description": "A unique identifier for the linked span. The ID is an 8-byte array.",
          "format": "byte",
          "type": "string"
        },
        "trace_state": {
          "description": "The trace_state associated with the link.",
          "type": "string"
        },
        "attributes": {
          "description": "attributes is a collection of attribute key/value pairs on the link.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).",
          "items": {
            "$ref": "#/definitions/v1KeyValue"
          },
          "type": "array"
        },
        "dropped_attributes_count": {
          "description": "dropped_attributes_count is the number of dropped attributes. If the value is 0,\nthen no attributes were dropped.",
          "format": "int64",
          "type": "integer"
        },
        "flags": {
          "description": "Flags, a bit field.\n\nBits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace\nContext specification. To read the 8-bit W3C trace flag, use\n`flags \u0026 SPAN_FLAGS_TRACE_FLAGS_MASK`.\n\nSee https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions.\n\nBits 8 and 9 represent the 3 states of whether the link is remote.\nThe states are (unknown, is not remote, is remote).\nTo read whether the value is known, use `(flags \u0026 SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`.\nTo read whether the link is remote, use `(flags \u0026 SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\nReaders MUST NOT assume that bits 10-31 (22 most significant bits) will be zero.\nWhen creating new spans, bits 10-31 (most-significant 22-bits) MUST be zero.\n\n[Optional].",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "SpanSpanKind": {
      "description": "SpanKind is the type of span. Can be used to specify additional relationships between spans\nin addition to a parent/child relationship.\n\n - SPAN_KIND_INTERNAL: Indicates that the span represents an internal operation within an application,\nas opposed to an operation happening at the boundaries. Default value.\n - SPAN_KIND_SERVER: Indicates that the span covers server-side handling of an RPC or other\nremote network request.\n - SPAN_KIND_CLIENT: Indicates that the span describes a request to some remote service.\n - SPAN_KIND_PRODUCER: Indicates that the span describes a producer sending a message to a broker.\nUnlike CLIENT and SERVER, there is often no direct critical path latency relationship\nbetween producer and consumer spans. A PRODUCER span ends when the message was accepted\nby the broker while the logical processing of the message might span a much longer time.\n - SPAN_KIND_CONSUMER: Indicates that the span describes consumer receiving a message from a broker.\nLike the PRODUCER kind, there is often no direct critical path latency relationship\nbetween producer and consumer spans.",
      "enum": [
        "SPAN_KIND_INTERNAL",
        "SPAN_KIND_SERVER",
        "SPAN_KIND_CLIENT",
        "SPAN_KIND_PRODUCER",
        "SPAN_KIND_CONSUMER"
      ],
      "type": "string"
    },
    "StatusStatusCode": {
      "description": "- STATUS_CODE_OK: The Span has been validated by an Application developer or Operator to \nhave completed successfully.\n - STATUS_CODE_ERROR: The Span contains an error.",
      "enum": [
        "STATUS_CODE_OK",
        "STATUS_CODE_ERROR"
      ],
      "title": "For the semantics of status codes see\nhttps://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#set-status",
      "type": "string"
    },
    "StringFilterStringFilterMatchType": {
      "enum": [
        "EXACT",
        "REGEX",
        "EXACT_NEGATION",
        "REGEX_NEGATION",
        "IN",
        "NOT_IN"
      ],
      "type": "string"
    },
    "TagFilterNumericFilter": {
      "properties": {
        "comparison": {
          "$ref": "#/definitions/NumericFilterComparisonType"
        },
        "value": {
          "description": "The filter value used in comparison against match candidates.",
          "format": "double",
          "type": "number"
        }
      },
      "type": "object"
    },
    "TagFilterStringFilter": {
      "properties": {
        "match": {
          "$ref": "#/definitions/StringFilterStringFilterMatchType"
        },
        "value": {
          "description": "The value the filter compares to the target trace or span field.",
          "type": "string"
        },
        "in_values": {
          "description": "Values the filter tests against when using IN or NOT_IN match type.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "TimeSeriesBucket": {
      "properties": {
        "start_time": {
          "description": "The start time of the time range for this bucket.",
          "format": "date-time",
          "type": "string"
        },
        "end_time": {
          "description": "The end time of the time range for this bucket.",
          "format": "date-time",
          "type": "string"
        },
        "float_value": {
          "description": "The aggregated value for the time period of this bucket.\nThis value is nullable.",
          "format": "double",
          "type": "number"
        }
      },
      "type": "object"
    },
    "TimeSeriesDataTimeSeries": {
      "properties": {
        "group_by_dimension_values": {
          "description": "Values of the dimensions to group results by.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "buckets": {
          "description": "Defines a time-bounded data point in a time series to store aggregated\nvalues over specific time intervals.",
          "items": {
            "$ref": "#/definitions/TimeSeriesBucket"
          },
          "type": "array"
        },
        "aggregation_name": {
          "description": "Name of the aggregation used to calculate the values.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "apiError": {
      "properties": {
        "code": {
          "description": "An optional private error code whose values are undefined.",
          "format": "int32",
          "type": "integer"
        },
        "message": {
          "description": "An error message describing what went wrong.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "configv1PageParams": {
      "properties": {
        "max_size": {
          "description": "Sets the preferred number of items to return per page. If set to `0`, the\nserver will use its default value. Regardless of the value specified, clients\nmust never assume how many items will be returned.",
          "format": "int64",
          "type": "integer"
        },
        "token": {
          "description": "An opaque page token that identifies which page the client should request.\nAn empty value indicates the first page.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "configv1PageResult": {
      "properties": {
        "next_token": {
          "description": "An opaque page token that identifies the next page of items that the\nclient should request. An empty value indicates that there are no\nmore items to return.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "datav1CreateEventRequest": {
      "properties": {
        "event": {
          "$ref": "#/definitions/datav1Event"
        }
      },
      "type": "object"
    },
    "datav1CreateEventResponse": {
      "type": "object"
    },
    "datav1CreatePanelAnnotationRequest": {
      "properties": {
        "type": {
          "$ref": "#/definitions/datav1PanelAnnotationTargetType"
        },
        "target_reference": {
          "description": "The `slug` of the resource being annotated.",
          "type": "string"
        },
        "starts_at": {
          "description": "The start time of the period being annotated.",
          "format": "date-time",
          "type": "string"
        },
        "title": {
          "description": "A short description explaining the annotation.\nMax character length: `100`.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of user-supplied key:value pairs associated with the annotation. The\nfollowing maximums apply:\n- Number of labels per annotation: `50`\n- Key character length: `200`\n- Value character length: `500`",
          "type": "object"
        }
      },
      "type": "object"
    },
    "datav1Event": {
      "properties": {
        "title": {
          "description": "A short description of the event that occurred, such as a commit message of\na code deploy. Max length: 100 characters.",
          "type": "string"
        },
        "happened_at": {
          "description": "The time the event occurred. Must be between 24 hours in the past or 24 hours\nin the future. Defaults to `now` if not specified.",
          "format": "date-time",
          "type": "string"
        },
        "category": {
          "description": "Change Event categories are case sensitive. Each of the listed categories are\nlowercase and must be queried in all lowercase. For example, `\"category\":\n\"alerts\"` is valid, but `\"category\": \"Alerts\"` is invalid.\n\nChronosphere Support can add and remove custom categories upon request.\nBecause categories are case sensitive, custom categories must be queried using\nthe same case they were created. For example, if you create a category called\n`INGEST`, any queries in Changes Explorer must use `INGEST` in all uppercase\nas the category to query.",
          "title": "The category the event belongs to. Must be one of these categories:\n * `alerts`\n * `broadcasts`\n * `chronosphere`\n * `deploys`\n * `feature_flags`\n * `infrastructure`\n * `third_party`",
          "type": "string"
        },
        "type": {
          "description": "The event type, which is used to group and differentiate events within a\n`category` or `source`.",
          "type": "string"
        },
        "source": {
          "description": "Identifies where the data originated, in cases where a change to the\ninstrumentation or integration is needed. Max length: 50 characters.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of queryable labels, which are user-supplied key/value pairs associated\nwith the event.\n * Max labels: 200 per event\n * Max key length: 200 characters\n * Max value length: 5,000 characters",
          "type": "object"
        },
        "payload_json": {
          "description": "A string-escaped representation of the original event in JSON format. You can\nset only `payload_json` or `payload_object`. This field is not queryable. Max\nlength: 100,000 characters.",
          "type": "string"
        },
        "payload_object": {
          "description": "The JSON payload, if the original event was in key/value format. You can set\nonly `payload_json` or `payload_object`. Max length: 100,000 characters.\nThis field is input only.",
          "type": "object"
        },
        "id": {
          "description": "Unique identifier for the change event.",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "datav1ListEventsResponse": {
      "properties": {
        "events": {
          "items": {
            "$ref": "#/definitions/datav1Event"
          },
          "type": "array"
        },
        "page": {
          "$ref": "#/definitions/configv1PageResult"
        }
      },
      "type": "object"
    },
    "datav1ListPanelAnnotationsResponse": {
      "properties": {
        "panel_annotations": {
          "items": {
            "$ref": "#/definitions/datav1PanelAnnotationResponse"
          },
          "type": "array"
        },
        "page": {
          "$ref": "#/definitions/configv1PageResult"
        }
      },
      "type": "object"
    },
    "datav1ListTracesRequest": {
      "properties": {
        "query_type": {
          "$ref": "#/definitions/ListTracesRequestQueryType"
        },
        "trace_ids": {
          "description": "Trace IDs to search for.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "start_time": {
          "description": "Start time for the search.",
          "format": "date-time",
          "type": "string"
        },
        "end_time": {
          "description": "End time for the search.",
          "format": "date-time",
          "type": "string"
        },
        "service": {
          "description": "Service to filter on. An empty value doesn't apply any service filter.",
          "type": "string"
        },
        "operation": {
          "description": "Operation to filter on. An empty value doesn't apply any operation filter.",
          "type": "string"
        },
        "tag_filters": {
          "description": "Tag filter to apply. An empty value doesn't apply any tag filter.",
          "items": {
            "$ref": "#/definitions/ListTracesRequestTagFilter"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "datav1ListTracesResponse": {
      "properties": {
        "traces": {
          "items": {
            "$ref": "#/definitions/v1TracesData"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "datav1MetricMetadata": {
      "description": "MetricMetadata contains metadata information about a metric.",
      "properties": {
        "name": {
          "description": "The name of the metric.",
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/datav1MetricType"
        },
        "description": {
          "description": "Human-readable description of what the metric measures.",
          "type": "string"
        },
        "source": {
          "$ref": "#/definitions/datav1Source"
        }
      },
      "type": "object"
    },
    "datav1MetricType": {
      "description": "MetricType defines the canonical metric types supported by the platform.\n\n - CUMULATIVE_COUNTER: A Prom-style cumulative counter, which stores a strictly increasing count\nof distinct events (but may reset to zero). Each datapoint stores the\nrunning total at the given timestamp.\n - GAUGE: A true gauge, which stores an observation of state at a point in time,\nwhere it is impossible to have two different states at a single point in\ntime. Each datapoint stores the value at the given timestamp.\n - DELTA_COUNTER: A delta counter, which stores the same type of data as COUNTER, but where\neach datapoint stores a strictly positive delta increment at the given\ntimestamp.\n - MEASUREMENT: A raw observation with some discrete value, e.g. individual request\nlatency, individual request size, etc. Unlike a counter, each MEASUREMENT\nevent has a discrete value. And unlike a gauge, there can be multiple\nvalues at any point in time.\n - CUMULATIVE_EXPONENTIAL_HISTOGRAM: An exponential histogram, where each datapoint is a structured value (not a\nfloat), which stores compressed buckets of cumulative measurement counts,\nalong with total sum and count.\n - DELTA_EXPONENTIAL_HISTOGRAM: An exponential histogram, where each datapoint is a structured value (not a\nfloat), which stores compressed buckets of measurement count deltas,\nalong with total sum and count.",
      "enum": [
        "CUMULATIVE_COUNTER",
        "GAUGE",
        "DELTA_COUNTER",
        "MEASUREMENT",
        "CUMULATIVE_EXPONENTIAL_HISTOGRAM",
        "DELTA_EXPONENTIAL_HISTOGRAM"
      ],
      "type": "string"
    },
    "datav1PanelAnnotationResponse": {
      "properties": {
        "id": {
          "description": "Unique identifier of the panel annotation.",
          "type": "string"
        },
        "type": {
          "$ref": "#/definitions/datav1PanelAnnotationTargetType"
        },
        "target_reference": {
          "description": "The `slug` of the resource being annotated.",
          "type": "string"
        },
        "starts_at": {
          "description": "The start of the time period being annotated.",
          "format": "date-time",
          "type": "string"
        },
        "title": {
          "description": "A short description explaining the annotation.\nMax length, 100 characters.",
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of user-supplied key:value pairs associated with the annotation. The\nfollowing maximums apply:\n- Number of labels per annotation: `50`\n- Key character length: `200`\n- Value character length: `500`",
          "type": "object"
        },
        "created_by": {
          "description": "Display name of the creator of this annotation.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "datav1PanelAnnotationTargetType": {
      "enum": [
        "DASHBOARD"
      ],
      "type": "string"
    },
    "datav1QueryLogsRangeRequestPageParams": {
      "properties": {
        "token": {
          "description": "Opaque page token identifying which page to request. An empty token\nidentifies the first page.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "datav1QueryLogsRangeResponse": {
      "properties": {
        "metadata": {
          "$ref": "#/definitions/QueryLogsRangeResponseMetadata"
        },
        "time_series_data": {
          "$ref": "#/definitions/QueryLogsRangeResponseTimeSeriesData"
        },
        "grid_data": {
          "$ref": "#/definitions/QueryLogsRangeResponseGridData"
        }
      },
      "type": "object"
    },
    "datav1ReadMetricMetadataResponse": {
      "description": "ReadMetricMetadataResponse contains the metadata for the requested metric.",
      "properties": {
        "metadata": {
          "$ref": "#/definitions/datav1MetricMetadata"
        }
      },
      "type": "object"
    },
    "datav1Source": {
      "description": "Source is the wire format used to ingest the metric (maps to the __metric_source__ synthetic label).\nMetrics predating CanonicalSource tracking will have UNSPECIFIED.",
      "enum": [
        "PROMETHEUS",
        "STATSD",
        "OPEN_METRICS",
        "CARBON",
        "OPEN_TELEMETRY",
        "SIGNALFX",
        "WAVEFRONT",
        "DOGSTATSD",
        "CHRONO_GCP",
        "CLOUDWATCH_METRIC_STREAM",
        "CHRONO_AZURE",
        "TAGGED_STATSD",
        "CHRONO_CLOUDFLARE",
        "CHRONO_INTEGRATION"
      ],
      "type": "string"
    },
    "genericError": {
      "additionalProperties": true,
      "type": "object"
    },
    "googlerpcStatus": {
      "properties": {
        "code": {
          "format": "int32",
          "type": "integer"
        },
        "message": {
          "type": "string"
        },
        "details": {
          "items": {
            "$ref": "#/definitions/protobufAny"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "protobufAny": {
      "additionalProperties": {},
      "properties": {
        "@type": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "protobufNullValue": {
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\nThe JSON representation for `NullValue` is JSON `null`.",
      "type": "string"
    },
    "tracev1Status": {
      "description": "The Status type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs.",
      "properties": {
        "message": {
          "description": "A developer-facing human readable error message.",
          "type": "string"
        },
        "code": {
          "$ref": "#/definitions/StatusStatusCode"
        }
      },
      "type": "object"
    },
    "v1AnyValue": {
      "description": "AnyValue is used to represent any type of attribute value. AnyValue may contain a\nprimitive value such as a string or integer or it may contain an arbitrary nested\nobject containing arrays, key-value lists and primitives.",
      "properties": {
        "string_value": {
          "type": "string"
        },
        "bool_value": {
          "type": "boolean"
        },
        "int_value": {
          "format": "int64",
          "type": "string"
        },
        "double_value": {
          "format": "double",
          "type": "number"
        },
        "array_value": {
          "$ref": "#/definitions/v1ArrayValue"
        },
        "kvlist_value": {
          "$ref": "#/definitions/v1KeyValueList"
        },
        "bytes_value": {
          "format": "byte",
          "type": "string"
        }
      },
      "type": "object"
    },
    "v1ArrayValue": {
      "description": "ArrayValue is a list of AnyValue messages. We need ArrayValue as a message\nsince oneof in AnyValue does not allow repeated fields.",
      "properties": {
        "values": {
          "description": "Array of values. The array may be empty (contain 0 elements).",
          "items": {
            "$ref": "#/definitions/v1AnyValue"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "v1EntityRef": {
      "description": "A reference to an Entity.\nEntity represents an object of interest associated with produced telemetry: e.g spans, metrics, profiles, or logs.\n\nStatus: [Development]",
      "properties": {
        "schema_url": {
          "description": "This schema_url applies to the data in this message and to the Resource attributes\nreferenced by id_keys and description_keys.\nTODO: discuss if we are happy with this somewhat complicated definition of what\nthe schema_url applies to.\n\nThis field obsoletes the schema_url field in ResourceMetrics/ResourceSpans/ResourceLogs.",
          "title": "The Schema URL, if known. This is the identifier of the Schema that the entity data\nis recorded in. To learn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url",
          "type": "string"
        },
        "type": {
          "description": "Defines the type of the entity. MUST not change during the lifetime of the entity.\nFor example: \"service\" or \"host\". This field is required and MUST not be empty\nfor valid entities.",
          "type": "string"
        },
        "id_keys": {
          "description": "Attribute Keys that identify the entity.\nMUST not change during the lifetime of the entity. The Id must contain at least one attribute.\nThese keys MUST exist in the containing {message}.attributes.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "description_keys": {
          "description": "Descriptive (non-identifying) attribute keys of the entity.\nMAY change over the lifetime of the entity. MAY be empty.\nThese attribute keys are not part of entity's identity.\nThese keys MUST exist in the containing {message}.attributes.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "v1InstrumentationScope": {
      "description": "InstrumentationScope is a message representing the instrumentation scope information\nsuch as the fully qualified name and version.",
      "properties": {
        "name": {
          "description": "An empty instrumentation scope name means the name is unknown.",
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "attributes": {
          "description": "Additional attributes that describe the scope. [Optional].\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).",
          "items": {
            "$ref": "#/definitions/v1KeyValue"
          },
          "type": "array"
        },
        "dropped_attributes_count": {
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "v1KeyValue": {
      "description": "KeyValue is a key-value pair that is used to store Span attributes, Link\nattributes, etc.",
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "$ref": "#/definitions/v1AnyValue"
        }
      },
      "type": "object"
    },
    "v1KeyValueList": {
      "description": "KeyValueList is a list of KeyValue messages. We need KeyValueList as a message\nsince `oneof` in AnyValue does not allow repeated fields. Everywhere else where we need\na list of KeyValue messages (e.g. in Span) we use `repeated KeyValue` directly to\navoid unnecessary extra wrapping (which slows down the protocol). The 2 approaches\nare semantically equivalent.",
      "properties": {
        "values": {
          "description": "A collection of key/value pairs of key-value pairs. The list may be empty (may\ncontain 0 elements).\nThe keys MUST be unique (it is not allowed to have more than one\nvalue with the same key).",
          "items": {
            "$ref": "#/definitions/v1KeyValue"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "v1Resource": {
      "description": "Resource information.",
      "properties": {
        "attributes": {
          "description": "Set of attributes that describe the resource.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).",
          "items": {
            "$ref": "#/definitions/v1KeyValue"
          },
          "type": "array"
        },
        "dropped_attributes_count": {
          "description": "dropped_attributes_count is the number of dropped attributes. If the value is 0, then\nno attributes were dropped.",
          "format": "int64",
          "type": "integer"
        },
        "entity_refs": {
          "description": "Set of entities that participate in this Resource.\n\nNote: keys in the references MUST exist in attributes of this message.\n\nStatus: [Development]",
          "items": {
            "$ref": "#/definitions/v1EntityRef"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "v1ResourceSpans": {
      "description": "A collection of ScopeSpans from a Resource.",
      "properties": {
        "resource": {
          "$ref": "#/definitions/v1Resource"
        },
        "scope_spans": {
          "description": "A list of ScopeSpans that originate from a resource.",
          "items": {
            "$ref": "#/definitions/v1ScopeSpans"
          },
          "type": "array"
        },
        "schema_url": {
          "description": "The Schema URL, if known. This is the identifier of the Schema that the resource data\nis recorded in. Notably, the last part of the URL path is the version number of the\nschema: http[s]://server[:port]/path/\u003cversion\u003e. To learn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url\nThis schema_url applies to the data in the \"resource\" field. It does not apply\nto the data in the \"scope_spans\" field which have their own schema_url field.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "v1ScopeSpans": {
      "description": "A collection of Spans produced by an InstrumentationScope.",
      "properties": {
        "scope": {
          "$ref": "#/definitions/v1InstrumentationScope"
        },
        "spans": {
          "description": "A list of Spans that originate from an instrumentation scope.",
          "items": {
            "$ref": "#/definitions/v1Span"
          },
          "type": "array"
        },
        "schema_url": {
          "description": "The Schema URL, if known. This is the identifier of the Schema that the span data\nis recorded in. Notably, the last part of the URL path is the version number of the\nschema: http[s]://server[:port]/path/\u003cversion\u003e. To learn more about Schema URL see\nhttps://opentelemetry.io/docs/specs/otel/schemas/#schema-url\nThis schema_url applies to all spans and span events in the \"spans\" field.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "v1Span": {
      "description": "A Span represents a single operation performed by a single component of the system.\n\nThe next available field id is 17.",
      "properties": {
        "trace_id": {
          "description": "A unique identifier for a trace. All spans from the same trace share\nthe same `trace_id`. The ID is a 16-byte array. An ID with all zeroes OR\nof length other than 16 bytes is considered invalid (empty string in OTLP/JSON\nis zero-length and thus is also invalid).\n\nThis field is required.",
          "format": "byte",
          "type": "string"
        },
        "span_id": {
          "description": "A unique identifier for a span within a trace, assigned when the span\nis created. The ID is an 8-byte array. An ID with all zeroes OR of length\nother than 8 bytes is considered invalid (empty string in OTLP/JSON\nis zero-length and thus is also invalid).\n\nThis field is required.",
          "format": "byte",
          "type": "string"
        },
        "trace_state": {
          "description": "trace_state conveys information about request position in multiple distributed tracing graphs.\nIt is a trace_state in w3c-trace-context format: https://www.w3.org/TR/trace-context/#tracestate-header\nSee also https://github.com/w3c/distributed-tracing for more details about this field.",
          "type": "string"
        },
        "parent_span_id": {
          "description": "The `span_id` of this span's parent span. If this is a root span, then this\nfield must be empty. The ID is an 8-byte array.",
          "format": "byte",
          "type": "string"
        },
        "flags": {
          "description": "Flags, a bit field.\n\nBits 0-7 (8 least significant bits) are the trace flags as defined in W3C Trace\nContext specification. To read the 8-bit W3C trace flag, use\n`flags \u0026 SPAN_FLAGS_TRACE_FLAGS_MASK`.\n\nSee https://www.w3.org/TR/trace-context-2/#trace-flags for the flag definitions.\n\nBits 8 and 9 represent the 3 states of whether a span's parent\nis remote. The states are (unknown, is not remote, is remote).\nTo read whether the value is known, use `(flags \u0026 SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK) != 0`.\nTo read whether the span is remote, use `(flags \u0026 SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK) != 0`.\n\nWhen creating span messages, if the message is logically forwarded from another source\nwith an equivalent flags fields (i.e., usually another OTLP span message), the field SHOULD\nbe copied as-is. If creating from a source that does not have an equivalent flags field\n(such as a runtime representation of an OpenTelemetry span), the high 22 bits MUST\nbe set to zero.\nReaders MUST NOT assume that bits 10-31 (22 most significant bits) will be zero.\n\n[Optional].",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "description": "A description of the span's operation.\n\nFor example, the name can be a qualified method name or a file name\nand a line number where the operation is called. A best practice is to use\nthe same display name at the same call point in an application.\nThis makes it easier to correlate spans in different traces.\n\nThis field is semantically required to be set to non-empty string.\nEmpty value is equivalent to an unknown span name.\n\nThis field is required.",
          "type": "string"
        },
        "kind": {
          "$ref": "#/definitions/SpanSpanKind"
        },
        "start_time_unix_nano": {
          "description": "start_time_unix_nano is the start time of the span. On the client side, this is the time\nkept by the local machine where the span execution starts. On the server side, this\nis the time when the server's application handler starts running.\nValue is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970.\n\nThis field is semantically required and it is expected that end_time \u003e= start_time.",
          "format": "uint64",
          "type": "string"
        },
        "end_time_unix_nano": {
          "description": "end_time_unix_nano is the end time of the span. On the client side, this is the time\nkept by the local machine where the span execution ends. On the server side, this\nis the time when the server application handler stops running.\nValue is UNIX Epoch time in nanoseconds since 00:00:00 UTC on 1 January 1970.\n\nThis field is semantically required and it is expected that end_time \u003e= start_time.",
          "format": "uint64",
          "type": "string"
        },
        "attributes": {
          "description": "\"/http/user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36\"\n    \"/http/server_latency\": 300\n    \"example.com/myattribute\": true\n    \"example.com/score\": 10.239\n\nThe OpenTelemetry API specification further restricts the allowed value types:\nhttps://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).",
          "items": {
            "$ref": "#/definitions/v1KeyValue"
          },
          "title": "attributes is a collection of key/value pairs. Note, global attributes\nlike server name can be set using the resource API. Examples of attributes:",
          "type": "array"
        },
        "dropped_attributes_count": {
          "description": "dropped_attributes_count is the number of attributes that were discarded. Attributes\ncan be discarded because their keys are too long or because there are too many\nattributes. If this value is 0, then no attributes were dropped.",
          "format": "int64",
          "type": "integer"
        },
        "events": {
          "description": "events is a collection of Event items.",
          "items": {
            "$ref": "#/definitions/v1SpanEvent"
          },
          "type": "array"
        },
        "dropped_events_count": {
          "description": "dropped_events_count is the number of dropped events. If the value is 0, then no\nevents were dropped.",
          "format": "int64",
          "type": "integer"
        },
        "links": {
          "description": "links is a collection of Links, which are references from this span to a span\nin the same or different trace.",
          "items": {
            "$ref": "#/definitions/SpanLink"
          },
          "type": "array"
        },
        "dropped_links_count": {
          "description": "dropped_links_count is the number of dropped links after the maximum size was\nenforced. If this value is 0, then no links were dropped.",
          "format": "int64",
          "type": "integer"
        },
        "status": {
          "$ref": "#/definitions/tracev1Status"
        }
      },
      "type": "object"
    },
    "v1SpanEvent": {
      "description": "Event is a time-stamped annotation of the span, consisting of user-supplied\ntext description and key-value pairs.",
      "properties": {
        "time_unix_nano": {
          "description": "time_unix_nano is the time the event occurred.",
          "format": "uint64",
          "type": "string"
        },
        "name": {
          "description": "name of the event.\nThis field is semantically required to be set to non-empty string.",
          "type": "string"
        },
        "attributes": {
          "description": "attributes is a collection of attribute key/value pairs on the event.\nAttribute keys MUST be unique (it is not allowed to have more than one\nattribute with the same key).",
          "items": {
            "$ref": "#/definitions/v1KeyValue"
          },
          "type": "array"
        },
        "dropped_attributes_count": {
          "description": "dropped_attributes_count is the number of dropped attributes. If the value is 0,\nthen no attributes were dropped.",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "v1TracesData": {
      "description": "TracesData represents the traces data that can be stored in a persistent storage,\nOR can be embedded by other protocols that transfer OTLP traces data but do\nnot implement the OTLP protocol.\n\nThe main difference between this message and collector protocol is that\nin this message there will not be any \"control\" or \"metadata\" specific to\nOTLP protocol.\n\nWhen new fields are added into this message, the OTLP request MUST be updated\nas well.",
      "properties": {
        "resource_spans": {
          "description": "An array of ResourceSpans.\nFor data coming from a single resource this array will typically contain\none element. Intermediary nodes that receive data from multiple origins\ntypically batch the data before forwarding further and in that case this\narray will contain multiple elements.",
          "items": {
            "$ref": "#/definitions/v1ResourceSpans"
          },
          "type": "array"
        }
      },
      "type": "object"
    }
  },
  "info": {
    "description": "\nThe Data API provides HTTP/JSON REST endpoints for reading and writing data\nto the Chronosphere system.\n\nUse this link to download the raw Swagger specification:\n\u003ca href=\"/api/v1/data/swagger.json\"\u003e/api/v1/data/swagger.json\u003c/a\u003e\n",
    "title": "Data V1 API",
    "version": "v1"
  },
  "paths": {
    "/api/v1/data/events": {
      "get": {
        "operationId": "ListEvents",
        "parameters": [
          {
            "description": "Only events which happened_at after this time will be returned. If set, happened_before must also be set.\nIf no time range is set, defaults to 1 hour ago.",
            "format": "date-time",
            "in": "query",
            "name": "happened_after",
            "type": "string"
          },
          {
            "description": "Only events which happened_at before this will be returned. If set, happened_after must also be set.\nIf no time range is set, defaults to now.",
            "format": "date-time",
            "in": "query",
            "name": "happened_before",
            "type": "string"
          },
          {
            "description": "A query string specifying the query.\nThe query supports the following operators:  `(=, =~, !=, !~, AND, OR)`\nThe query supports nesting using parentheses, and also searching for label values by using a dot operator.\nThe query supports using either `'` or `\"` for identifying strings\n\nExample queries:\n`type = \"my-type\"`\n`type=\"my-type\"`\n`type != 'my-type' AND source !~ \"my-source|my-other-source\"`\n`type =~ \"my-type|my-other-type\" OR (source != \"my-source\" AND labels.cluster =~ \"my-cluster\")`",
            "in": "query",
            "name": "query",
            "type": "string"
          },
          {
            "description": "Sets the preferred number of items to return per page. If set to `0`, the\nserver will use its default value. Regardless of the value specified, clients\nmust never assume how many items will be returned.",
            "format": "int64",
            "in": "query",
            "name": "page.max_size",
            "type": "integer"
          },
          {
            "description": "An opaque page token that identifies which page the client should request.\nAn empty value indicates the first page.",
            "in": "query",
            "name": "page.token",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1ListEventsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      },
      "post": {
        "operationId": "CreateEvent",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/datav1CreateEventRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1CreateEventResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      }
    },
    "/api/v1/data/logs:range": {
      "get": {
        "description": "Logging",
        "operationId": "QueryLogsRange",
        "parameters": [
          {
            "description": "Specifies the query to run to filter logs.",
            "in": "query",
            "name": "query",
            "type": "string"
          },
          {
            "description": "Returns only log messages with a timestamp after this time. If omitted,\ndefaults to the last 30 minutes.",
            "format": "date-time",
            "in": "query",
            "name": "time_range.after",
            "type": "string"
          },
          {
            "description": "Returns only log messages with a timestamp before this time. If omitted,\ndefaults to the last 30 minutes.",
            "format": "date-time",
            "in": "query",
            "name": "time_range.before",
            "type": "string"
          },
          {
            "description": "Opaque page token identifying which page to request. An empty token\nidentifies the first page.",
            "in": "query",
            "name": "page.token",
            "type": "string"
          },
          {
            "description": "When true, the query will include data from long-term storage.",
            "in": "query",
            "name": "include_long_term_storage",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1QueryLogsRangeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      }
    },
    "/api/v1/data/metrics:metadata/{metric_name}": {
      "get": {
        "description": "Metric Metadata",
        "operationId": "ReadMetricMetadata",
        "parameters": [
          {
            "description": "The name of the metric to retrieve metadata for.",
            "in": "path",
            "name": "metric_name",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1ReadMetricMetadataResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      }
    },
    "/api/v1/data/panel_annotations": {
      "get": {
        "operationId": "ListPanelAnnotations",
        "parameters": [
          {
            "description": "The type of the annotated resources to return.",
            "enum": [
              "DASHBOARD"
            ],
            "in": "query",
            "name": "type",
            "type": "string"
          },
          {
            "description": "Returns only panel annotations after this timestamp with `starts_at`.",
            "format": "date-time",
            "in": "query",
            "name": "happened_after",
            "type": "string"
          },
          {
            "description": "Returns only panel annotations before this with `starts_at`.\nIf no value is provided, defaults to now.",
            "format": "date-time",
            "in": "query",
            "name": "happened_before",
            "type": "string"
          },
          {
            "collectionFormat": "multi",
            "description": "Returns only annotations on resources with these slugs.\nIf no value is provided, all resources of the provided `type` are returned.",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "target_references",
            "type": "array"
          },
          {
            "description": "Returns only panel annotations with all of these labels.",
            "in": "query",
            "name": "labels[string]",
            "type": "string"
          },
          {
            "description": "Sets the preferred number of items to return per page. If set to `0`, the\nserver will use its default value. Regardless of the value specified, clients\nmust never assume how many items will be returned.",
            "format": "int64",
            "in": "query",
            "name": "page.max_size",
            "type": "integer"
          },
          {
            "description": "An opaque page token that identifies which page the client should request.\nAn empty value indicates the first page.",
            "in": "query",
            "name": "page.token",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1ListPanelAnnotationsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      },
      "post": {
        "operationId": "CreatePanelAnnotation",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/datav1CreatePanelAnnotationRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1PanelAnnotationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      }
    },
    "/api/v1/data/panel_annotations/{id}": {
      "delete": {
        "operationId": "DeletePanelAnnotation",
        "parameters": [
          {
            "description": "Unique identifier of the panel annotation.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1PanelAnnotationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      },
      "put": {
        "operationId": "PutPanelAnnotation",
        "parameters": [
          {
            "description": "Unique identifier of the panel annotation.",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DataV1PutPanelAnnotationBody"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1PanelAnnotationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      }
    },
    "/api/v1/data/traces": {
      "post": {
        "description": "Tracing",
        "operationId": "ListTraces",
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/datav1ListTracesRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/datav1ListTracesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "DataV1"
        ]
      }
    }
  },
  "produces": [
    "application/json"
  ],
  "swagger": "2.0",
  "tags": [
    {
      "name": "DataV1"
    }
  ]
}