GarminHomeAssistant/config.schema.json
2024-01-19 19:39:25 +00:00

181 lines
4.5 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"
},
"tap_action": {
"type": "object",
"properties": {
"confirm": {
"$ref": "#/$defs/confirm"
}
},
"additionalProperties": false
}
},
"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/tap_action"
}
},
"required": ["name", "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/tap_action"
}
},
"oneOf": [
{
"required": ["name", "type", "service"]
},
{
"required": ["name", "type", "tap_action"]
}
],
"additionalProperties": false
},
"group": {
"type": "object",
"properties": {
"entity": {
"$ref": "#/$defs/entity",
"deprecated": true,
"title": "Schema change:",
"description": "'entity' is no longer necessary and should be removed."
},
"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": ["name", "title", "type", "items"],
"additionalProperties": false
},
"items": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/$defs/toggle"
},
{
"$ref": "#/$defs/template"
},
{
"$ref": "#/$defs/tap"
},
{
"$ref": "#/$defs/group"
}
]
}
},
"entity": {
"title": "Home Assistant entity name",
"type": "string",
"pattern": "^[^.]+\\.[^.]+$"
},
"tap_action": {
"title": "Action",
"description": "'confirm' field is optional.",
"type": "object",
"properties": {
"service": {
"$ref": "#/$defs/entity"
},
"confirm": {
"$ref": "#/$defs/confirm"
},
"data": {
"type": "object",
"description": "The object containing the parameters and their values to be passed to the entity. No schema checking can be done here, you are on your own! On application crash, remove the parameters."
}
},
"required": ["service"]
},
"confirm": {
"type": "boolean",
"default": false,
"description": "Confirm the action before execution as a precaution."
}
}
}