55"""
66
77from datetime import datetime
8- from enum import Enum
8+ from enum import Enum , IntEnum
99from typing import Dict , List , Optional , Any
1010
1111from pydantic import BaseModel
1212
1313
1414# Enums
15- class ProductStatusInputEnum (str , Enum ):
15+ class ProductStatusInputEnum (IntEnum ):
1616 """Product status input enum."""
17- DRAFT = "draft"
18- PUBLISHED = "published"
19- ARCHIVED = "archived"
20- REJECTED = "rejected"
21- PENDING = "pending"
17+ PUBLISHED = 2976
18+ UNPUBLISHED = 3790
19+ ILLEGAL = 4184
20+ PENDING_APPROVAL = 3568
2221
2322
2423class VendorSettingResponse (BaseModel ):
@@ -31,7 +30,6 @@ class VendorSettingResponse(BaseModel):
3130 updated_at : Optional [datetime ] = None
3231
3332
34- # Response Models
3533class ResultResponse (BaseModel ):
3634 """Result response model."""
3735 result : Optional [bool ] = None
@@ -78,7 +76,6 @@ class ProductListResponse(BaseModel):
7876 per_page : Optional [int ] = None
7977
8078
81- # Request Models
8279class VendorLegalDataSchema (BaseModel ):
8380 """Vendor legal data schema."""
8481 is_legal : Optional [bool ] = None
@@ -237,7 +234,6 @@ class ShippingMethodListResponse(BaseModel):
237234 per_page : Optional [int ] = None
238235
239236
240- # Image/Media Models
241237class ImageResponse (BaseModel ):
242238 """Image response model with different sizes."""
243239 id : Optional [int ] = None
@@ -267,7 +263,6 @@ class VideoDetailResponse(BaseModel):
267263 duration : Optional [int ] = None
268264
269265
270- # Location Models
271266class ProvinceResponse (BaseModel ):
272267 """Province response model."""
273268 name : Optional [str ] = None
@@ -282,7 +277,6 @@ class CityResponse(BaseModel):
282277 province : Optional [ProvinceResponse ] = None
283278
284279
285- # Status Models
286280class StatusResponse (BaseModel ):
287281 """Status response model."""
288282 name : Optional [str ] = None
@@ -332,7 +326,6 @@ class CategoryTypeResponse(BaseModel):
332326 description : Optional [str ] = None
333327
334328
335- # User Models
336329class PublicVendorSimpleResponse (BaseModel ):
337330 """Simple vendor response for nested user data."""
338331 id : Optional [int ] = None
@@ -404,7 +397,6 @@ class PrivateUserResponse(BaseModel):
404397 referrer_user_id : Optional [int ] = None
405398
406399
407- # Home Tab Settings
408400class HomeTabSettingsResponse (BaseModel ):
409401 """Home tab settings response model."""
410402 name : Optional [str ] = None
@@ -468,7 +460,6 @@ class PrivateVendorResponse(BaseModel):
468460 updated_at : Optional [datetime ] = None
469461
470462
471- # Individual product item for unsuccessful updates
472463class UnsuccessfulProductItem (BaseModel ):
473464 """Unsuccessful product item model."""
474465 id : Optional [int ] = None
@@ -583,9 +574,6 @@ class UpdateProductVariationSchema(BaseModel):
583574 sku : Optional [str ] = None
584575
585576
586- # UnitTypeResponse moved up to avoid forward reference issues
587-
588-
589577class ShippingDataResponse (BaseModel ):
590578 """Shipping data response model."""
591579 illegal_for_iran : Optional [bool ] = None
@@ -708,63 +696,62 @@ class ProductRevisionResponse(BaseModel):
708696
709697class ProductAttributeRequestItem (BaseModel ):
710698 """Product attribute request item model."""
711- attribute_id : Optional [ int ] = None
699+ attribute_id : int
712700 value : Optional [str ] = None
713701 selected_values : Optional [List [int ]] = None
714702
715703
716704class VariantPropertyRequestItem (BaseModel ):
717705 """Variant property request item model."""
718- value : Optional [ str ] = None
719- property : Optional [ str ] = None
706+ value : str
707+ property : str
720708
721709
722710class VariantRequestItem (BaseModel ):
723711 """Variant request item model."""
724- primary_price : Optional [ int ] = None
725- stock : Optional [ int ] = None
712+ primary_price : int
713+ stock : int
726714 sku : Optional [str ] = None
727- properties : Optional [ List [VariantPropertyRequestItem ]] = None
715+ properties : List [VariantPropertyRequestItem ]
728716
729717
730718class ShippingDataRequestItem (BaseModel ):
731719 """Shipping data request item model."""
732- illegal_for_iran : Optional [ bool ] = None
733- illegal_for_same_city : Optional [ bool ] = None
720+ illegal_for_iran : bool
721+ illegal_for_same_city : bool
734722
735723
736724class PackagingDimensionsRequestItem (BaseModel ):
737725 """Packaging dimensions request item model."""
738- height : Optional [int ] = None
739- length : Optional [int ] = None
740- width : Optional [int ] = None
741-
726+ height : int
727+ length : int
728+ width : int
742729
743730class ProductRequestSchema (BaseModel ):
744731 """Product request schema for create and update operations."""
745732 name : str
746- photo : Optional [ int ] = None
733+ photo : int
747734 photos : Optional [List [int ]] = None
748735 video : Optional [int ] = None
749736 brief : Optional [str ] = None
750- description : str
737+ description : Optional [ str ] = None
751738 order : Optional [int ] = None
752739 category_id : int
753- status : int
740+ status : ProductStatusInputEnum
754741 preparation_days : int = 1
755742 keywords : Optional [List [str ]] = None
756- weight : int
743+ weight : Optional [ int ] = None
757744 package_weight : int
758- primary_price : int
759- stock : int
745+ primary_price : Optional [ int ] = None
746+ stock : Optional [ int ] = None
760747 shipping_city_ids : Optional [List [int ]] = None
761748 shipping_method_ids : Optional [List [int ]] = None
762749 product_attribute : Optional [List [ProductAttributeRequestItem ]] = None
763750 virtual : Optional [bool ] = None
764751 variants : Optional [List [VariantRequestItem ]] = None
765752 shipping_data : Optional [ShippingDataRequestItem ] = None
766- unit_quantity : int
767- unit_type : int
753+ unit_quantity : Optional [ int ] = None
754+ unit_type : Optional [ int ] = None
768755 sku : Optional [str ] = None
769756 packaging_dimensions : Optional [PackagingDimensionsRequestItem ] = None
770757 is_wholesale : bool = False
0 commit comments