mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-05-28 18:43:40 +00:00
chore(style): reformat JSON config files from 4-space to 2-space indent
Apply consistent 2-space indentation to all project-level JSON configuration files: devcontainer.json, devcontainer-extensions.json, manifest.json, icons.json, hacs.json, .markdownlint.json, and translation_schema.json. No content changes. Release-Notes: skip
This commit is contained in:
parent
a957334990
commit
a93ad1ac96
7 changed files with 446 additions and 464 deletions
|
|
@ -1,6 +1,4 @@
|
||||||
{
|
{
|
||||||
"recommendations": [],
|
"recommendations": [],
|
||||||
"unwantedRecommendations": [
|
"unwantedRecommendations": ["ms-python.pylint"]
|
||||||
"ms-python.pylint"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,7 @@
|
||||||
"PYTHONASYNCIODEBUG": "1",
|
"PYTHONASYNCIODEBUG": "1",
|
||||||
"TIBBER_PRICES_DEV": "1"
|
"TIBBER_PRICES_DEV": "1"
|
||||||
},
|
},
|
||||||
"forwardPorts": [
|
"forwardPorts": [8123, 3000, 3001],
|
||||||
8123,
|
|
||||||
3000,
|
|
||||||
3001
|
|
||||||
],
|
|
||||||
"portsAttributes": {
|
"portsAttributes": {
|
||||||
"8123": {
|
"8123": {
|
||||||
"label": "Home Assistant",
|
"label": "Home Assistant",
|
||||||
|
|
@ -56,9 +52,7 @@
|
||||||
"reportUnusedCoroutine": "none",
|
"reportUnusedCoroutine": "none",
|
||||||
"reportMissingTypeStubs": "none"
|
"reportMissingTypeStubs": "none"
|
||||||
},
|
},
|
||||||
"python.analysis.include": [
|
"python.analysis.include": ["custom_components/tibber_prices"],
|
||||||
"custom_components/tibber_prices"
|
|
||||||
],
|
|
||||||
"python.analysis.exclude": [
|
"python.analysis.exclude": [
|
||||||
"**/.venv/**",
|
"**/.venv/**",
|
||||||
"**/venv/**",
|
"**/venv/**",
|
||||||
|
|
@ -74,9 +68,7 @@
|
||||||
],
|
],
|
||||||
"python.terminal.activateEnvironment": true,
|
"python.terminal.activateEnvironment": true,
|
||||||
"python.terminal.activateEnvInCurrentTerminal": true,
|
"python.terminal.activateEnvInCurrentTerminal": true,
|
||||||
"python.testing.pytestArgs": [
|
"python.testing.pytestArgs": ["--no-cov"],
|
||||||
"--no-cov"
|
|
||||||
],
|
|
||||||
"[json]": {
|
"[json]": {
|
||||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
|
|
@ -112,15 +104,11 @@
|
||||||
"markdown.validate.fragmentLinks.enabled": "ignore",
|
"markdown.validate.fragmentLinks.enabled": "ignore",
|
||||||
"json.schemas": [
|
"json.schemas": [
|
||||||
{
|
{
|
||||||
"fileMatch": [
|
"fileMatch": ["homeassistant/components/*/manifest.json"],
|
||||||
"homeassistant/components/*/manifest.json"
|
|
||||||
],
|
|
||||||
"url": "${containerWorkspaceFolder}/schemas/json/manifest_schema.json"
|
"url": "${containerWorkspaceFolder}/schemas/json/manifest_schema.json"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"fileMatch": [
|
"fileMatch": ["homeassistant/components/*/translations/*.json"],
|
||||||
"homeassistant/components/*/translations/*.json"
|
|
||||||
],
|
|
||||||
"url": "${containerWorkspaceFolder}/schemas/json/translation_schema.json"
|
"url": "${containerWorkspaceFolder}/schemas/json/translation_schema.json"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
"default": true,
|
"default": true,
|
||||||
"MD013": false,
|
"MD013": false,
|
||||||
"MD033": false,
|
"MD033": false,
|
||||||
"MD041": false,
|
"MD041": false,
|
||||||
"no-inline-html": false,
|
"no-inline-html": false,
|
||||||
"line-length": false,
|
"line-length": false,
|
||||||
"first-line-heading": false
|
"first-line-heading": false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,79 +1,79 @@
|
||||||
{
|
{
|
||||||
"services": {
|
"services": {
|
||||||
"get_price": {
|
"get_price": {
|
||||||
"service": "mdi:table-search"
|
"service": "mdi:table-search"
|
||||||
},
|
},
|
||||||
"get_chartdata": {
|
"get_chartdata": {
|
||||||
"service": "mdi:chart-bar",
|
"service": "mdi:chart-bar",
|
||||||
"sections": {
|
"sections": {
|
||||||
"general": "mdi:identifier",
|
"general": "mdi:identifier",
|
||||||
"selection": "mdi:calendar-range",
|
"selection": "mdi:calendar-range",
|
||||||
"filters": "mdi:filter-variant",
|
"filters": "mdi:filter-variant",
|
||||||
"transformation": "mdi:tune",
|
"transformation": "mdi:tune",
|
||||||
"format": "mdi:file-table",
|
"format": "mdi:file-table",
|
||||||
"arrays_of_objects": "mdi:code-json",
|
"arrays_of_objects": "mdi:code-json",
|
||||||
"arrays_of_arrays": "mdi:code-brackets"
|
"arrays_of_arrays": "mdi:code-brackets"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"get_apexcharts_yaml": {
|
"get_apexcharts_yaml": {
|
||||||
"service": "mdi:chart-line",
|
"service": "mdi:chart-line",
|
||||||
"sections": {
|
"sections": {
|
||||||
"entry_id": "mdi:identifier",
|
"entry_id": "mdi:identifier",
|
||||||
"day": "mdi:calendar-range",
|
"day": "mdi:calendar-range",
|
||||||
"level_type": "mdi:format-list-bulleted-type",
|
"level_type": "mdi:format-list-bulleted-type",
|
||||||
"resolution": "mdi:timer-sand",
|
"resolution": "mdi:timer-sand",
|
||||||
"highlight_best_price": "mdi:battery-charging-low",
|
"highlight_best_price": "mdi:battery-charging-low",
|
||||||
"highlight_peak_price": "mdi:battery-alert"
|
"highlight_peak_price": "mdi:battery-alert"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"refresh_user_data": {
|
"refresh_user_data": {
|
||||||
"service": "mdi:refresh"
|
"service": "mdi:refresh"
|
||||||
},
|
},
|
||||||
"find_cheapest_block": {
|
"find_cheapest_block": {
|
||||||
"service": "mdi:washing-machine",
|
"service": "mdi:washing-machine",
|
||||||
"sections": {
|
"sections": {
|
||||||
"search_range": "mdi:calendar-search",
|
"search_range": "mdi:calendar-search",
|
||||||
"time_alternatives": "mdi:clock-time-eight-outline",
|
"time_alternatives": "mdi:clock-time-eight-outline",
|
||||||
"price_filter": "mdi:filter-variant",
|
"price_filter": "mdi:filter-variant",
|
||||||
"output": "mdi:tune-variant"
|
"output": "mdi:tune-variant"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"find_most_expensive_block": {
|
"find_most_expensive_block": {
|
||||||
"service": "mdi:lightning-bolt-circle",
|
"service": "mdi:lightning-bolt-circle",
|
||||||
"sections": {
|
"sections": {
|
||||||
"search_range": "mdi:calendar-search",
|
"search_range": "mdi:calendar-search",
|
||||||
"time_alternatives": "mdi:clock-time-eight-outline",
|
"time_alternatives": "mdi:clock-time-eight-outline",
|
||||||
"price_filter": "mdi:filter-variant",
|
"price_filter": "mdi:filter-variant",
|
||||||
"output": "mdi:tune-variant"
|
"output": "mdi:tune-variant"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"find_cheapest_hours": {
|
"find_cheapest_hours": {
|
||||||
"service": "mdi:ev-station",
|
"service": "mdi:ev-station",
|
||||||
"sections": {
|
"sections": {
|
||||||
"search_range": "mdi:calendar-search",
|
"search_range": "mdi:calendar-search",
|
||||||
"time_alternatives": "mdi:clock-time-eight-outline",
|
"time_alternatives": "mdi:clock-time-eight-outline",
|
||||||
"price_filter": "mdi:filter-variant",
|
"price_filter": "mdi:filter-variant",
|
||||||
"output": "mdi:tune-variant"
|
"output": "mdi:tune-variant"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"find_most_expensive_hours": {
|
"find_most_expensive_hours": {
|
||||||
"service": "mdi:flash-alert",
|
"service": "mdi:flash-alert",
|
||||||
"sections": {
|
"sections": {
|
||||||
"search_range": "mdi:calendar-search",
|
"search_range": "mdi:calendar-search",
|
||||||
"time_alternatives": "mdi:clock-time-eight-outline",
|
"time_alternatives": "mdi:clock-time-eight-outline",
|
||||||
"price_filter": "mdi:filter-variant",
|
"price_filter": "mdi:filter-variant",
|
||||||
"output": "mdi:tune-variant"
|
"output": "mdi:tune-variant"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"find_cheapest_schedule": {
|
"find_cheapest_schedule": {
|
||||||
"service": "mdi:calendar-check",
|
"service": "mdi:calendar-check",
|
||||||
"sections": {
|
"sections": {
|
||||||
"scheduling_options": "mdi:format-list-numbered",
|
"scheduling_options": "mdi:format-list-numbered",
|
||||||
"search_range": "mdi:calendar-search",
|
"search_range": "mdi:calendar-search",
|
||||||
"time_alternatives": "mdi:clock-time-eight-outline",
|
"time_alternatives": "mdi:clock-time-eight-outline",
|
||||||
"price_filter": "mdi:filter-variant",
|
"price_filter": "mdi:filter-variant",
|
||||||
"output": "mdi:tune-variant"
|
"output": "mdi:tune-variant"
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,11 @@
|
||||||
{
|
{
|
||||||
"domain": "tibber_prices",
|
"domain": "tibber_prices",
|
||||||
"name": "Tibber Price Information & Ratings",
|
"name": "Tibber Price Information & Ratings",
|
||||||
"codeowners": [
|
"codeowners": ["@jpawlowski"],
|
||||||
"@jpawlowski"
|
|
||||||
],
|
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://github.com/jpawlowski/hass.tibber_prices",
|
"documentation": "https://github.com/jpawlowski/hass.tibber_prices",
|
||||||
"iot_class": "cloud_polling",
|
"iot_class": "cloud_polling",
|
||||||
"issue_tracker": "https://github.com/jpawlowski/hass.tibber_prices/issues",
|
"issue_tracker": "https://github.com/jpawlowski/hass.tibber_prices/issues",
|
||||||
"requirements": [
|
"requirements": ["aiofiles>=23.2.1"],
|
||||||
"aiofiles>=23.2.1"
|
|
||||||
],
|
|
||||||
"version": "0.30.0"
|
"version": "0.30.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Tibber Price Information & Ratings",
|
"name": "Tibber Price Information & Ratings",
|
||||||
"homeassistant": "2026.4.0",
|
"homeassistant": "2026.4.0",
|
||||||
"hacs": "2.0.5"
|
"hacs": "2.0.5"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,372 +1,372 @@
|
||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"title": "Home Assistant Translation File Schema",
|
"title": "Home Assistant Translation File Schema",
|
||||||
"description": "Schema for Home Assistant custom integration translation files based on https://developers.home-assistant.io/docs/internationalization/core",
|
"description": "Schema for Home Assistant custom integration translation files based on https://developers.home-assistant.io/docs/internationalization/core",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"title": {
|
"title": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Title of the integration (optional, will fallback to integration name if omitted). Only include if not a product brand."
|
"description": "Title of the integration (optional, will fallback to integration name if omitted). Only include if not a product brand."
|
||||||
|
},
|
||||||
|
"common": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Shared strings that can be referenced using [%key:component::domain::common::key_path%]",
|
||||||
|
"additionalProperties": true
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for the configuration flow",
|
||||||
|
"properties": {
|
||||||
|
"flow_title": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Title shown in list (only rendered if placeholders required), e.g. 'Discovered Device ({host})'"
|
||||||
},
|
},
|
||||||
"common": {
|
"entry_type": {
|
||||||
"type": "object",
|
"type": "string",
|
||||||
"description": "Shared strings that can be referenced using [%key:component::domain::common::key_path%]",
|
"description": "Label explaining what an entry represents (optional, only if default translations are misleading)"
|
||||||
"additionalProperties": true
|
|
||||||
},
|
},
|
||||||
"config": {
|
"initiate_flow": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Menu or button labels for starting flows",
|
||||||
|
"properties": {
|
||||||
|
"reconfigure": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Label for reconfigure flow"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Label for user flow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"step": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for each config flow step",
|
||||||
|
"additionalProperties": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Translations for the configuration flow",
|
|
||||||
"properties": {
|
"properties": {
|
||||||
"flow_title": {
|
"title": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Title shown in list (only rendered if placeholders required), e.g. 'Discovered Device ({host})'"
|
"description": "User-visible title of the step (will show integration name if omitted)"
|
||||||
},
|
},
|
||||||
"entry_type": {
|
"description": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Label explaining what an entry represents (optional, only if default translations are misleading)"
|
"description": "Markdown description shown with the step (optional)"
|
||||||
},
|
},
|
||||||
"initiate_flow": {
|
"data": {
|
||||||
"type": "object",
|
|
||||||
"description": "Menu or button labels for starting flows",
|
|
||||||
"properties": {
|
|
||||||
"reconfigure": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Label for reconfigure flow"
|
|
||||||
},
|
|
||||||
"user": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Label for user flow"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"step": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for each config flow step",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"title": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "User-visible title of the step (will show integration name if omitted)"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Markdown description shown with the step (optional)"
|
|
||||||
},
|
|
||||||
"data": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Labels for input fields",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"data_description": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Descriptions for input fields",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sections": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Labels for form sections (only if form has sections)",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Section label"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"error": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Error messages returned by the flow",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"abort": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Abort messages (supports Markdown)",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"progress": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Progress messages for async_show_progress (supports Markdown)",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"create_entry": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Success dialog messages (supports Markdown)",
|
|
||||||
"properties": {
|
|
||||||
"default": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Default message if async_create_entry called with description=None"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Custom messages for specific description keys"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"options": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for the options flow (same format as config)"
|
|
||||||
},
|
|
||||||
"config_subentries": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for config subentry flows (map of subentry types, each with same format as config)",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"selector": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for selector options. The key is the translation_key set in SelectSelectorConfig. CRITICAL: Use selector.{translation_key}.options.{value}, NOT selector.select.{translation_key}",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"description": "Labels for input fields",
|
||||||
"options": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Option label translations for select selectors. Keys must match the values passed in the options list.",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"unit_of_measurement": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Unit translations for number selectors",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"services": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for service actions",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Service action name"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Service action description"
|
|
||||||
},
|
|
||||||
"fields": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Field translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Field name"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Field description"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sections": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Collapsible section labels",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Section name"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"entity": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for entities",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Entity domain (sensor, binary_sensor, etc.)",
|
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"type": "object",
|
"type": "string"
|
||||||
"description": "Entity translation_key",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Entity name (only for entities with has_entity_name=True)"
|
|
||||||
},
|
|
||||||
"state": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "State translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"state_attributes": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Entity state attribute translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Attribute name"
|
|
||||||
},
|
|
||||||
"state": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Attribute state translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"unit_of_measurement": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Unit of measurement translation (for sensor/number entities)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
"data_description": {
|
||||||
"entity_component": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for entity components (if integration provides entities under its domain)",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Device class or '_' for default",
|
"description": "Descriptions for input fields",
|
||||||
"properties": {
|
"additionalProperties": {
|
||||||
"state": {
|
"type": "string"
|
||||||
"type": "object",
|
|
||||||
"description": "State translations for this device class",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"state_attributes": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Attribute name and state translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"name": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Attribute name"
|
|
||||||
},
|
|
||||||
"state": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Attribute state values",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
"sections": {
|
||||||
"device": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Translations for device names",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"description": "Labels for form sections (only if form has sections)",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Device name (set device's translation_key to use this)"
|
"description": "Section label"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"device_automation": {
|
"error": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Translations for device automations",
|
"description": "Error messages returned by the flow",
|
||||||
"properties": {
|
"additionalProperties": {
|
||||||
"action_type": {
|
"type": "string"
|
||||||
"type": "object",
|
}
|
||||||
"description": "Device action translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"condition_type": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Device condition translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"trigger_type": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Device trigger translations",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"trigger_subtype": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Device trigger subtype translations (e.g., button names)",
|
|
||||||
"additionalProperties": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"exceptions": {
|
"abort": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Translations for HomeAssistantError and subclasses",
|
"description": "Abort messages (supports Markdown)",
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"type": "object",
|
"type": "string"
|
||||||
"properties": {
|
}
|
||||||
"message": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Exception message (supports placeholders)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"issues": {
|
"progress": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Translations for repairs issues",
|
"description": "Progress messages for async_show_progress (supports Markdown)",
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"type": "object",
|
"type": "string"
|
||||||
"properties": {
|
}
|
||||||
"title": {
|
},
|
||||||
"type": "string",
|
"create_entry": {
|
||||||
"description": "Issue title"
|
"type": "object",
|
||||||
},
|
"description": "Success dialog messages (supports Markdown)",
|
||||||
"description": {
|
"properties": {
|
||||||
"type": "string",
|
"default": {
|
||||||
"description": "Issue description (exactly one of 'description' or 'fix_flow' must be present)"
|
"type": "string",
|
||||||
},
|
"description": "Default message if async_create_entry called with description=None"
|
||||||
"fix_flow": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Repair flow translations (same format as config flow, exactly one of 'description' or 'fix_flow' must be present)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Custom messages for specific description keys"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"options": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for the options flow (same format as config)"
|
||||||
|
},
|
||||||
|
"config_subentries": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for config subentry flows (map of subentry types, each with same format as config)",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"selector": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for selector options. The key is the translation_key set in SelectSelectorConfig. CRITICAL: Use selector.{translation_key}.options.{value}, NOT selector.select.{translation_key}",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"options": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Option label translations for select selectors. Keys must match the values passed in the options list.",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"unit_of_measurement": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Unit translations for number selectors",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for service actions",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Service action name"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Service action description"
|
||||||
|
},
|
||||||
|
"fields": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Field translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Field name"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Field description"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sections": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Collapsible section labels",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Section name"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"entity": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for entities",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Entity domain (sensor, binary_sensor, etc.)",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Entity translation_key",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Entity name (only for entities with has_entity_name=True)"
|
||||||
|
},
|
||||||
|
"state": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "State translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"state_attributes": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Entity state attribute translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Attribute name"
|
||||||
|
},
|
||||||
|
"state": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Attribute state translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"unit_of_measurement": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Unit of measurement translation (for sensor/number entities)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"entity_component": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for entity components (if integration provides entities under its domain)",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Device class or '_' for default",
|
||||||
|
"properties": {
|
||||||
|
"state": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "State translations for this device class",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"state_attributes": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Attribute name and state translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Attribute name"
|
||||||
|
},
|
||||||
|
"state": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Attribute state values",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"device": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for device names",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Device name (set device's translation_key to use this)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"device_automation": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for device automations",
|
||||||
|
"properties": {
|
||||||
|
"action_type": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Device action translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"condition_type": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Device condition translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"trigger_type": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Device trigger translations",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"trigger_subtype": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Device trigger subtype translations (e.g., button names)",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exceptions": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for HomeAssistantError and subclasses",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"message": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Exception message (supports placeholders)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"issues": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Translations for repairs issues",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"title": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Issue title"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Issue description (exactly one of 'description' or 'fix_flow' must be present)"
|
||||||
|
},
|
||||||
|
"fix_flow": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Repair flow translations (same format as config flow, exactly one of 'description' or 'fix_flow' must be present)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue