from datetime import datetime from typing import Optional from pydantic import BaseModel, Field, validator class SecretBase(BaseModel): content: str = Field(..., description="The secret content to be shared") ttl_hours: Optional[int] = Field(24, description="Time to live in hours. Default is 24 hours.") @validator("ttl_hours") def validate_ttl_hours(cls, v): if v is not None and (v < 1 or v > 168): # Max 7 days (168 hours) raise ValueError("TTL must be between 1 and 168 hours (7 days)") return v class SecretCreate(SecretBase): pass class SecretRetrieve(BaseModel): access_key: str = Field(..., description="The access key to retrieve the secret") class SecretCreated(BaseModel): access_key: str = Field(..., description="The access key to retrieve the secret") expires_at: datetime = Field(..., description="When the secret will expire") secret_url: Optional[str] = Field(None, description="Full URL to retrieve the secret") class Config: orm_mode = True class SecretRead(BaseModel): content: str = Field(..., description="The secret content") created_at: datetime = Field(..., description="When the secret was created") class Config: orm_mode = True