sendio/backend/app/schemas/campaign.py
2026-01-13 05:17:57 +02:00

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]