This commit is contained in:
Victor Alexandrovich Tsyrenschikov
2026-03-30 20:25:42 +05:00
parent 139f9f1bd2
commit 373ed28445
2449 changed files with 53602 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
"""Schema for event notification service.
https://yandex.ru/dev/dialogs/smart-home/doc/reference-alerts/resources-alerts.html
"""
from __future__ import annotations
from enum import StrEnum
import time
from typing import Union
from pydantic import BaseModel, ConfigDict, Field
from .base import APIModel
from .device import DeviceState
class CallbackStatesRequestPayload(APIModel):
"""Payload of request body for notification about device state change."""
user_id: str
devices: list[DeviceState]
class CallbackStatesRequest(APIModel):
"""Request body for notification about device state change."""
ts: float = Field(default_factory=time.time)
payload: CallbackStatesRequestPayload
class CallbackDiscoveryRequestPayload(APIModel):
"""Payload of request body for notification about change of devices' parameters."""
user_id: str
class CallbackDiscoveryRequest(APIModel):
"""Request body for notification about change of devices' parameters."""
ts: float = Field(default_factory=time.time)
payload: CallbackDiscoveryRequestPayload
class CallbackResponseStatus(StrEnum):
"""Status of a callback request."""
OK = "ok"
ERROR = "error"
class CallbackResponse(APIModel):
"""Response on a callback request."""
status: CallbackResponseStatus
error_code: str | None = None
error_message: str | None = None
CallbackRequest: type = Union[CallbackDiscoveryRequest, CallbackStatesRequest]