from pydantic import BaseModel, Field from typing import List, Dict, Any # Схема для ОДНОЙ цели в списке (для GET запроса) class Goal(BaseModel): id: int name: str type: str # Схема для ответа со списком целей class GoalListResponse(BaseModel): goals: List[Goal] # Схема для ОДНОЙ кастомной цели в запросе на создание (для POST) class CustomGoalIn(BaseModel): identifier: str = Field(..., description="Уникальный идентификатор JS-события") name: str = Field(..., max_length=255, description="Название цели, которое будет видно в Метрике") # Обновленная схема запроса на создание целей class GoalCreateRequest(BaseModel): goals: List[CustomGoalIn] # Схема для ОДНОЙ созданной цели в ответе class CreatedGoal(BaseModel): id: int name: str # Схема ответа после создания целей class GoalCreateResponse(BaseModel): created_goals: List[CreatedGoal] # --- Схемы для массового удаления --- class GoalDeleteRequest(BaseModel): """Схема запроса на массовое удаление целей.""" goal_ids: List[int] = Field(..., description="Список ID целей для удаления") class GoalDeleteResponse(BaseModel): """Схема ответа после массового удаления.""" deleted_count: int failed_ids: Dict[int, Any] message: str