mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-04-30 20:52:27 +00:00
JSON schema fix to remove 'template' as a valid option, punctuation in strings, whitespace, and a new application history entry.
248 lines
6.3 KiB
JSON
248 lines
6.3 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"items": {
|
|
"$ref": "#/$defs/items"
|
|
},
|
|
"$schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["title", "items"],
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"toggle": {
|
|
"type": "object",
|
|
"properties": {
|
|
"entity": {
|
|
"$ref": "#/$defs/entity"
|
|
},
|
|
"name": {
|
|
"$ref": "#/$defs/name"
|
|
},
|
|
"type": {
|
|
"$ref": "#/$defs/type",
|
|
"const": "toggle"
|
|
},
|
|
"content": {
|
|
"$ref": "#/$defs/content",
|
|
"description": "Optional in a toggle."
|
|
},
|
|
"tap_action": {
|
|
"type": "object",
|
|
"properties": {
|
|
"confirm": {
|
|
"$ref": "#/$defs/confirm"
|
|
},
|
|
"pin": {
|
|
"$ref": "#/$defs/pin"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["entity", "name", "type"],
|
|
"additionalProperties": false
|
|
},
|
|
"template": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"entity": {
|
|
"$ref": "#/$defs/entity",
|
|
"deprecated": true,
|
|
"title": "Schema change:",
|
|
"description": "Use 'tap_action' instead to mirror Home Assistant."
|
|
},
|
|
"name": {
|
|
"$ref": "#/$defs/name"
|
|
},
|
|
"content": {
|
|
"$ref": "#/$defs/content"
|
|
},
|
|
"type": {
|
|
"$ref": "#/$defs/type",
|
|
"const": "template",
|
|
"deprecated": true,
|
|
"title": "Schema change:",
|
|
"description": "Use 'tap' instead."
|
|
}
|
|
},
|
|
"required": ["name", "content", "type"],
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"entity": {
|
|
"$ref": "#/$defs/entity"
|
|
},
|
|
"name": {
|
|
"$ref": "#/$defs/name"
|
|
},
|
|
"content": {
|
|
"$ref": "#/$defs/content"
|
|
},
|
|
"type": {
|
|
"$ref": "#/$defs/type",
|
|
"const": "template",
|
|
"deprecated": true,
|
|
"title": "Schema change:",
|
|
"description": "Use 'tap' instead."
|
|
},
|
|
"tap_action": {
|
|
"$ref": "#/$defs/tap_action"
|
|
}
|
|
},
|
|
"required": ["name", "content", "type", "tap_action"],
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"tap": {
|
|
"type": "object",
|
|
"properties": {
|
|
"entity": {
|
|
"$ref": "#/$defs/entity"
|
|
},
|
|
"name": {
|
|
"$ref": "#/$defs/name"
|
|
},
|
|
"type": {
|
|
"$ref": "#/$defs/type",
|
|
"const": "tap"
|
|
},
|
|
"content": {
|
|
"$ref": "#/$defs/content",
|
|
"description": "Optional in a 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"
|
|
}
|
|
},
|
|
"required": ["name", "type"],
|
|
"additionalProperties": false
|
|
},
|
|
"group": {
|
|
"type": "object",
|
|
"properties": {
|
|
"entity": {
|
|
"$ref": "#/$defs/entity",
|
|
"type": "string",
|
|
"deprecated": true,
|
|
"title": "Schema change:",
|
|
"description": "'entity' is no longer necessary and should now be removed."
|
|
},
|
|
"name": {
|
|
"title": "Menu item's familiar name.",
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"title": "Sub menu's title once displayed.",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"$ref": "#/$defs/type",
|
|
"const": "group"
|
|
},
|
|
"content": {
|
|
"$ref": "#/$defs/content",
|
|
"description": "Optional in a group."
|
|
},
|
|
"items": {
|
|
"$ref": "#/$defs/items"
|
|
}
|
|
},
|
|
"required": ["name", "title", "type", "items"],
|
|
"additionalProperties": false
|
|
},
|
|
"type": {
|
|
"title": "Menu item type",
|
|
"description": "One of 'tap', 'toggle' or 'group'."
|
|
},
|
|
"items": {
|
|
"type": "array",
|
|
"maxItems": 16,
|
|
"items": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/toggle"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/template"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/tap"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/group"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"name": {
|
|
"title": "Your familiar name",
|
|
"type": "string"
|
|
},
|
|
"entity": {
|
|
"type": "string",
|
|
"title": "Home Assistant entity name",
|
|
"pattern": "^[^.]+\\.[^.]+$"
|
|
},
|
|
"service": {
|
|
"type": "string",
|
|
"title": "Home Assistant service name",
|
|
"pattern": "^[^.]+\\.[^.]+$"
|
|
},
|
|
"tap_action": {
|
|
"type": "object",
|
|
"title": "Action",
|
|
"description": "'confirm' field is optional.",
|
|
"properties": {
|
|
"service": {
|
|
"$ref": "#/$defs/service"
|
|
},
|
|
"confirm": {
|
|
"$ref": "#/$defs/confirm"
|
|
},
|
|
"pin": {
|
|
"$ref": "#/$defs/pin"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"title": "Your services's parameters",
|
|
"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"]
|
|
},
|
|
"content": {
|
|
"title": "Jinja2 template defining the text to display.",
|
|
"type": "string"
|
|
},
|
|
"confirm": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"title": "Confirmation",
|
|
"description": "Optional confirmation of the action before execution as a precaution."
|
|
},
|
|
"pin": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"title": "PIN Confirmation",
|
|
"description": "Optional PIN confirmation of the action before execution as a precaution. Has precedence over 'confirm': true if both are set."
|
|
}
|
|
}
|
|
}
|