"""Schemas d'entree/sortie de l'API de partage.""" from __future__ import annotations from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from app.schemas.map import MapDocumentIn class ShareCreateIn(BaseModel): """Corps de POST /api/shares et de PUT /api/shares/{token}.""" model_config = ConfigDict(extra="forbid") title: str = Field(default="", max_length=255) map: MapDocumentIn class ShareCreatedOut(BaseModel): """Reponse renvoyee une seule fois, a la creation du partage. `management_token` n'est jamais renvoye ailleurs et n'apparait jamais dans une URL publique : il est conserve par le proprietaire. """ share_token: str management_token: str share_path: str title: str created_at: datetime updated_at: datetime class ShareUpdatedOut(BaseModel): share_token: str share_path: str title: str updated_at: datetime class SharePublicOut(BaseModel): """Vue publique : aucune information de gestion.""" share_token: str title: str map_version: int map: dict created_at: datetime updated_at: datetime