from pydantic import BaseModel from typing import Optional, List from uuid import UUID from datetime import datetime from app.models.whatsapp import AccountStatus, ConversationStatus, MessageType, MessageDirection, MessageStatus class WhatsAppAccountCreate(BaseModel): name: str class WhatsAppAccountResponse(BaseModel): id: UUID phone_number: Optional[str] name: str status: AccountStatus qr_code: Optional[str] created_at: datetime class Config: from_attributes = True class ContactResponse(BaseModel): id: UUID phone_number: str name: Optional[str] email: Optional[str] company: Optional[str] tags: List[str] created_at: datetime class Config: from_attributes = True class MessageResponse(BaseModel): id: UUID direction: MessageDirection type: MessageType content: Optional[str] media_url: Optional[str] status: MessageStatus is_internal_note: bool created_at: datetime class Config: from_attributes = True class ConversationResponse(BaseModel): id: UUID contact: ContactResponse status: ConversationStatus last_message_at: Optional[datetime] created_at: datetime class Config: from_attributes = True class ConversationDetailResponse(ConversationResponse): messages: List[MessageResponse] whatsapp_account: WhatsAppAccountResponse class SendMessageRequest(BaseModel): type: MessageType = MessageType.TEXT content: str media_url: Optional[str] = None class InternalEventRequest(BaseModel): type: str accountId: str data: dict class TransferToQueueRequest(BaseModel): queue_id: UUID class TransferToAgentRequest(BaseModel): agent_id: UUID class ResolveConversationRequest(BaseModel): csat_score: Optional[int] = None csat_feedback: Optional[str] = None class InternalNoteRequest(BaseModel): content: str