v1
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from typing import Any, Optional
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class ContactLeadCreate(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=255)
|
||||
email: str
|
||||
phone: Optional[str] = Field(default=None, max_length=50)
|
||||
service: Optional[str] = Field(default=None, max_length=255)
|
||||
services: list[str] = Field(default_factory=list)
|
||||
petName: Optional[str] = Field(default=None, max_length=100)
|
||||
petBreed: Optional[str] = Field(default=None, max_length=100)
|
||||
location: Optional[str] = Field(default=None, max_length=100)
|
||||
serviceAreaStatus: Optional[str] = Field(default=None, max_length=32)
|
||||
message: Optional[str] = Field(default=None, max_length=5000)
|
||||
source: str = Field(default="contact_form", max_length=50)
|
||||
|
||||
|
||||
class ContactLeadResponse(BaseModel):
|
||||
id: uuid.UUID
|
||||
full_name: str
|
||||
email: str
|
||||
phone: Optional[str]
|
||||
requested_services: Optional[str]
|
||||
pet_name: Optional[str]
|
||||
pet_breed: Optional[str]
|
||||
suburb: Optional[str]
|
||||
service_area_status: Optional[str]
|
||||
message: Optional[str]
|
||||
source: str
|
||||
status: str
|
||||
notes: Optional[str]
|
||||
invited_at: Optional[datetime]
|
||||
invited_member_id: Optional[uuid.UUID]
|
||||
metadata_json: Optional[dict[str, Any]]
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
|
||||
model_config = {"from_attributes": True}
|
||||
|
||||
|
||||
class ContactLeadUpdate(BaseModel):
|
||||
status: Optional[str] = Field(default=None, max_length=32)
|
||||
notes: Optional[str] = Field(default=None, max_length=5000)
|
||||
|
||||
|
||||
class ContactLeadInviteRequest(BaseModel):
|
||||
send_email: bool = True
|
||||
|
||||
|
||||
class ContactLeadInviteResponse(BaseModel):
|
||||
lead: ContactLeadResponse
|
||||
member_id: uuid.UUID
|
||||
member_status: str
|
||||
Reference in New Issue
Block a user