Initial Home Assistant commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
"""HTTP API endpoints for stored automation suggestions."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from aiohttp import web
|
||||
from homeassistant.components.http import HomeAssistantView
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from .store import async_get_suggestion_store
|
||||
|
||||
|
||||
class AISuggestionsView(HomeAssistantView):
|
||||
"""Return stored suggestions for Lovelace cards and dashboards."""
|
||||
|
||||
url = "/api/ai_automation_suggester/suggestions"
|
||||
name = "api:ai_automation_suggester:suggestions"
|
||||
requires_auth = True
|
||||
|
||||
async def get(self, request: web.Request) -> web.Response:
|
||||
hass: HomeAssistant = request.app["hass"]
|
||||
store = async_get_suggestion_store(hass)
|
||||
return self.json(await store.async_list())
|
||||
|
||||
|
||||
class AISuggestionActionView(HomeAssistantView):
|
||||
"""Update a suggestion action from the existing custom card."""
|
||||
|
||||
url = "/api/ai_automation_suggester/{action}/{suggestion_id}"
|
||||
name = "api:ai_automation_suggester:suggestion_action"
|
||||
requires_auth = True
|
||||
|
||||
async def post(self, request: web.Request, action: str, suggestion_id: str) -> web.Response:
|
||||
status_map = {
|
||||
"accept": "accepted",
|
||||
"decline": "declined",
|
||||
"dismiss": "dismissed",
|
||||
}
|
||||
if action not in status_map:
|
||||
return self.json({"success": False, "error": "Unsupported action"}, status_code=400)
|
||||
|
||||
hass: HomeAssistant = request.app["hass"]
|
||||
store = async_get_suggestion_store(hass)
|
||||
suggestion = await store.async_update_status(suggestion_id, status_map[action])
|
||||
if suggestion is None:
|
||||
return self.json({"success": False, "error": "Suggestion not found"}, status_code=404)
|
||||
return self.json({"success": True, "suggestion": suggestion})
|
||||
|
||||
|
||||
def async_register_http_views(hass: HomeAssistant) -> None:
|
||||
"""Register HTTP API views."""
|
||||
|
||||
hass.http.register_view(AISuggestionsView())
|
||||
hass.http.register_view(AISuggestionActionView())
|
||||
Reference in New Issue
Block a user