from pydantic import BaseModel, EmailStr, EmailStr, Field from typing import List, Optional from datetime import datetime class UserCreate(BaseModel): username: str email: EmailStr password: str brand_name: Optional[str] timezone: Optional[str] = None class UserResponse(BaseModel): username: str email: EmailStr brand_name: Optional[str] role: str = "user" plan: str = "free" trial_start_date: Optional[datetime] = None trial_end_date: Optional[datetime] = None subscription_start_date: Optional[datetime] = None subscription_end_date: Optional[datetime] = None status: str = "active" credits: int = 3 websites: List[str] = [] created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class SignupResponse(BaseModel): message: str user: UserResponse class UserLogin(BaseModel): email: EmailStr password: str timezone: Optional[str] = None class TokenResponse(BaseModel): access_token: str token_type: str = "bearer" class ForgotPasswordRequest(BaseModel): email: EmailStr class ResetPasswordRequest(BaseModel): email: EmailStr otp: str new_password: str = Field(..., min_length=6, description="Your new password")