From a87ca34be1e7bb9e151ea7728f286ad9c3850ef5 Mon Sep 17 00:00:00 2001 From: Joseph Abbey Date: Tue, 31 Oct 2023 21:21:46 +0000 Subject: [PATCH] Create config.schema.json --- config.schema.json | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 config.schema.json diff --git a/config.schema.json b/config.schema.json new file mode 100644 index 0000000..cc37d76 --- /dev/null +++ b/config.schema.json @@ -0,0 +1,41 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "title": { "type": "string" }, + "items": { "$ref": "#/$defs/items" }, + "additionalProperties": false + }, + "$defs": { + "item": { + "type": "object", + "properties": { + "entity": { "$ref": "#/$defs/entity" }, + "name": { "type": "string" }, + "type": { "enum": ["toggle", "tap"] } + }, + "additionalProperties": false + }, + "menu": { + "type": "object", + "properties": { + "entity": { "$ref": "#/$defs/entity" }, + "name": { "type": "string" }, + "title": { "type": "string" }, + "type": { "const": "group" }, + "items": { "$ref": "#/$defs/items" } + }, + "additionalProperties": false + }, + "items": { + "type": "array", + "items": { + "oneOf": [{ "$ref": "#/$defs/item" }, { "$ref": "#/$defs/menu" }] + } + }, + "entity": { + "type": "string", + "pattern": "^[^.]+\\.[^.]+$" + } + } +}