{ "type": "object", "required": [ "targets", "type" ], "properties": { "targets": { "type": "array", "items": { "type": "object", "oneOf": [ { "type": "object", "required": [ "expression", "type", "refId" ], "properties": { "datasource": { "description": "The datasource", "type": "object", "required": [ "type" ], "properties": { "apiVersion": { "description": "The apiserver version", "type": "string" }, "type": { "description": "The datasource plugin type", "type": "string", "pattern": "^__expr__$" }, "uid": { "description": "Datasource UID (NOTE: name in k8s)", "type": "string" } }, "additionalProperties": false }, "expression": { "description": "General math expression", "type": "string", "minLength": 1, "examples": [ "$A + 1", "$A/$B" ] }, "hide": { "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)", "type": "boolean" }, "queryType": { "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.", "type": "string" }, "refId": { "description": "RefID is the unique identifier of the query, set by the frontend call.", "type": "string" }, "resultAssertions": { "description": "Optionally define expected query result behavior", "type": "object", "required": [ "typeVersion" ], "properties": { "maxFrames": { "description": "Maximum frame count", "type": "integer" }, "type": { "description": "Type asserts that the frame matches a known type structure.\n\n\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` ", "type": "string", "enum": [ "", "timeseries-wide", "timeseries-long", "timeseries-many", "timeseries-multi", "directory-listing", "table", "numeric-wide", "numeric-multi", "numeric-long", "log-lines" ], "x-enum-description": {} }, "typeVersion": { "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/.", "type": "array", "maxItems": 2, "minItems": 2, "items": { "type": "integer" } } }, "additionalProperties": false }, "timeRange": { "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly", "type": "object", "required": [ "from", "to" ], "properties": { "from": { "description": "From is the start time of the query.", "type": "string", "default": "now-6h", "examples": [ "now-1h" ] }, "to": { "description": "To is the end time of the query.", "type": "string", "default": "now", "examples": [ "now" ] } }, "additionalProperties": false }, "type": { "type": "string", "pattern": "^math$" } }, "additionalProperties": false, "$schema": "https://json-schema.org/draft-04/schema" }, { "type": "object", "required": [ "expression", "reducer", "type", "refId" ], "properties": { "datasource": { "description": "The datasource", "type": "object", "required": [ "type" ], "properties": { "apiVersion": { "description": "The apiserver version", "type": "string" }, "type": { "description": "The datasource plugin type", "type": "string", "pattern": "^__expr__$" }, "uid": { "description": "Datasource UID (NOTE: name in k8s)", "type": "string" } }, "additionalProperties": false }, "expression": { "description": "Reference to single query result", "type": "string", "minLength": 1, "examples": [ "$A" ] }, "hide": { "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)", "type": "boolean" }, "queryType": { "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.", "type": "string" }, "reducer": { "description": "The reducer\n\n\nPossible enum values:\n - `\"sum\"` \n - `\"mean\"` \n - `\"min\"` \n - `\"max\"` \n - `\"count\"` \n - `\"last\"` \n - `\"median\"` ", "type": "string", "enum": [ "sum", "mean", "min", "max", "count", "last", "median" ], "x-enum-description": {} }, "refId": { "description": "RefID is the unique identifier of the query, set by the frontend call.", "type": "string" }, "resultAssertions": { "description": "Optionally define expected query result behavior", "type": "object", "required": [ "typeVersion" ], "properties": { "maxFrames": { "description": "Maximum frame count", "type": "integer" }, "type": { "description": "Type asserts that the frame matches a known type structure.\n\n\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` ", "type": "string", "enum": [ "", "timeseries-wide", "timeseries-long", "timeseries-many", "timeseries-multi", "directory-listing", "table", "numeric-wide", "numeric-multi", "numeric-long", "log-lines" ], "x-enum-description": {} }, "typeVersion": { "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/.", "type": "array", "maxItems": 2, "minItems": 2, "items": { "type": "integer" } } }, "additionalProperties": false }, "settings": { "description": "Reducer Options", "type": "object", "required": [ "mode" ], "properties": { "mode": { "description": "Non-number reduce behavior\n\n\nPossible enum values:\n - `\"dropNN\"` Drop non-numbers\n - `\"replaceNN\"` Replace non-numbers", "type": "string", "enum": [ "dropNN", "replaceNN" ], "x-enum-description": { "dropNN": "Drop non-numbers", "replaceNN": "Replace non-numbers" } }, "replaceWithValue": { "description": "Only valid when mode is replace", "type": "number" } }, "additionalProperties": false }, "timeRange": { "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly", "type": "object", "required": [ "from", "to" ], "properties": { "from": { "description": "From is the start time of the query.", "type": "string", "default": "now-6h", "examples": [ "now-1h" ] }, "to": { "description": "To is the end time of the query.", "type": "string", "default": "now", "examples": [ "now" ] } }, "additionalProperties": false }, "type": { "type": "string", "pattern": "^reduce$" } }, "additionalProperties": false, "$schema": "https://json-schema.org/draft-04/schema" }, { "description": "QueryType = resample", "type": "object", "required": [ "expression", "window", "downsampler", "upsampler", "type", "refId" ], "properties": { "datasource": { "description": "The datasource", "type": "object", "required": [ "type" ], "properties": { "apiVersion": { "description": "The apiserver version", "type": "string" }, "type": { "description": "The datasource plugin type", "type": "string", "pattern": "^__expr__$" }, "uid": { "description": "Datasource UID (NOTE: name in k8s)", "type": "string" } }, "additionalProperties": false }, "downsampler": { "description": "The downsample function\n\n\nPossible enum values:\n - `\"sum\"` \n - `\"mean\"` \n - `\"min\"` \n - `\"max\"` \n - `\"count\"` \n - `\"last\"` \n - `\"median\"` ", "type": "string", "enum": [ "sum", "mean", "min", "max", "count", "last", "median" ], "x-enum-description": {} }, "expression": { "description": "The math expression", "type": "string", "minLength": 1, "examples": [ "$A + 1", "$A" ] }, "hide": { "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)", "type": "boolean" }, "queryType": { "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.", "type": "string" }, "refId": { "description": "RefID is the unique identifier of the query, set by the frontend call.", "type": "string" }, "resultAssertions": { "description": "Optionally define expected query result behavior", "type": "object", "required": [ "typeVersion" ], "properties": { "maxFrames": { "description": "Maximum frame count", "type": "integer" }, "type": { "description": "Type asserts that the frame matches a known type structure.\n\n\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` ", "type": "string", "enum": [ "", "timeseries-wide", "timeseries-long", "timeseries-many", "timeseries-multi", "directory-listing", "table", "numeric-wide", "numeric-multi", "numeric-long", "log-lines" ], "x-enum-description": {} }, "typeVersion": { "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/.", "type": "array", "maxItems": 2, "minItems": 2, "items": { "type": "integer" } } }, "additionalProperties": false }, "timeRange": { "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly", "type": "object", "required": [ "from", "to" ], "properties": { "from": { "description": "From is the start time of the query.", "type": "string", "default": "now-6h", "examples": [ "now-1h" ] }, "to": { "description": "To is the end time of the query.", "type": "string", "default": "now", "examples": [ "now" ] } }, "additionalProperties": false }, "type": { "type": "string", "pattern": "^resample$" }, "upsampler": { "description": "The upsample function\n\n\nPossible enum values:\n - `\"pad\"` Use the last seen value\n - `\"backfilling\"` backfill\n - `\"fillna\"` Do not fill values (nill)", "type": "string", "enum": [ "pad", "backfilling", "fillna" ], "x-enum-description": { "backfilling": "backfill", "fillna": "Do not fill values (nill)", "pad": "Use the last seen value" } }, "window": { "description": "The time duration", "type": "string", "minLength": 1, "examples": [ "1d", "10m" ] } }, "additionalProperties": false, "$schema": "https://json-schema.org/draft-04/schema" }, { "type": "object", "required": [ "conditions", "type", "refId" ], "properties": { "conditions": { "type": "array", "items": { "description": "ConditionJSON is the JSON model for a single condition in ConditionsCmd.", "type": "object", "required": [ "evaluator", "operator", "query", "reducer" ], "properties": { "evaluator": { "type": "object", "required": [ "params", "type" ], "properties": { "params": { "type": "array", "items": { "type": "number" } }, "type": { "description": "e.g. \"gt\"", "type": "string" } }, "additionalProperties": false }, "operator": { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "and", "or" ], "x-enum-description": {} } }, "additionalProperties": false }, "query": { "type": "object", "required": [ "params" ], "properties": { "params": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false }, "reducer": { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string" } }, "additionalProperties": false } }, "additionalProperties": false } }, "datasource": { "description": "The datasource", "type": "object", "required": [ "type" ], "properties": { "apiVersion": { "description": "The apiserver version", "type": "string" }, "type": { "description": "The datasource plugin type", "type": "string", "pattern": "^__expr__$" }, "uid": { "description": "Datasource UID (NOTE: name in k8s)", "type": "string" } }, "additionalProperties": false }, "hide": { "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)", "type": "boolean" }, "queryType": { "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.", "type": "string" }, "refId": { "description": "RefID is the unique identifier of the query, set by the frontend call.", "type": "string" }, "resultAssertions": { "description": "Optionally define expected query result behavior", "type": "object", "required": [ "typeVersion" ], "properties": { "maxFrames": { "description": "Maximum frame count", "type": "integer" }, "type": { "description": "Type asserts that the frame matches a known type structure.\n\n\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` ", "type": "string", "enum": [ "", "timeseries-wide", "timeseries-long", "timeseries-many", "timeseries-multi", "directory-listing", "table", "numeric-wide", "numeric-multi", "numeric-long", "log-lines" ], "x-enum-description": {} }, "typeVersion": { "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/.", "type": "array", "maxItems": 2, "minItems": 2, "items": { "type": "integer" } } }, "additionalProperties": false }, "timeRange": { "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly", "type": "object", "required": [ "from", "to" ], "properties": { "from": { "description": "From is the start time of the query.", "type": "string", "default": "now-6h", "examples": [ "now-1h" ] }, "to": { "description": "To is the end time of the query.", "type": "string", "default": "now", "examples": [ "now" ] } }, "additionalProperties": false }, "type": { "type": "string", "pattern": "^classic_conditions$" } }, "additionalProperties": false, "$schema": "https://json-schema.org/draft-04/schema" }, { "type": "object", "required": [ "expression", "conditions", "type", "refId" ], "properties": { "conditions": { "description": "Threshold Conditions", "type": "array", "items": { "type": "object", "required": [ "evaluator" ], "properties": { "evaluator": { "type": "object", "required": [ "params", "type" ], "properties": { "params": { "type": "array", "items": { "type": "number" } }, "type": { "description": "e.g. \"gt\"", "type": "string", "enum": [ "gt", "lt", "within_range", "outside_range" ], "x-enum-description": {} } }, "additionalProperties": false }, "loadedDimensions": { "type": "object", "additionalProperties": true, "x-grafana-type": "data.DataFrame" }, "unloadEvaluator": { "type": "object", "required": [ "params", "type" ], "properties": { "params": { "type": "array", "items": { "type": "number" } }, "type": { "description": "e.g. \"gt\"", "type": "string", "enum": [ "gt", "lt", "within_range", "outside_range" ], "x-enum-description": {} } }, "additionalProperties": false } }, "additionalProperties": false } }, "datasource": { "description": "The datasource", "type": "object", "required": [ "type" ], "properties": { "apiVersion": { "description": "The apiserver version", "type": "string" }, "type": { "description": "The datasource plugin type", "type": "string", "pattern": "^__expr__$" }, "uid": { "description": "Datasource UID (NOTE: name in k8s)", "type": "string" } }, "additionalProperties": false }, "expression": { "description": "Reference to single query result", "type": "string", "minLength": 1, "examples": [ "$A" ] }, "hide": { "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)", "type": "boolean" }, "queryType": { "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.", "type": "string" }, "refId": { "description": "RefID is the unique identifier of the query, set by the frontend call.", "type": "string" }, "resultAssertions": { "description": "Optionally define expected query result behavior", "type": "object", "required": [ "typeVersion" ], "properties": { "maxFrames": { "description": "Maximum frame count", "type": "integer" }, "type": { "description": "Type asserts that the frame matches a known type structure.\n\n\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` ", "type": "string", "enum": [ "", "timeseries-wide", "timeseries-long", "timeseries-many", "timeseries-multi", "directory-listing", "table", "numeric-wide", "numeric-multi", "numeric-long", "log-lines" ], "x-enum-description": {} }, "typeVersion": { "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/.", "type": "array", "maxItems": 2, "minItems": 2, "items": { "type": "integer" } } }, "additionalProperties": false }, "timeRange": { "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly", "type": "object", "required": [ "from", "to" ], "properties": { "from": { "description": "From is the start time of the query.", "type": "string", "default": "now-6h", "examples": [ "now-1h" ] }, "to": { "description": "To is the end time of the query.", "type": "string", "default": "now", "examples": [ "now" ] } }, "additionalProperties": false }, "type": { "type": "string", "pattern": "^threshold$" } }, "additionalProperties": false, "$schema": "https://json-schema.org/draft-04/schema" }, { "description": "SQLQuery requires the sqlExpression feature flag", "type": "object", "required": [ "expression", "type", "refId" ], "properties": { "datasource": { "description": "The datasource", "type": "object", "required": [ "type" ], "properties": { "apiVersion": { "description": "The apiserver version", "type": "string" }, "type": { "description": "The datasource plugin type", "type": "string", "pattern": "^__expr__$" }, "uid": { "description": "Datasource UID (NOTE: name in k8s)", "type": "string" } }, "additionalProperties": false }, "expression": { "type": "string", "minLength": 1, "examples": [ "SELECT * FROM A LIMIT 1" ] }, "hide": { "description": "true if query is disabled (ie should not be returned to the dashboard)\nNOTE: this does not always imply that the query should not be executed since\nthe results from a hidden query may be used as the input to other queries (SSE etc)", "type": "boolean" }, "queryType": { "description": "QueryType is an optional identifier for the type of query.\nIt can be used to distinguish different types of queries.", "type": "string" }, "refId": { "description": "RefID is the unique identifier of the query, set by the frontend call.", "type": "string" }, "resultAssertions": { "description": "Optionally define expected query result behavior", "type": "object", "required": [ "typeVersion" ], "properties": { "maxFrames": { "description": "Maximum frame count", "type": "integer" }, "type": { "description": "Type asserts that the frame matches a known type structure.\n\n\nPossible enum values:\n - `\"\"` \n - `\"timeseries-wide\"` \n - `\"timeseries-long\"` \n - `\"timeseries-many\"` \n - `\"timeseries-multi\"` \n - `\"directory-listing\"` \n - `\"table\"` \n - `\"numeric-wide\"` \n - `\"numeric-multi\"` \n - `\"numeric-long\"` \n - `\"log-lines\"` ", "type": "string", "enum": [ "", "timeseries-wide", "timeseries-long", "timeseries-many", "timeseries-multi", "directory-listing", "table", "numeric-wide", "numeric-multi", "numeric-long", "log-lines" ], "x-enum-description": {} }, "typeVersion": { "description": "TypeVersion is the version of the Type property. Versions greater than 0.0 correspond to the dataplane\ncontract documentation https://grafana.github.io/dataplane/contract/.", "type": "array", "maxItems": 2, "minItems": 2, "items": { "type": "integer" } } }, "additionalProperties": false }, "timeRange": { "description": "TimeRange represents the query range\nNOTE: unlike generic /ds/query, we can now send explicit time values in each query\nNOTE: the values for timeRange are not saved in a dashboard, they are constructed on the fly", "type": "object", "required": [ "from", "to" ], "properties": { "from": { "description": "From is the start time of the query.", "type": "string", "default": "now-6h", "examples": [ "now-1h" ] }, "to": { "description": "To is the end time of the query.", "type": "string", "default": "now", "examples": [ "now" ] } }, "additionalProperties": false }, "type": { "type": "string", "pattern": "^sql$" } }, "additionalProperties": false, "$schema": "https://json-schema.org/draft-04/schema" } ], "$schema": "https://json-schema.org/draft-04/schema#" } }, "type": { "description": "the panel type", "type": "string" } }, "additionalProperties": true, "$schema": "https://json-schema.org/draft-04/schema#" }