GarminHomeAssistant/config.schema.json
2024-01-14 08:00:49 +00:00

113 lines
3.4 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"title": { "type": "string" },
"items": { "$ref": "#/$defs/items" },
"required": ["title", "items"],
"additionalProperties": false
},
"$defs": {
"toggle": {
"type": "object",
"properties": {
"entity": { "$ref": "#/$defs/entity" },
"name": { "title": "Your familiar name", "type": "string" },
"type": {
"title": "Menu item type",
"description": "One of 'tap', 'template', 'toggle' or 'group'.",
"const": "toggle"
}
},
"required": ["entity", "name", "type"],
"additionalProperties": false
},
"template": {
"type": "object",
"properties": {
"entity": { "$ref": "#/$defs/entity" },
"name": { "title": "Your familiar name", "type": "string" },
"content": { "title": "What to display (template)", "type": "string" },
"type": {
"title": "Menu item type",
"description": "One of 'tap', 'template', 'toggle' or 'group'.",
"const": "template"
},
"tap_action": { "$ref": "#/$defs/action" }
},
"required": ["name", "entity", "content", "type"],
"additionalProperties": false
},
"tap": {
"type": "object",
"properties": {
"entity": { "$ref": "#/$defs/entity" },
"name": { "title": "Your familiar name", "type": "string" },
"type": {
"title": "Menu item type",
"description": "One of 'tap', 'template', 'toggle' or 'group'.",
"const": "tap"
},
"service": {
"$ref": "#/$defs/entity",
"deprecated": true,
"title": "Schema change:",
"description": "Use 'tap_action' instead to mirror Home Assistant."
},
"tap_action": { "$ref": "#/$defs/action" }
},
"oneOf": [
{ "required": ["entity", "name", "type", "service"] },
{ "required": ["entity", "name", "type", "tap_action"] }
],
"additionalProperties": false
},
"menu": {
"type": "object",
"properties": {
"entity": { "$ref": "#/$defs/entity" },
"name": { "title": "Your familiar name", "type": "string" },
"title": { "type": "string" },
"type": {
"title": "Menu item type",
"description": "One of 'tap', 'template', 'toggle' or 'group'.",
"const": "group"
},
"items": { "$ref": "#/$defs/items" }
},
"required": ["entity", "name", "title", "type", "items"],
"additionalProperties": false
},
"items": {
"type": "array",
"items": {
"oneOf": [
{ "$ref": "#/$defs/toggle" },
{ "$ref": "#/$defs/template" },
{ "$ref": "#/$defs/tap" },
{ "$ref": "#/$defs/menu" }
]
}
},
"entity": {
"title": "Home Assistant entity name",
"type": "string",
"pattern": "^[^.]+\\.[^.]+$"
},
"action": {
"title": "Action",
"description": "'confirm' field is optional.",
"type": "object",
"properties": {
"service": { "$ref": "#/$defs/entity" },
"confirm": {
"type": "boolean",
"default": false,
"description": "Confirm the action before execution as a precaution."
}
},
"required": ["service"]
}
}
}