# models/schema/marketplace_products.py - Simplified validation from datetime import datetime from typing import List, Optional from pydantic import BaseModel, ConfigDict, Field from models.schema.inventory import ProductInventorySummary class MarketplaceProductBase(BaseModel): marketplace_product_id: Optional[str] = None title: Optional[str] = None description: Optional[str] = None link: Optional[str] = None image_link: Optional[str] = None availability: Optional[str] = None price: Optional[str] = None brand: Optional[str] = None gtin: Optional[str] = None mpn: Optional[str] = None condition: Optional[str] = None adult: Optional[str] = None multipack: Optional[int] = None is_bundle: Optional[str] = None age_group: Optional[str] = None color: Optional[str] = None gender: Optional[str] = None material: Optional[str] = None pattern: Optional[str] = None size: Optional[str] = None size_type: Optional[str] = None size_system: Optional[str] = None item_group_id: Optional[str] = None google_product_category: Optional[str] = None product_type: Optional[str] = None custom_label_0: Optional[str] = None custom_label_1: Optional[str] = None custom_label_2: Optional[str] = None custom_label_3: Optional[str] = None custom_label_4: Optional[str] = None additional_image_link: Optional[str] = None sale_price: Optional[str] = None unit_pricing_measure: Optional[str] = None unit_pricing_base_measure: Optional[str] = None identifier_exists: Optional[str] = None shipping: Optional[str] = None currency: Optional[str] = None marketplace: Optional[str] = None vendor_name: Optional[str] = None class MarketplaceProductCreate(MarketplaceProductBase): marketplace_product_id: str = Field(..., description="MarketplaceProduct identifier") title: str = Field(..., description="MarketplaceProduct title") # Removed: min_length constraints and custom validators # Service will handle empty string validation with proper domain exceptions class MarketplaceProductUpdate(MarketplaceProductBase): pass class MarketplaceProductResponse(MarketplaceProductBase): model_config = ConfigDict(from_attributes=True) id: int created_at: datetime updated_at: datetime class MarketplaceProductListResponse(BaseModel): products: List[MarketplaceProductResponse] total: int skip: int limit: int class MarketplaceProductDetailResponse(BaseModel): product: MarketplaceProductResponse inventory_info: Optional[ProductInventorySummary] = None