47 lines
1.0 KiB
Python
47 lines
1.0 KiB
Python
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
from typing import Optional, List
|
|
|
|
class CampaignCreate(BaseModel):
|
|
name: str
|
|
template_id: int
|
|
list_id: int
|
|
scheduled_at: Optional[datetime] = None
|
|
|
|
class CampaignUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
status: Optional[str] = None
|
|
|
|
class CampaignResponse(BaseModel):
|
|
id: int
|
|
name: str
|
|
template_id: Optional[int]
|
|
list_id: Optional[int]
|
|
status: str
|
|
scheduled_at: Optional[datetime]
|
|
created_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class RecipientResponse(BaseModel):
|
|
id: int
|
|
campaign_id: int
|
|
contact_id: int
|
|
status: str
|
|
provider_message_id: Optional[str]
|
|
last_error: Optional[str]
|
|
updated_at: datetime
|
|
contact_phone: Optional[str] = None
|
|
contact_name: Optional[str] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
class CampaignPreview(BaseModel):
|
|
total_recipients: int
|
|
opted_in_count: int
|
|
dnd_count: int
|
|
eligible_count: int
|
|
sample_contacts: List[dict]
|