"""Schemas for FlowPilot survey submission.""" from datetime import datetime from typing import Any, Optional from pydantic import BaseModel, Field class SurveySubmission(BaseModel): """Incoming survey response from the public form.""" respondent_name: Optional[str] = Field(None, max_length=255) responses: dict[str, Any] = Field( ..., description="Question ID -> answer mapping. Values can be strings, lists, or numbers.", ) token: Optional[str] = Field(None, description="Invite token for tracking") class SurveySubmissionResponse(BaseModel): """Response after successful submission.""" message: str = "Thank you for your response!" id: str class SurveyInviteCreate(BaseModel): """Create a new survey invite.""" recipient_name: str = Field(..., min_length=1, max_length=255) recipient_email: Optional[str] = Field(None, max_length=255) send_email: bool = False class SurveyInviteResponse(BaseModel): """Invite details returned to admin.""" id: str token: str recipient_name: str recipient_email: Optional[str] status: str email_sent: bool created_at: datetime completed_at: Optional[datetime] survey_url: str class SurveyInviteStatus(BaseModel): """Public invite status check — minimal info.""" name: str status: str