Files
WhatsAppCentralizado/services/api-gateway/app/schemas/whatsapp.py
2026-01-29 10:56:35 +00:00

94 lines
1.9 KiB
Python

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