from __future__ import annotations from enum import Enum from typing import ClassVar, Literal from uuid import UUID from pydantic import BaseModel, ConfigDict, Field class AttachmentType(str, Enum): DOCUMENT = "document" REMINDER = "reminder" class ScheduleItemMetadataAttachment(BaseModel): model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid") name: str type: AttachmentType visible_to: list[UUID] = Field(default_factory=list) url: str | None = None note: str | None = None content: str | None = None class ScheduleItemMetadata(BaseModel): model_config: ClassVar[ConfigDict] = ConfigDict(extra="forbid") color: str | None = Field(default=None, pattern=r"^#[0-9A-Fa-f]{6}$") location: str | None = None notes: str | None = None attachments: list[ScheduleItemMetadataAttachment] = Field(default_factory=list) reminder_minutes: int | None = Field(default=None, ge=0, le=10080) version: Literal[1] = 1 class ScheduleItemStatus(str, Enum): ACTIVE = "active" COMPLETED = "completed" CANCELED = "canceled" ARCHIVED = "archived" class ScheduleItemSourceType(str, Enum): MANUAL = "manual" IMPORTED = "imported" AGENT_GENERATED = "agent_generated"