from pydantic import BaseModel class AdminPanelNavigationItem(BaseModel): label: str href: str description: str badge: str | None = None is_active: bool = False class AdminPanelQuickAction(BaseModel): label: str href: str button_class: str = "btn-outline-dark" class AdminPanelMetric(BaseModel): label: str value: str description: str class AdminPanelModuleCard(BaseModel): eyebrow: str title: str description: str status_label: str status_variant: str = "secondary" highlights: tuple[str, ...] = () cta_label: str | None = None href: str | None = None is_available: bool = False class AdminPanelSurfaceLink(BaseModel): method: str label: str href: str description: str class AdminPanelRoadmapItem(BaseModel): step: str title: str description: str status_label: str class AdminPanelHomeView(BaseModel): service: str app_name: str panel_title: str panel_subtitle: str environment: str version: str api_prefix: str release_label: str navigation: tuple[AdminPanelNavigationItem, ...] quick_actions: tuple[AdminPanelQuickAction, ...] metrics: tuple[AdminPanelMetric, ...] modules: tuple[AdminPanelModuleCard, ...] surface_links: tuple[AdminPanelSurfaceLink, ...] roadmap: tuple[AdminPanelRoadmapItem, ...] class AdminLoginPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str auth_endpoint: str email_placeholder: str password_placeholder: str access_token_ttl_label: str refresh_token_ttl_label: str password_policy_label: str security_highlights: tuple[str, ...] integration_notes: tuple[str, ...] class AdminToolReviewWorkflowStep(BaseModel): eyebrow: str title: str description: str status_label: str status_variant: str = "secondary" class AdminToolReviewPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str overview_endpoint: str contracts_endpoint: str review_queue_endpoint: str publications_endpoint: str workflow: tuple[AdminToolReviewWorkflowStep, ...] review_notes: tuple[str, ...] approval_notes: tuple[str, ...] activation_notes: tuple[str, ...] class AdminToolIntakeDomainOption(BaseModel): value: str label: str description: str class AdminToolIntakeParameterTypeOption(BaseModel): value: str label: str description: str class AdminToolIntakePageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str review_href: str intake_endpoint: str domain_options: tuple[AdminToolIntakeDomainOption, ...] parameter_type_options: tuple[AdminToolIntakeParameterTypeOption, ...] naming_rules: tuple[str, ...] submission_notes: tuple[str, ...] approval_notes: tuple[str, ...] class AdminCollaboratorManagementPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str collection_endpoint: str password_policy_label: str onboarding_notes: tuple[str, ...] governance_notes: tuple[str, ...] class AdminSystemConfigurationPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str overview_endpoint: str runtime_endpoint: str security_endpoint: str model_runtimes_endpoint: str functional_endpoint: str functional_detail_base: str bot_governance_endpoint: str access_notes: tuple[str, ...] governance_notes: tuple[str, ...] class AdminSalesRevenueReportsPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str sales_overview_endpoint: str revenue_overview_endpoint: str access_notes: tuple[str, ...] reading_notes: tuple[str, ...] class AdminRentalReportsPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str overview_endpoint: str access_notes: tuple[str, ...] reading_notes: tuple[str, ...] class AdminBotMonitoringPageView(BaseModel): app_name: str title: str subtitle: str environment: str version: str dashboard_href: str bot_flow_overview_endpoint: str telemetry_overview_endpoint: str access_notes: tuple[str, ...] reading_notes: tuple[str, ...]