mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-01 03:31:25 +02:00
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import Optional
|
|
|
|
|
|
class CloudLoginRequest(BaseModel):
|
|
"""Request to initiate cloud login."""
|
|
email: str = Field(..., description="Bambu Lab account email")
|
|
password: str = Field(..., description="Account password")
|
|
region: str = Field(default="global", description="Region: 'global' or 'china'")
|
|
|
|
|
|
class CloudVerifyRequest(BaseModel):
|
|
"""Request to verify login with 2FA code."""
|
|
email: str = Field(..., description="Bambu Lab account email")
|
|
code: str = Field(..., description="6-digit verification code from email")
|
|
|
|
|
|
class CloudLoginResponse(BaseModel):
|
|
"""Response from login attempt."""
|
|
success: bool
|
|
needs_verification: bool = False
|
|
message: str
|
|
|
|
|
|
class CloudAuthStatus(BaseModel):
|
|
"""Current authentication status."""
|
|
is_authenticated: bool
|
|
email: Optional[str] = None
|
|
|
|
|
|
class CloudTokenRequest(BaseModel):
|
|
"""Request to set access token directly."""
|
|
access_token: str = Field(..., description="Bambu Lab access token")
|
|
|
|
|
|
class SlicerSetting(BaseModel):
|
|
"""A slicer setting/preset."""
|
|
setting_id: str
|
|
name: str
|
|
type: str # filament, printer, process
|
|
version: Optional[str] = None
|
|
user_id: Optional[str] = None
|
|
updated_time: Optional[str] = None
|
|
|
|
|
|
class SlicerSettingsResponse(BaseModel):
|
|
"""Response containing slicer settings."""
|
|
filament: list[SlicerSetting] = []
|
|
printer: list[SlicerSetting] = []
|
|
process: list[SlicerSetting] = []
|
|
|
|
|
|
class CloudDevice(BaseModel):
|
|
"""A bound printer device."""
|
|
dev_id: str
|
|
name: str
|
|
dev_model_name: Optional[str] = None
|
|
dev_product_name: Optional[str] = None
|
|
online: bool = False
|