59 lines
1.7 KiB
Python
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 |