Grafana · Schema

Grafana Dashboard

Schema for a Grafana dashboard model, defining the structure of dashboard JSON that can be saved and loaded via the Grafana HTTP API.

AlertingAnalyticsDashboardsLogsMetricsMonitoringObservabilityTracesVisualization

Properties

Name Type Description
id integernull Unique numeric identifier. Null when creating a new dashboard.
uid string Unique dashboard identifier that can be generated by the client. Used for stable references across instances.
title string Title of the dashboard
description string Description of the dashboard
tags array Tags associated with the dashboard
timezone string Timezone for the dashboard. Empty string means browser default.
schemaVersion integer Version of the dashboard schema. Auto-managed by Grafana.
version integer Dashboard version, incremented on each save. Used for optimistic locking.
refresh string Auto-refresh interval, e.g. 5s, 1m, 5m, 15m, 30m, 1h, 2h, 1d
editable boolean Whether the dashboard is editable or read-only
fiscalYearStartMonth integer Month (0-11) for the start of the fiscal year
graphTooltip integer 0: default, 1: shared crosshair, 2: shared tooltip
liveNow boolean Whether to continuously re-draw panels with streaming data
time object Default time range for the dashboard
timepicker object Time picker configuration
panels array List of panels in the dashboard
templating object Template variables configuration
annotations object Dashboard annotations configuration
links array Dashboard-level links
View JSON Schema on GitHub

JSON Schema

dashboard.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/grafana/json-schema/dashboard.json",
  "title": "Grafana Dashboard",
  "description": "Schema for a Grafana dashboard model, defining the structure of dashboard JSON that can be saved and loaded via the Grafana HTTP API.",
  "type": "object",
  "properties": {
    "id": {
      "type": ["integer", "null"],
      "description": "Unique numeric identifier. Null when creating a new dashboard."
    },
    "uid": {
      "type": "string",
      "description": "Unique dashboard identifier that can be generated by the client. Used for stable references across instances.",
      "maxLength": 40
    },
    "title": {
      "type": "string",
      "description": "Title of the dashboard"
    },
    "description": {
      "type": "string",
      "description": "Description of the dashboard"
    },
    "tags": {
      "type": "array",
      "items": { "type": "string" },
      "description": "Tags associated with the dashboard"
    },
    "timezone": {
      "type": "string",
      "description": "Timezone for the dashboard. Empty string means browser default.",
      "enum": ["", "browser", "utc"],
      "default": "browser"
    },
    "schemaVersion": {
      "type": "integer",
      "description": "Version of the dashboard schema. Auto-managed by Grafana.",
      "minimum": 0
    },
    "version": {
      "type": "integer",
      "description": "Dashboard version, incremented on each save. Used for optimistic locking.",
      "minimum": 0
    },
    "refresh": {
      "type": "string",
      "description": "Auto-refresh interval, e.g. 5s, 1m, 5m, 15m, 30m, 1h, 2h, 1d"
    },
    "editable": {
      "type": "boolean",
      "default": true,
      "description": "Whether the dashboard is editable or read-only"
    },
    "fiscalYearStartMonth": {
      "type": "integer",
      "minimum": 0,
      "maximum": 11,
      "default": 0,
      "description": "Month (0-11) for the start of the fiscal year"
    },
    "graphTooltip": {
      "type": "integer",
      "enum": [0, 1, 2],
      "default": 0,
      "description": "0: default, 1: shared crosshair, 2: shared tooltip"
    },
    "liveNow": {
      "type": "boolean",
      "description": "Whether to continuously re-draw panels with streaming data"
    },
    "time": {
      "type": "object",
      "description": "Default time range for the dashboard",
      "properties": {
        "from": {
          "type": "string",
          "description": "Start of time range, e.g. now-6h, now-7d, 2023-01-01T00:00:00Z"
        },
        "to": {
          "type": "string",
          "description": "End of time range, e.g. now"
        }
      },
      "required": ["from", "to"]
    },
    "timepicker": {
      "type": "object",
      "description": "Time picker configuration",
      "properties": {
        "collapse": { "type": "boolean" },
        "enable": { "type": "boolean" },
        "hidden": { "type": "boolean" },
        "refresh_intervals": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Available auto-refresh intervals"
        },
        "time_options": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Available time range quick picks"
        }
      }
    },
    "panels": {
      "type": "array",
      "description": "List of panels in the dashboard",
      "items": { "$ref": "panel.json" }
    },
    "templating": {
      "type": "object",
      "description": "Template variables configuration",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "type": {
                "type": "string",
                "enum": ["query", "custom", "constant", "datasource", "interval", "textbox", "adhoc"]
              },
              "label": { "type": "string" },
              "datasource": {
                "type": ["object", "string", "null"]
              },
              "query": {},
              "current": { "type": "object" },
              "options": {
                "type": "array",
                "items": { "type": "object" }
              },
              "hide": {
                "type": "integer",
                "enum": [0, 1, 2],
                "description": "0: show label and value, 1: show value only, 2: hide completely"
              },
              "multi": { "type": "boolean" },
              "includeAll": { "type": "boolean" },
              "allValue": { "type": ["string", "null"] },
              "refresh": {
                "type": "integer",
                "enum": [0, 1, 2],
                "description": "0: never, 1: on dashboard load, 2: on time range change"
              },
              "sort": { "type": "integer" },
              "regex": { "type": "string" },
              "skipUrlSync": { "type": "boolean" }
            },
            "required": ["name", "type"]
          }
        }
      }
    },
    "annotations": {
      "type": "object",
      "description": "Dashboard annotations configuration",
      "properties": {
        "list": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "builtIn": { "type": "integer" },
              "datasource": { "type": "object" },
              "enable": { "type": "boolean" },
              "hide": { "type": "boolean" },
              "iconColor": { "type": "string" },
              "name": { "type": "string" },
              "type": { "type": "string" }
            }
          }
        }
      }
    },
    "links": {
      "type": "array",
      "description": "Dashboard-level links",
      "items": {
        "type": "object",
        "properties": {
          "title": { "type": "string" },
          "type": {
            "type": "string",
            "enum": ["dashboards", "link"]
          },
          "url": { "type": "string" },
          "tags": {
            "type": "array",
            "items": { "type": "string" }
          },
          "targetBlank": { "type": "boolean" },
          "asDropdown": { "type": "boolean" },
          "icon": { "type": "string" },
          "includeVars": { "type": "boolean" },
          "keepTime": { "type": "boolean" },
          "tooltip": { "type": "string" }
        }
      }
    }
  },
  "required": ["title"]
}