Chronosphere Data V1 API

The Data API from Chronosphere - 9 operations for querying and writing telemetry: change events, log range queries, trace listing, metric metadata and dashboard panel annotations.

Operations 9

GET /api/v1/data/events #
POST /api/v1/data/events #
GET /api/v1/data/logs:range #
GET /api/v1/data/metrics:metadata/{metric_name} #
GET /api/v1/data/panel_annotations #
POST /api/v1/data/panel_annotations #
DELETE /api/v1/data/panel_annotations/{id} #
PUT /api/v1/data/panel_annotations/{id} #
POST /api/v1/data/traces #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/chronosphere-data-v1-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

chronosphere-data-v1-api-openapi.json Raw ↑
{
  "components": {
    "schemas": {
      "DataV1PutPanelAnnotationBody": {
        "properties": {
          "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"
          },
          "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"
          }
        },
        "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"
          },
          "numeric_value": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagFilterNumericFilter"
              }
            ],
            "description": "Matcher used to evaluate the span tag value as a numeric value (if the\ntag with the given key is found and the value type is numerical)."
          },
          "value": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TagFilterStringFilter"
              }
            ],
            "description": "Matcher used to evaluate the span tag value (if the tag with the given\nkey is found and the value type is a string)."
          }
        },
        "type": "object"
      },
      "NumericFilterComparisonType": {
        "enum": [
          "EQUAL",
          "NOT_EQUAL",
          "GREATER_THAN",
          "GREATER_THAN_OR_EQUAL",
          "LESS_THAN",
          "LESS_THAN_OR_EQUAL"
        ],
        "type": "string"
      },
      "QueryLogsRangeResponseColumnMeta": {
        "properties": {
          "name": {
            "description": "The column names to include in the tabular results.",
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/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": "#/components/schemas/QueryLogsRangeResponseColumnMeta"
            },
            "type": "array"
          },
          "rows": {
            "description": "Defines the structure and data types of rows in tabular log results.",
            "items": {
              "$ref": "#/components/schemas/QueryLogsRangeResponseRow"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "QueryLogsRangeResponseMetadata": {
        "properties": {
          "limit_enforced": {
            "description": "Indicates whether the result is truncated by the request limit.",
            "type": "boolean"
          },
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QueryLogsRangeResponseMetadataPageResult"
              }
            ],
            "description": "If set, there are more results to return."
          }
        },
        "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": "#/components/schemas/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": {
          "group_by_dimension_names": {
            "description": "Names of the dimensions to group results by.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "series": {
            "description": "Specifies the time series to return from query results.",
            "items": {
              "$ref": "#/components/schemas/TimeSeriesDataTimeSeries"
            },
            "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": {
          "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": "#/components/schemas/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"
          },
          "span_id": {
            "description": "A unique identifier for the linked span. The ID is an 8-byte array.",
            "format": "byte",
            "type": "string"
          },
          "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"
          },
          "trace_state": {
            "description": "The trace_state associated with the link.",
            "type": "string"
          }
        },
        "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": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NumericFilterComparisonType"
              }
            ],
            "description": "The comparison operation to be applied to an input against the given filter value."
          },
          "value": {
            "description": "The filter value used in comparison against match candidates.",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "TagFilterStringFilter": {
        "properties": {
          "in_values": {
            "description": "Values the filter tests against when using IN or NOT_IN match type.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "match": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StringFilterStringFilterMatchType"
              }
            ],
            "description": "If EXACT, compared strings have the exact value of the filter value."
          },
          "value": {
            "description": "The value the filter compares to the target trace or span field.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TimeSeriesBucket": {
        "properties": {
          "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"
          },
          "start_time": {
            "description": "The start time of the time range for this bucket.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TimeSeriesDataTimeSeries": {
        "properties": {
          "aggregation_name": {
            "description": "Name of the aggregation used to calculate the values.",
            "type": "string"
          },
          "buckets": {
            "description": "Defines a time-bounded data point in a time series to store aggregated\nvalues over specific time intervals.",
            "items": {
              "$ref": "#/components/schemas/TimeSeriesBucket"
            },
            "type": "array"
          },
          "group_by_dimension_values": {
            "description": "Values of the dimensions to group results by.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "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": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1Event"
              }
            ],
            "description": "Event to create."
          }
        },
        "type": "object"
      },
      "datav1CreateEventResponse": {
        "type": "object"
      },
      "datav1CreatePanelAnnotationRequest": {
        "properties": {
          "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"
          },
          "starts_at": {
            "description": "The start time of the period being annotated.",
            "format": "date-time",
            "type": "string"
          },
          "target_reference": {
            "description": "The `slug` of the resource being annotated.",
            "type": "string"
          },
          "title": {
            "description": "A short description explaining the annotation.\nMax character length: `100`.",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1PanelAnnotationTargetType"
              }
            ],
            "description": "The type of resource being annotated."
          }
        },
        "type": "object"
      },
      "datav1Event": {
        "properties": {
          "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"
          },
          "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"
          },
          "id": {
            "description": "Unique identifier for the change event.",
            "readOnly": true,
            "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"
          },
          "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"
          },
          "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"
          },
          "type": {
            "description": "The event type, which is used to group and differentiate events within a\n`category` or `source`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "datav1ListEventsResponse": {
        "properties": {
          "events": {
            "items": {
              "$ref": "#/components/schemas/datav1Event"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/configv1PageResult"
          }
        },
        "type": "object"
      },
      "datav1ListPanelAnnotationsResponse": {
        "properties": {
          "page": {
            "$ref": "#/components/schemas/configv1PageResult"
          },
          "panel_annotations": {
            "items": {
              "$ref": "#/components/schemas/datav1PanelAnnotationResponse"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "datav1ListTracesRequest": {
        "properties": {
          "end_time": {
            "description": "End time for the search.",
            "format": "date-time",
            "type": "string"
          },
          "operation": {
            "description": "Operation to filter on. An empty value doesn't apply any operation filter.",
            "type": "string"
          },
          "query_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListTracesRequestQueryType"
              }
            ],
            "description": "Type of query to perform.\nTRACE_IDS: Search for specific trace IDs.\nSERVICE_OPERATION: Search for traces with a specific service and operation, over a specific time frame."
          },
          "service": {
            "description": "Service to filter on. An empty value doesn't apply any service filter.",
            "type": "string"
          },
          "start_time": {
            "description": "Start time for the search.",
            "format": "date-time",
            "type": "string"
          },
          "tag_filters": {
            "description": "Tag filter to apply. An empty value doesn't apply any tag filter.",
            "items": {
              "$ref": "#/components/schemas/ListTracesRequestTagFilter"
            },
            "type": "array"
          },
          "trace_ids": {
            "description": "Trace IDs to search for.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "datav1ListTracesResponse": {
        "properties": {
          "traces": {
            "items": {
              "$ref": "#/components/schemas/v1TracesData"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "datav1MetricMetadata": {
        "description": "MetricMetadata contains metadata information about a metric.",
        "properties": {
          "description": {
            "description": "Human-readable description of what the metric measures.",
            "type": "string"
          },
          "name": {
            "description": "The name of the metric.",
            "type": "string"
          },
          "source": {
            "$ref": "#/components/schemas/datav1Source"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1MetricType"
              }
            ],
            "description": "The type of the metric (counter, gauge, etc.)."
          }
        },
        "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": {
          "created_by": {
            "description": "Display name of the creator of this annotation.",
            "type": "string"
          },
          "id": {
            "description": "Unique identifier of the panel annotation.",
            "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"
          },
          "starts_at": {
            "description": "The start of the time period being annotated.",
            "format": "date-time",
            "type": "string"
          },
          "target_reference": {
            "description": "The `slug` of the resource being annotated.",
            "type": "string"
          },
          "title": {
            "description": "A short description explaining the annotation.\nMax length, 100 characters.",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1PanelAnnotationTargetType"
              }
            ],
            "description": "The type of resource being annotated."
          }
        },
        "type": "object"
      },
      "datav1PanelAnnotationTargetType": {
        "enum": [
          "DASHBOARD"
        ],
        "type": "string"
      },
      "datav1QueryLogsRangeResponse": {
        "properties": {
          "grid_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QueryLogsRangeResponseGridData"
              }
            ],
            "description": "Returns log query results as in tabular format."
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QueryLogsRangeResponseMetadata"
              }
            ],
            "description": "The metadata of the query."
          },
          "time_series_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/QueryLogsRangeResponseTimeSeriesData"
              }
            ],
            "description": "Returns log query results as a time series chart. You can only return\n`group_by_dimension_names` or `series`, depending on the type of query a time\nseries query is defined by using a `make-series` aggregation."
          }
        },
        "type": "object"
      },
      "datav1ReadMetricMetadataResponse": {
        "description": "ReadMetricMetadataResponse contains the metadata for the requested metric.",
        "properties": {
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1MetricMetadata"
              }
            ],
            "description": "The metadata for the requested metric."
          }
        },
        "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"
      },
      "googlerpcStatus": {
        "properties": {
          "code": {
            "format": "int32",
            "type": "integer"
          },
          "details": {
            "items": {
              "$ref": "#/components/schemas/protobufAny"
            },
            "type": "array"
          },
          "message": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "protobufAny": {
        "additionalProperties": {},
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "tracev1Status": {
        "description": "The Status type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs.",
        "properties": {
          "code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StatusStatusCode"
              }
            ],
            "description": "The status code."
          },
          "message": {
            "description": "A developer-facing human readable error message.",
            "type": "string"
          }
        },
        "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": {
          "array_value": {
            "$ref": "#/components/schemas/v1ArrayValue"
          },
          "bool_value": {
            "type": "boolean"
          },
          "bytes_value": {
            "format": "byte",
            "type": "string"
          },
          "double_value": {
            "format": "double",
            "type": "number"
          },
          "int_value": {
            "format": "int64",
            "type": "string"
          },
          "kvlist_value": {
            "$ref": "#/components/schemas/v1KeyValueList"
          },
          "string_value": {
            "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": "#/components/schemas/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": {
          "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"
          },
          "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"
          },
          "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"
          }
        },
        "type": "object"
      },
      "v1InstrumentationScope": {
        "description": "InstrumentationScope is a message representing the instrumentation scope information\nsuch as the fully qualified name and version.",
        "properties": {
          "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": "#/components/schemas/v1KeyValue"
            },
            "type": "array"
          },
          "dropped_attributes_count": {
            "format": "int64",
            "type": "integer"
          },
          "name": {
            "description": "An empty instrumentation scope name means the name is unknown.",
            "type": "string"
          },
          "version": {
            "type":

# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/chronosphere/refs/heads/main/openapi/chronosphere-data-v1-api-openapi.json