diff --git a/app/api/v1/admin/vendors.py b/app/api/v1/admin/vendors.py index 025b978d..57fa8f62 100644 --- a/app/api/v1/admin/vendors.py +++ b/app/api/v1/admin/vendors.py @@ -11,7 +11,6 @@ Architecture Notes: import logging from fastapi import APIRouter, Body, Depends, Path, Query -from pydantic import BaseModel from sqlalchemy.orm import Session from app.api.deps import get_current_admin_api @@ -23,6 +22,8 @@ from app.services.vendor_service import vendor_service from models.database.user import User from models.schema.stats import VendorStatsResponse from models.schema.vendor import ( + LetzshopExportRequest, + LetzshopExportResponse, VendorCreate, VendorCreateResponse, VendorDetailResponse, @@ -366,13 +367,7 @@ def export_vendor_products_letzshop( ) -class LetzshopExportRequest(BaseModel): - """Request body for Letzshop export to pickup folder.""" - - include_inactive: bool = False - - -@router.post("/{vendor_identifier}/export/letzshop") +@router.post("/{vendor_identifier}/export/letzshop", response_model=LetzshopExportResponse) def export_vendor_products_letzshop_to_folder( vendor_identifier: str = Path(..., description="Vendor ID or vendor_code"), request: LetzshopExportRequest = None, diff --git a/models/schema/vendor.py b/models/schema/vendor.py index 8f9e4bbf..f121f6c3 100644 --- a/models/schema/vendor.py +++ b/models/schema/vendor.py @@ -293,3 +293,37 @@ class VendorSummary(BaseModel): # NOTE: Vendor ownership transfer schemas have been removed. # Ownership transfer is now handled at the Company level. # See models/schema/company.py for CompanyTransferOwnership and CompanyTransferOwnershipResponse. + + +# ============================================================================ +# LETZSHOP EXPORT SCHEMAS +# ============================================================================ + + +class LetzshopExportRequest(BaseModel): + """Request body for Letzshop export to pickup folder.""" + + include_inactive: bool = Field( + default=False, + description="Include inactive products in export" + ) + + +class LetzshopExportFileInfo(BaseModel): + """Info about an exported file.""" + + language: str + filename: str | None = None + path: str | None = None + size_bytes: int | None = None + error: str | None = None + + +class LetzshopExportResponse(BaseModel): + """Response from Letzshop export to folder.""" + + success: bool + message: str + vendor_code: str + export_directory: str + files: list[LetzshopExportFileInfo]