from __future__ import annotations from enum import Enum from typing import Any from pydantic import BaseModel, Field class Pagination(BaseModel): page: int per_page: int total: int total_pages: int has_next: bool has_prev: bool class CEFeature(str, Enum): PRESETS = "presets" DL_FIELDS = "dl_fields" CONDITIONS = "conditions" NOTIFICATIONS = "notifications" TASKS = "tasks" TASKS_DEFINITIONS = "tasks_definitions" def __str__(self) -> str: return self.value class CEAction(str, Enum): CREATE = "create" UPDATE = "update" DELETE = "delete" REPLACE = "replace" def __str__(self) -> str: return self.value class ConfigEvent(BaseModel): feature: CEFeature action: CEAction data: dict[str, Any] | list[dict[str, Any]] extras: dict[str, Any] = Field(default_factory=dict)