{
  "components": {
    "schemas": {
      "DataUnstablePutPanelAnnotationBody": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of user-supplied key:value pairs associated with the event. Max 50 labels\nper event. Key max length, 200 characters. Value max length, 500\ncharacters.",
            "type": "object"
          },
          "starts_at": {
            "description": "The start of the time period being annotated.",
            "format": "date-time",
            "type": "string"
          },
          "target_panels": {
            "description": "Optional list of panels to scope the annotation to.\nAll panels are annotated if no value is provided.",
            "items": {
              "$ref": "#/components/schemas/dataunstablePanelAnnotationTargetPanel"
            },
            "type": "array"
          },
          "title": {
            "description": "A short description explaining the annotation.\nMax length, 100 characters.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GetRangeQueryResponseRangeQueryMetadata": {
        "properties": {
          "limit_enforced": {
            "description": "This field indicates whether the result is truncated by the limit requested.",
            "type": "boolean"
          },
          "page": {
            "allOf": [
              {
                "$ref": "#/components/schemas/dataunstableRangeQueryPageResult"
              }
            ],
            "description": "If set, there are more results to return."
          }
        },
        "type": "object"
      },
      "LabelFilterMatchStrategy": {
        "description": "How closely an alert's labels must correspond to the matchers.\n\n - SUBSET_MATCH: EQUAL matchers require the labels to contain all the given labels, but\nthe alert may carry more. NOT_EQUAL excludes an alert when the labels\nmatch any matcher.\n - EXACT_MATCH: EQUAL matchers require exactly the provided labels, no more or less.\nNOT_EQUAL excludes an alert only when every NOT_EQUAL matcher applies.",
        "enum": [
          "SUBSET_MATCH",
          "EXACT_MATCH"
        ],
        "type": "string"
      },
      "LabelMatcherFilterTarget": {
        "description": "The label set a matcher reads. An alert carries the labels of the\nsignal that fired (`SIGNAL`) and the labels of the monitor or SLO\nthat raised it (`MONITOR`); the two are matched independently.",
        "enum": [
          "MONITOR",
          "SIGNAL"
        ],
        "type": "string"
      },
      "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"
      },
      "LogQueryTimeSeriesDataLogQueryTimeSeries": {
        "properties": {
          "aggregation_name": {
            "description": "aggregation_name is by default the name of the aggregation used to calculate\nthe values.\nIn the future we may support aliasing in query grammar.",
            "type": "string"
          },
          "buckets": {
            "items": {
              "$ref": "#/components/schemas/LogQueryTimeSeriesLogQueryTimeSeriesBucket"
            },
            "type": "array"
          },
          "group_by_dimension_values": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "LogQueryTimeSeriesLogQueryTimeSeriesBucket": {
        "properties": {
          "end_time": {
            "description": "The end time of the time range this bucket covers.",
            "format": "date-time",
            "type": "string"
          },
          "float_value": {
            "format": "double",
            "type": "number"
          },
          "start_time": {
            "description": "The start time of the time range this bucket covers.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "NumericFilterComparisonType": {
        "enum": [
          "EQUAL",
          "NOT_EQUAL",
          "GREATER_THAN",
          "GREATER_THAN_OR_EQUAL",
          "LESS_THAN",
          "LESS_THAN_OR_EQUAL"
        ],
        "type": "string"
      },
      "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"
      },
      "commonPromQLMatcher": {
        "properties": {
          "name": {
            "description": "Prometheus label name for the matcher",
            "type": "string"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/commonPromQLMatcherType"
              }
            ],
            "description": "The type of match to be performed"
          },
          "value": {
            "description": "Prometheus label value for the matcher",
            "type": "string"
          }
        },
        "type": "object"
      },
      "commonPromQLMatcherType": {
        "enum": [
          "MatchEqual",
          "MatchRegexp",
          "MatchNotEqual",
          "MatchNotRegexp"
        ],
        "type": "string"
      },
      "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"
      },
      "dataunstableColumnMeta": {
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/dataunstableColumnMetaType"
          }
        },
        "type": "object"
      },
      "dataunstableColumnMetaType": {
        "enum": [
          "BOOLEAN",
          "FLOAT",
          "STRING"
        ],
        "type": "string"
      },
      "dataunstableCreatePanelAnnotationRequest": {
        "properties": {
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of user-supplied key:value pairs associated with the annotation. Max 50 labels\nper annotation. Key max length, 200 characters. Value max length, 500\ncharacters.",
            "type": "object"
          },
          "starts_at": {
            "description": "The start of the time period being annotated.",
            "format": "date-time",
            "type": "string"
          },
          "target_panels": {
            "description": "Optional list of panels to scope the annotation to.\nAll panels are annotated if no value is provided.",
            "items": {
              "$ref": "#/components/schemas/dataunstablePanelAnnotationTargetPanel"
            },
            "type": "array"
          },
          "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/dataunstablePanelAnnotationTargetType"
              }
            ],
            "description": "The type of the resource being annotated."
          }
        },
        "type": "object"
      },
      "dataunstableEvent": {
        "properties": {
          "category": {
            "description": "The category the event belongs to. Must be one of these categories:\n`alerts`, `broadcasts`, `chronosphere`, `deploys`, `feature_flags`,\n`infrastructure`, `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",
            "type": "string"
          },
          "json_payload": {
            "description": "A string representation of the original event JSON. Max length 100,000 characters. Only json_payload or\nraw_json_payload can be set.",
            "type": "string"
          },
          "labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of user-supplied key:value pairs associated with the event. Max 200 labels\nper event. Key max length, 200 characters. Value max length, 5,000\ncharacters.",
            "type": "object"
          },
          "raw_json_payload": {
            "description": "The JSON payload if the original event was in JSON format. Formatted as JSON. Max length,\n100,000 characters. Input Only. Only json_payload or raw_json_payload may be set.",
            "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 an email subject.\nMax length, 100 characters.",
            "type": "string"
          },
          "type": {
            "description": "The event type, used to group and differentiate events within a `category`\nor `source`.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "dataunstableGetRangeQueryResponse": {
        "properties": {
          "grid_data": {
            "$ref": "#/components/schemas/dataunstableLogQueryGridData"
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GetRangeQueryResponseRangeQueryMetadata"
              }
            ],
            "description": "The metadata of the query."
          },
          "time_series_data": {
            "$ref": "#/components/schemas/dataunstableLogQueryTimeSeriesData"
          }
        },
        "type": "object"
      },
      "dataunstableListEventsResponse": {
        "properties": {
          "events": {
            "items": {
              "$ref": "#/components/schemas/dataunstableEvent"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/configv1PageResult"
          }
        },
        "type": "object"
      },
      "dataunstableListPanelAnnotationsResponse": {
        "properties": {
          "page": {
            "$ref": "#/components/schemas/configv1PageResult"
          },
          "panel_annotations": {
            "items": {
              "$ref": "#/components/schemas/dataunstablePanelAnnotationResponse"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dataunstableLogQueryGridData": {
        "properties": {
          "columns": {
            "items": {
              "$ref": "#/components/schemas/dataunstableColumnMeta"
            },
            "type": "array"
          },
          "group_by_dimension_names": {
            "description": "Group-by dimension column names in query order. Each name matches columns[].name.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rows": {
            "items": {
              "$ref": "#/components/schemas/dataunstableRow"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dataunstableLogQueryTimeSeriesData": {
        "properties": {
          "group_by_dimension_names": {
            "description": "The names of the dimensions by which the results are grouped by.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/LogQueryTimeSeriesDataLogQueryTimeSeries"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dataunstablePanelAnnotationResponse": {
        "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. Max 50 labels\nper annotation. Key max length, 200 characters. Value max length, 500\ncharacters.",
            "type": "object"
          },
          "starts_at": {
            "description": "The start of the time period being annotated.",
            "format": "date-time",
            "type": "string"
          },
          "target_panels": {
            "description": "Optional list of panels to scope the annotation to.\nAll panels are annotated if no value is provided.",
            "items": {
              "$ref": "#/components/schemas/dataunstablePanelAnnotationTargetPanel"
            },
            "type": "array"
          },
          "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/dataunstablePanelAnnotationTargetType"
              }
            ],
            "description": "The type of the resource being annotated."
          }
        },
        "type": "object"
      },
      "dataunstablePanelAnnotationTargetPanel": {
        "properties": {
          "panel_id": {
            "description": "The identifier for the panel.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "dataunstablePanelAnnotationTargetType": {
        "enum": [
          "DASHBOARD"
        ],
        "type": "string"
      },
      "dataunstableRangeQueryPageResult": {
        "properties": {
          "next_token": {
            "description": "Opaque page token which identifies the next page of items which the\nclient should request. An empty next_token indicates that there are no\nmore items to return.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "dataunstableRow": {
        "properties": {
          "values": {
            "items": {
              "$ref": "#/components/schemas/dataunstableValue"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "dataunstableValue": {
        "properties": {
          "bool_value": {
            "type": "boolean"
          },
          "float_value": {
            "format": "double",
            "type": "number"
          },
          "string_value": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "datav1Alert": {
        "description": "A single alert instance: one signal crossing one monitor or SLO threshold,\nfrom the moment it triggered until it resolved.",
        "properties": {
          "alert_id": {
            "description": "Unique identifier for the alert.",
            "type": "string"
          },
          "alert_title": {
            "description": "The title of the alert, as rendered when it fired.",
            "type": "string"
          },
          "collection_slug": {
            "description": "The slug of the collection the monitor or SLO belongs to.",
            "type": "string"
          },
          "external_connections": {
            "description": "The (external connection, destination identity) pairs a notification was\nattempted through for this alert, including sends that failed. Empty for an\nalert that was never notified.",
            "items": {
              "$ref": "#/components/schemas/datav1ExternalConnection"
            },
            "type": "array"
          },
          "firing_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1FiringStatus"
              }
            ],
            "description": "Whether the alert is still firing or has resolved."
          },
          "monitor_labels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the monitor or SLO that raised the alert.",
            "type": "object"
          },
          "monitor_name": {
            "description": "The name of the monitor that raised the alert. Empty for an SLO alert.",
            "type": "string"
          },
          "monitor_slug": {
            "description": "The slug of the monitor that raised the alert. Empty for an SLO alert.",
            "type": "string"
          },
          "mute_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1MuteStatus"
              }
            ],
            "description": "Whether notifications for the alert are currently muted. A resolved alert\nis always reported as `NOT_MUTED`."
          },
          "notification_policy_slug": {
            "description": "The slug of the notification policy the alert was routed through.",
            "type": "string"
          },
          "notifier_slugs": {
            "description": "The notifiers a notification was attempted against for this alert,\nincluding sends that failed. Empty for an alert that was never notified.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "resolved_at": {
            "description": "When the alert stopped firing. Unset while the alert is still firing.",
            "format": "date-time",
            "type": "string"
          },
          "severity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1Severity"
              }
            ],
            "description": "The severity the alert fired at."
          },
          "signal": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The labels of the signal that fired.",
            "type": "object"
          },
          "slo_name": {
            "description": "The name of the SLO that raised the alert. Empty for a monitor alert.",
            "type": "string"
          },
          "slo_slug": {
            "description": "The slug of the SLO that raised the alert. Empty for a monitor alert.",
            "type": "string"
          },
          "triggered_at": {
            "description": "When the alert started firing.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "datav1AlertsFilter": {
        "description": "The set of alerts to return. Filters of different kinds are combined with\nAND: an alert is returned only if it satisfies every filter that is set.\n\nThe search filters (`monitor_slugs`, `monitor_name_contains`, `slo_slugs`,\n`slo_name_contains` and `alert_title_contains`) are the one exception.\nThey are OR'ed with each other into a single search clause, so an alert\nmatches the search as soon as it matches any one of them: setting\n`monitor_slugs` and `alert_title_contains` together returns the alerts\nmatching either, not only the alerts matching both. That clause is then\nAND'ed with every filter outside the group, so `severity` combined with a\nsearch term still requires both to hold.\n\n`notifier_slugs` and `external_connections` form a second such group: they\nare OR'ed with each other into one delivery clause, which is then AND'ed with\neverything else.",
        "properties": {
          "active_time_range": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1TimeRange"
              }
            ],
            "description": "Return only alerts that were firing at some point during this window,\nwhether or not they were triggered inside it. Defaults and maximum span\nare the same as for `trigger_time_range`.\n\nMutually exclusive with `trigger_time_range`."
          },
          "alert_ids": {
            "description": "Return only the alerts with these IDs.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "alert_title_contains": {
            "description": "Match alerts whose title contains this string, case-insensitively. Only\nthe title is matched, never the name or slug of the monitor or SLO that\nraised the alert. This is one of the OR'ed search filters, so setting it\nwidens the result set rather than narrowing it: an alert matches the\nsearch as soon as it matches any one of those filters. See\n`AlertsFilter` for the full list.",
            "type": "string"
          },
          "external_connections": {
            "description": "Return only alerts a notification was attempted through one of these\n(external connection, destination identity) pairs for. Failed sends match\ntoo, exactly as for `notifier_slugs`, and setting both OR's the two lists\ntogether.\n\nThe pair is matched whole. `destination_identity` is compared exactly, so\nleaving it empty matches only destinations stored without one (PagerDuty,\nOpsGenie, webhook) rather than every identity on the connection.",
            "items": {
              "$ref": "#/components/schemas/datav1ExternalConnection"
            },
            "type": "array"
          },
          "firing_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1FiringStatus"
              }
            ],
            "description": "Return only alerts that are currently firing, or only alerts that have\nresolved. Unset returns both."
          },
          "label_filters": {
            "description": "Each LabelFilter is one AND clause; the clauses are OR'ed together. An\nalert is returned if it satisfies at least one of them.",
            "items": {
              "$ref": "#/components/schemas/datav1LabelFilter"
            },
            "type": "array"
          },
          "monitor_name_contains": {
            "description": "Match alerts raised by monitors whose name or slug contains this string,\ncase-insensitively. This is one of the OR'ed search filters, so setting\nit widens the result set rather than narrowing it: an alert matches the\nsearch as soon as it matches any one of those filters. See\n`AlertsFilter` for the full list.",
            "type": "string"
          },
          "monitor_slugs": {
            "description": "Match alerts raised by monitors with these slugs. This is one of the\nOR'ed search filters, so setting it widens the result set rather than\nnarrowing it: an alert matches the search as soon as it matches any one\nof those filters. See `AlertsFilter` for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "mute_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1MuteStatus"
              }
            ],
            "description": "Return only alerts whose notifications are muted, or only alerts whose\nnotifications are not muted. Unset returns both."
          },
          "notifier_slugs": {
            "description": "Return only alerts a notification was attempted against one of these\nnotifiers for. A send that failed still matches: the question this answers\nis \"which alerts tried to reach me here\", not \"which reached me\".\n\nThis is OR'ed with `external_connections` rather than AND'ed with it:\nsetting both returns alerts matching either list, because notifiers and\nexternal connections are two spellings of the same idea. The combined\ndelivery filter is then AND'ed with every other filter.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "severity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1Severity"
              }
            ],
            "description": "Return only alerts of this severity. Unset returns all severities."
          },
          "slo_name_contains": {
            "description": "Match alerts raised by SLOs whose name or slug contains this string,\ncase-insensitively. This is one of the OR'ed search filters, so setting\nit widens the result set rather than narrowing it: an alert matches the\nsearch as soon as it matches any one of those filters. See\n`AlertsFilter` for the full list.",
            "type": "string"
          },
          "slo_slugs": {
            "description": "Match alerts raised by SLOs with these slugs. This is one of the OR'ed\nsearch filters, so setting it widens the result set rather than\nnarrowing it: an alert matches the search as soon as it matches any one\nof those filters. See `AlertsFilter` for the full list.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "source_collection_slugs": {
            "description": "Return only alerts whose monitor or SLO belongs to one of these\ncollections.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "source_team_slugs": {
            "description": "Return only alerts owned by one of these teams. The owning team is\nrecorded when the alert triggers, so re-assigning a collection to a\ndifferent team does not change the team on alerts that already fired.\nAlerts that triggered before this API recorded an owning team match no\nteam.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "source_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1SourceType"
              }
            ],
            "description": "Return only alerts raised by this kind of source. Unset returns both."
          },
          "trigger_time_range": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1TimeRange"
              }
            ],
            "description": "Return only alerts that were triggered inside this window. The window is\nalways closed: if `end` is not set it defaults to now, and if `start` is\nnot set it defaults to one hour before `end`. Leaving the whole field\nunset is the same as setting it with neither bound, so the last hour is\nthe window unless `active_time_range` is set instead. Requests whose\nwindow is wider than the maximum supported span are rejected rather than\ntruncated, so a response is never a silently partial answer.\n\nMutually exclusive with `active_time_range`."
          }
        },
        "type": "object"
      },
      "datav1ExternalConnection": {
        "description": "An (external connection, destination identity) pair a notification was sent\nthrough. Used both to filter alerts and to report what an alert was notified\nthrough.",
        "properties": {
          "destination_identity": {
            "description": "Identity within the connection, such as a Slack channel or an email\naddress. Empty for connection types that have none (PagerDuty, OpsGenie,\nwebhook).",
            "type": "string"
          },
          "slug": {
            "description": "Slug of the external connection. Required when used as a filter.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "datav1FiringStatus": {
        "description": "Whether an alert is currently firing or has resolved.",
        "enum": [
          "RESOLVED",
          "FIRING"
        ],
        "type": "string"
      },
      "datav1LabelFilter": {
        "description": "A set of label matchers evaluated together as a single AND clause.",
        "properties": {
          "label_matchers": {
            "description": "The matchers that make up this clause. An alert must satisfy all of\nthem. A filter with no matchers is ignored rather than matching\neverything.",
            "items": {
              "$ref": "#/components/schemas/datav1LabelFilterLabelMatcher"
            },
            "type": "array"
          },
          "match_strategy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LabelFilterMatchStrategy"
              }
            ],
            "description": "How closely an alert's labels must correspond to `label_matchers`.\nDefaults to `SUBSET_MATCH` when unset, whether or not `label_matchers`\nis populated. Applied per target: a filter that only names monitor\nlabels places no constraint on the alert's signal labels under either\nstrategy."
          }
        },
        "type": "object"
      },
      "datav1LabelFilterLabelMatcher": {
        "description": "One matcher, and which of the alert's two label sets it applies to.",
        "properties": {
          "filter_target": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LabelMatcherFilterTarget"
              }
            ],
            "description": "Which of the alert's label sets this matcher applies to. Required."
          },
          "matcher": {
            "allOf": [
              {
                "$ref": "#/components/schemas/commonPromQLMatcher"
              }
            ],
            "description": "The label name, value and comparison to apply."
          }
        },
        "type": "object"
      },
      "datav1ListAlertsRequest": {
        "properties": {
          "filter": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1AlertsFilter"
              }
            ],
            "description": "Which alerts to return. An omitted filter, an empty filter and a filter\nthat sets neither `trigger_time_range` nor `active_time_range` are all\ntreated alike: the default one hour trigger-time window applies. Every\nother unset field places no constraint, so an empty filter returns every\nalert in that window."
          },
          "page": {
            "$ref": "#/components/schemas/configv1PageParams"
          },
          "sort_order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/datav1ListAlertsRequestSortOrder"
              }
            ],
            "description": "The order alerts are returned in. Defaults to `TRIGGERED_DESC`."
          }
        },
        "type": "object"
      },
      "datav1ListAlertsRequestSortOrder": {
        "description": "The order alerts are returned in, by the time they triggered.",
        "enum": [
          "TRIGGERED_DESC",
          "TRIGGERED_ASC"
        ],
        "type": "string"
      },
      "datav1ListAlertsResponse": {
        "properties": {
          "alerts": {
            "description": "The alerts on this page, in the requested sort order.",
            "items": {
              "$ref": "#/components/schemas/datav1Alert"
            },
            "type": "array"
          },
          "page": {
            "$ref": "#/components/schemas/configv1PageResult"
          },
          "total_count": {
            "description": "The number of alerts matching the filter across all pages.",
            "format": "int64",
            "type": "string"
          }
        },
        "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"
      },
      "datav1MuteStatus": {
        "description": "Whether notifications for an alert are currently muted.",
        "enum": [
          "MUTED",
          "NOT_MUTED"
        ],
        "type": "string"
      },
      "datav1Severity": {
        "description": "The severity an alert fired at.",
        "enum": [
          "WARN",
          "CRITICAL"
        ],
        "type": "string"
      },
      "datav1SourceType": {
        "description": "Whether an alert was raised by a monitor or by an SLO.",
        "enum": [
          "MONITOR",
          "SLO"
        ],
        "type": "string"
      },
      "datav1TimeRange": {
        "description": "A closed time interval. Both bounds are required unless the field\ndocuments a default for the one that is missing.",
        "properties": {
          "end": {
            "description": "The inclusive end of the interval.",
            "format": "date-time",
            "type": "string"
          },
          "start": {
            "description": "The inclusive start of the interval.",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object"
      },
      "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"
      },
      "resourcev1Resource": {
        "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": "#/components/schemas/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": "#/components/schemas/v1EntityRef"
            },
            "type": "array"
          }
        },
        "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": "string"
          }
        },
        "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": "#/components/schemas/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": "#/components/schemas/v1KeyValue"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ResourceSpans": {
        "description": "A collection of ScopeSpans from a Resource.",
        "properties": {
          "resource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/resourcev1Resource"
              }
            ],
            "description": "The resource for the spans in this message.\nIf this field is not set then no resource info is known."
          },
          "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"
          },
          "scope_spans": {
            "description": "A list of ScopeSpans that originate from a resource.",
            "items": {
              "$ref": "#/components/schemas/v1ScopeSpans"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "v1ScopeSpans": {
        "description": "A collection of Spans produced by an InstrumentationScope.",
        "properties": {
          "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"
          },
          "scope": {
            "allOf": [
              {
                "$ref": "#/components/schemas/v1InstrumentationScope"
              }
            ],
            "description": "The instrumentation scope information for the spans in this message.\nSemantically when InstrumentationScope isn't set, it is equivalent with\nan empty instrumentation scope name (unknown)."
          },
          "spans": {
            "description": "A list of Spans that originate from an instrumentation scope.",
            "items": {
              "$ref": "#/components/schemas/v1Span"
            },
            "type": "array"
          }
        },
        "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": {
          "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": "#/components/schemas/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"
          },
          "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"
          },
          "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"
          },
          "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"
          },
          "events": {
            "description": "events is a collection of Event items.",
            "items": {
              "$ref": "#/components/schemas/v1SpanEvent"
            },
            "type": "array"
          },
          "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"
          },
          "kind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SpanSpanKind"
              }
            ],
            "description": "Distinguishes between spans generated in a particular context. For example,\ntwo spans with the same name may be distinguished using `CLIENT` (caller)\nand `SERVER` (callee) to identify queueing latency associated with the span."
          },
          "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": "#/components/schemas/SpanLink"
            },
            "type": "array"
          },
          "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"
          },
          "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"
          },
          "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"
          },
          "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"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/tracev1Status"
              }
            ],
            "description": "An optional final status for this span. Semantically when Status isn't set, it means\nspan's status code is unset, i.e. assume STATUS_CODE_UNSET (code = 0)."
          },
          "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"
          },
          "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"
          }
        },
        "type": "object"
      },
      "v1SpanEvent": {
        "description": "Event is a time-stamped annotation of the span, consisting of user-supplied\ntext description and key-value pairs.",
        "properties": {
          "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": "#/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"
          },
          "name": {
            "description": "name of the event.\nThis field is semantically required to be set to non-empty string.",
            "type": "string"
          },
          "time_unix_nano": {
            "description": "time_unix_nano is the time the event occurred.",
            "format": "uint64",
            "type": "string"
          }
        },
        "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": "#/components/schemas/v1ResourceSpans"
            },
            "type": "array"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "Chronosphere API token",
        "in": "header",
        "name": "API-Token",
        "type": "apiKey"
      }
    }
  },
  "info": {
    "description": "\n\u003cb\u003eWARNING: This API is unstable and is meant for experimentation only. Do not\nuse this API in production. The endpoints and schemas referenced in this\ndocumentation will be changed or removed without notice and without any\nbackwards compatibility guarantee. Note that even though this API is unstable,\nit is still connected to production data, so use with caution.\u003c/b\u003e",
    "title": "Data Unstable API",
    "version": "v1"
  },
  "openapi": "3.0.3",
  "paths": {
    "/api/unstable/data/alerts": {
      "post": {
        "description": "Lists the alerts that fired for this tenant, most recently triggered\nfirst. The trigger time window is always closed and defaults to the last\nhour.",
        "operationId": "ListAlerts",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/datav1ListAlertsRequest"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/datav1ListAlertsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      }
    },
    "/api/unstable/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.",
            "in": "query",
            "name": "happened_after",
            "schema": {
              "format": "date-time",
              "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.",
            "in": "query",
            "name": "happened_before",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "A query string specifying the query.",
            "in": "query",
            "name": "query",
            "schema": {
              "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.",
            "in": "query",
            "name": "page.max_size",
            "schema": {
              "format": "int64",
              "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",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dataunstableListEventsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      }
    },
    "/api/unstable/data/logs:get-range-query": {
      "get": {
        "description": "GetRangeQuery returns a range query.",
        "operationId": "GetRangeQuery",
        "parameters": [
          {
            "description": "Specifies the query to run to filter logs. Query defined using logql.",
            "in": "query",
            "name": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only log messages with a timestamp after this time will be returned.",
            "in": "query",
            "name": "timestamp_filter.happened_after",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Only log messages with a timestamp before this time will be returned.",
            "in": "query",
            "name": "timestamp_filter.happened_before",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Opaque page token identifying which page to request. An empty token\nidentifies the first page.",
            "in": "query",
            "name": "page.token",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "When true, the query will include data from long-term storage.",
            "in": "query",
            "name": "include_long_term_storage",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dataunstableGetRangeQueryResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      }
    },
    "/api/unstable/data/panel_annotations": {
      "get": {
        "operationId": "ListPanelAnnotations",
        "parameters": [
          {
            "description": "The type of the annotated resources to return.",
            "in": "query",
            "name": "type",
            "schema": {
              "enum": [
                "DASHBOARD"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only panel annotations with `starts_at` after this will be returned.",
            "in": "query",
            "name": "happened_after",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Only panel annotations with `starts_at` before this will be returned.\nIf no value is provided, defaults to now.",
            "in": "query",
            "name": "happened_before",
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Only annotations on resources with these slugs will be returned.\nIf no value is provided, all resources of the provided `type` are returned.",
            "in": "query",
            "name": "target_references",
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Only panel annotations with all of these labels will be returned.",
            "in": "query",
            "name": "labels[string]",
            "schema": {
              "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.",
            "in": "query",
            "name": "page.max_size",
            "schema": {
              "format": "int64",
              "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",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dataunstableListPanelAnnotationsResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      },
      "post": {
        "operationId": "CreatePanelAnnotation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/dataunstableCreatePanelAnnotationRequest"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dataunstablePanelAnnotationResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      }
    },
    "/api/unstable/data/panel_annotations/{id}": {
      "delete": {
        "operationId": "DeletePanelAnnotation",
        "parameters": [
          {
            "description": "Unique identifier of the panel annotation.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dataunstablePanelAnnotationResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      },
      "put": {
        "operationId": "PutPanelAnnotation",
        "parameters": [
          {
            "description": "Unique identifier of the panel annotation.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataUnstablePutPanelAnnotationBody"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/dataunstablePanelAnnotationResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      }
    },
    "/api/unstable/data/traces": {
      "post": {
        "description": "Tracing",
        "operationId": "ListTraces",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/datav1ListTracesRequest"
              }
            }
          },
          "required": true,
          "x-originalParamName": "body"
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/datav1ListTracesResponse"
                }
              }
            },
            "description": "A successful response."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/googlerpcStatus"
                }
              }
            },
            "description": "An unexpected error response."
          }
        },
        "tags": [
          "DataUnstable"
        ]
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://{tenant}.chronosphere.io",
      "variables": {
        "tenant": {
          "default": "tenant",
          "description": "tenant ID assigned by the service provider"
        }
      }
    }
  ],
  "tags": [
    {
      "name": "DataUnstable"
    }
  ]
}