from pydantic import BaseModel
from typing import List, Optional, Union, Literal, Dict, Any

class Property(BaseModel):
    property_id: str

class DataResponse(BaseModel):
    status: str = 'ok'
    message: str
    data: Union[List[Dict[str, Any]], Dict[str, Any]]

class CreateContent(Property):
    body: dict
    name: str
    content_id: Optional[str] = None
    json_preview: Optional[dict] = None

class CreateSMSContent(Property):
    name: str
    message: str
    content_id: Optional[str] = None
    sender_id: Optional[str] = None
    unicode: Optional[bool] = False

class CreateEmailContent(Property):
    name: str
    subject: str
    body: str
    content_id: Optional[str] = None
    from_email: Optional[str] = None
    from_name: Optional[str] = None
    is_html: Optional[bool] = False

class GetContent(Property):
    content_id: Union[Literal["all"], str]

class EmailUploadRequest(BaseModel):
    property_id: str
    file_name: str
    file_data: str  # base64 encoded string
    folder: Optional[str] = "email"