Files
Victor Alexandrovich Tsyrenschikov 373ed28445 python
2026-03-30 20:25:42 +05:00

59 lines
1.7 KiB
Python

"""Schema for an API response for Yandex Smart Home."""
from __future__ import annotations
from enum import StrEnum
from typing import Optional, Any, Dict, Literal
from .base import APIModel
class ResponseCode(StrEnum):
"""Response code."""
DOOR_OPEN = "DOOR_OPEN"
LID_OPEN = "LID_OPEN"
REMOTE_CONTROL_DISABLED = "REMOTE_CONTROL_DISABLED"
NOT_ENOUGH_WATER = "NOT_ENOUGH_WATER"
LOW_CHARGE_LEVEL = "LOW_CHARGE_LEVEL"
CONTAINER_FULL = "CONTAINER_FULL"
CONTAINER_EMPTY = "CONTAINER_EMPTY"
DRIP_TRAY_FULL = "DRIP_TRAY_FULL"
DEVICE_STUCK = "DEVICE_STUCK"
DEVICE_OFF = "DEVICE_OFF"
FIRMWARE_OUT_OF_DATE = "FIRMWARE_OUT_OF_DATE"
NOT_ENOUGH_DETERGENT = "NOT_ENOUGH_DETERGENT"
HUMAN_INVOLVEMENT_NEEDED = "HUMAN_INVOLVEMENT_NEEDED"
DEVICE_UNREACHABLE = "DEVICE_UNREACHABLE"
DEVICE_BUSY = "DEVICE_BUSY"
INTERNAL_ERROR = "INTERNAL_ERROR"
INVALID_ACTION = "INVALID_ACTION"
INVALID_VALUE = "INVALID_VALUE"
NOT_SUPPORTED_IN_CURRENT_MODE = "NOT_SUPPORTED_IN_CURRENT_MODE"
ACCOUNT_LINKING_ERROR = "ACCOUNT_LINKING_ERROR"
DEVICE_NOT_FOUND = "DEVICE_NOT_FOUND"
class ResponsePayload(APIModel):
"""Base class for an API response payload."""
class Error(ResponsePayload):
"""Error payload."""
error_code: ResponseCode
error_message: Optional[str] = None
class SuccessActionResult(APIModel):
"""Represents a successful action result."""
status: Literal["DONE"] = "DONE"
class FailedActionResult(APIModel):
"""Represents a failed action result."""
status: Literal["ERROR"] = "ERROR"
error_code: ResponseCode
class Response(APIModel):
"""Base API response."""
request_id: Optional[str] = None
payload: Optional[Dict[str, Any]] = None