diff --git a/homeassistant/components/device_automation/__init__.py b/homeassistant/components/device_automation/__init__.py index d7b75d4fcd4..e24ae15f9ff 100644 --- a/homeassistant/components/device_automation/__init__.py +++ b/homeassistant/components/device_automation/__init__.py @@ -44,6 +44,8 @@ if TYPE_CHECKING: ] # mypy: allow-untyped-calls, allow-untyped-defs +GetAutomationsResult = list[dict[str, Any]] +GetAutomationCapabilitiesResult = dict[str, vol.Schema] DOMAIN = "device_automation" diff --git a/homeassistant/components/device_automation/action.py b/homeassistant/components/device_automation/action.py index 5261757c645..b15ca12a927 100644 --- a/homeassistant/components/device_automation/action.py +++ b/homeassistant/components/device_automation/action.py @@ -1,6 +1,7 @@ """Device action validator.""" from __future__ import annotations +from collections.abc import Awaitable from typing import Any, Protocol, cast import voluptuous as vol @@ -9,7 +10,12 @@ from homeassistant.const import CONF_DOMAIN from homeassistant.core import Context, HomeAssistant from homeassistant.helpers.typing import ConfigType -from . import DeviceAutomationType, async_get_device_automation_platform +from . import ( + DeviceAutomationType, + GetAutomationCapabilitiesResult, + GetAutomationsResult, + async_get_device_automation_platform, +) from .exceptions import InvalidDeviceAutomationConfig @@ -25,7 +31,6 @@ class DeviceAutomationActionProtocol(Protocol): self, hass: HomeAssistant, config: ConfigType ) -> ConfigType: """Validate config.""" - raise NotImplementedError async def async_call_action_from_config( self, @@ -35,7 +40,16 @@ class DeviceAutomationActionProtocol(Protocol): context: Context | None, ) -> None: """Execute a device action.""" - raise NotImplementedError + + def async_get_action_capabilities( + self, hass: HomeAssistant, config: ConfigType + ) -> GetAutomationCapabilitiesResult | Awaitable[GetAutomationCapabilitiesResult]: + """List action capabilities.""" + + def async_get_actions( + self, hass: HomeAssistant, device_id: str + ) -> GetAutomationsResult | Awaitable[GetAutomationsResult]: + """List actions.""" async def async_validate_action_config(