{
  "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"
                  },
                  "to": {
                    "description": "To is the end time of the query.",
                    "type": "string",
                    "default": "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"
                  },
                  "to": {
                    "description": "To is the end time of the query.",
                    "type": "string",
                    "default": "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"
                  },
                  "to": {
                    "description": "To is the end time of the query.",
                    "type": "string",
                    "default": "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",
                            "logic-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"
                  },
                  "to": {
                    "description": "To is the end time of the query.",
                    "type": "string",
                    "default": "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",
                            "eq",
                            "ne",
                            "gte",
                            "lte",
                            "within_range",
                            "outside_range",
                            "within_range_included",
                            "outside_range_included"
                          ],
                          "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",
                            "eq",
                            "ne",
                            "gte",
                            "lte",
                            "within_range",
                            "outside_range",
                            "within_range_included",
                            "outside_range_included"
                          ],
                          "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"
                  },
                  "to": {
                    "description": "To is the end time of the query.",
                    "type": "string",
                    "default": "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",
              "format",
              "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"
                ]
              },
              "format": {
                "type": "string"
              },
              "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"
                  },
                  "to": {
                    "description": "To is the end time of the query.",
                    "type": "string",
                    "default": "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#"
}