{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://itworx.local/pulse/specs/widget-instance.schema.json", "title": "Dashboard widget instance", "type": "object", "additionalProperties": false, "required": [ "id", "type", "title", "data", "visualization", "behavior", "layouts" ], "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "enum": [ "stat", "timeseries", "gauge", "ranked-list", "status-grid", "table", "heatmap", "event-timeline", "storage-map", "topology", "service-matrix", "alert-summary", "text", "query-inspector" ] }, "title": { "type": "string", "minLength": 1, "maxLength": 120 }, "description": { "type": "string", "maxLength": 500 }, "data": { "type": "object", "additionalProperties": false, "required": [ "sourceType" ], "properties": { "sourceType": { "type": "string", "enum": [ "semantic-metric", "inventory", "events", "alerts", "incidents", "text" ] }, "metric": { "type": "string", "maxLength": 160 }, "scope": { "type": "object", "maxProperties": 20 }, "range": { "type": "string", "maxLength": 60 }, "aggregation": { "type": "string", "maxLength": 40 }, "groupBy": { "type": "array", "maxItems": 10, "items": { "type": "string", "maxLength": 80 } }, "transformations": { "type": "array", "maxItems": 20, "items": { "type": "object", "maxProperties": 20 } }, "limit": { "type": "integer", "minimum": 1, "maximum": 1000 } } }, "visualization": { "type": "object", "additionalProperties": true, "properties": { "unit": { "type": "string", "maxLength": 40 }, "decimals": { "type": "integer", "minimum": 0, "maximum": 6 }, "legend": { "type": "boolean" }, "showSparkline": { "type": "boolean" }, "min": { "type": [ "number", "null" ] }, "max": { "type": [ "number", "null" ] }, "thresholds": { "type": "array", "maxItems": 10, "items": { "type": "object", "maxProperties": 10 } } } }, "behavior": { "type": "object", "additionalProperties": false, "properties": { "locked": { "type": "boolean" }, "hidden": { "type": "boolean" }, "hideWhenEmpty": { "type": "boolean" }, "showOnlyOnProblem": { "type": "boolean" }, "link": { "type": [ "string", "null" ], "maxLength": 1000 }, "liveIntervalSeconds": { "type": "integer", "minimum": 1, "maximum": 300 }, "independentTimeRange": { "type": [ "string", "null" ], "maxLength": 60 } } }, "layouts": { "type": "object", "additionalProperties": false, "required": [ "desktop", "tablet", "mobile", "wallboard" ], "properties": { "desktop": { "$ref": "#/$defs/layout" }, "tablet": { "$ref": "#/$defs/layout" }, "mobile": { "$ref": "#/$defs/layout" }, "wallboard": { "$ref": "#/$defs/layout" } } } }, "$defs": { "layout": { "type": "object", "additionalProperties": false, "required": [ "x", "y", "w", "h", "visible" ], "properties": { "x": { "type": "integer", "minimum": 0, "maximum": 24 }, "y": { "type": "integer", "minimum": 0 }, "w": { "type": "integer", "minimum": 1, "maximum": 24 }, "h": { "type": "integer", "minimum": 1, "maximum": 100 }, "visible": { "type": "boolean" } } } } }