36 lines
775 B
Python
36 lines
775 B
Python
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ActionRequest(BaseModel):
|
|
countdown: Optional[int] = Field(default=None, ge=0, description="Seconds for countdown")
|
|
sound: Optional[bool] = Field(default=None, description="Play sound alongside notification")
|
|
message: Optional[str] = Field(
|
|
default=None,
|
|
description="Optional message to show the user; falls back to default text.",
|
|
)
|
|
|
|
|
|
class ActionResponse(BaseModel):
|
|
user: str
|
|
action: str
|
|
dry_run: bool
|
|
steps: List[str]
|
|
logged_in: bool
|
|
|
|
|
|
class UserStatus(BaseModel):
|
|
user: str
|
|
logged_in: bool
|
|
|
|
|
|
class LoginRequest(BaseModel):
|
|
username: str
|
|
password: str
|
|
|
|
|
|
class LoginResponse(BaseModel):
|
|
token: str
|
|
expires_in: int
|