41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
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 |