{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://itworx.local/pulse/specs/dashboard.schema.json", "title": "Pulse dashboard document", "type": "object", "additionalProperties": false, "required": [ "schemaVersion", "id", "slug", "name", "scope", "variables", "widgets", "settings" ], "properties": { "schemaVersion": { "type": "integer", "minimum": 1 }, "id": { "type": "string", "format": "uuid" }, "slug": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 80 }, "name": { "type": "string", "minLength": 1, "maxLength": 120 }, "description": { "type": "string", "maxLength": 1000 }, "scope": { "type": "string", "enum": [ "personal", "shared", "system" ] }, "variables": { "type": "array", "maxItems": 30, "items": { "type": "object", "additionalProperties": false, "required": [ "name", "type", "label", "default" ], "properties": { "name": { "type": "string", "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$" }, "type": { "type": "string", "enum": [ "server", "entity", "container", "application", "disk", "pool", "service", "time-range", "enum" ] }, "label": { "type": "string", "maxLength": 120 }, "default": {}, "options": { "type": "array", "maxItems": 1000 } } } }, "widgets": { "type": "array", "maxItems": 200, "items": { "$ref": "widget-instance.schema.json" } }, "settings": { "type": "object", "additionalProperties": false, "properties": { "defaultTimeRange": { "type": "string", "maxLength": 60 }, "live": { "type": "boolean" }, "refreshSeconds": { "type": "integer", "minimum": 1, "maximum": 300 }, "rotationSeconds": { "type": [ "integer", "null" ], "minimum": 10, "maximum": 3600 } } } } }