product_variant
konigle.models.commerce.product_variant
¶
Product variant models for the Konigle SDK.
This module provides Pydantic models for product variant resources including creation, update, and response models with comprehensive pricing and inventory validation.
ProductReference
¶
Bases: IDMixin
Reference model for a product.
Contains only the ID field for lightweight references.
ProductVariant
¶
Bases: ProductVariantBase, TimestampedResource, IDMixin, BaseResource
Complete product variant resource model.
Represents a product variant from the API with all fields including computed values, pricing, inventory, and Active Record capabilities.
barcode = Field(default=None, title='Barcode', description='Product barcode or UPC.')
class-attribute
instance-attribute
¶
Product barcode or UPC.
compare_at_price = Field(default=None, gt=0, max_digits=19, decimal_places=2, title='Original Price', description='Original price before discount.')
class-attribute
instance-attribute
¶
Original price before discount.
cost = Field(default=None, ge=0, max_digits=19, decimal_places=2, title='Cost', description='Cost of goods sold for this variant.')
class-attribute
instance-attribute
¶
Cost of goods sold for this variant.
currency = Field(default=None, max_length=3, title='Currency', description='Currency code for price fields.')
class-attribute
instance-attribute
¶
Currency code for price fields.
grams = Field(default=None, ge=0, title='Grams', description='Weight in grams.')
class-attribute
instance-attribute
¶
Weight in grams.
handle = Field(..., title='Handle', description='URL-friendly variant identifier.')
class-attribute
instance-attribute
¶
URL-friendly variant identifier.
image = Field(default=None, title='Image ID', description='ID of the variant-specific image.')
class-attribute
instance-attribute
¶
ID of the variant-specific image.
inventory_policy = Field(default=None, title='Inventory Policy', description='Policy for handling out-of-stock variants.')
class-attribute
instance-attribute
¶
Policy for handling out-of-stock variants.
inventory_quantity = Field(..., ge=0, title='Inventory Quantity', description='Available stock quantity.')
class-attribute
instance-attribute
¶
Available stock quantity.
option1 = Field(default=None, max_length=500, title='Option 1', description='First product option value (e.g., Size).')
class-attribute
instance-attribute
¶
First product option value (e.g., Size).
option2 = Field(default=None, max_length=500, title='Option 2', description='Second product option value (e.g., Color).')
class-attribute
instance-attribute
¶
Second product option value (e.g., Color).
option3 = Field(default=None, max_length=500, title='Option 3', description='Third product option value (e.g., Material).')
class-attribute
instance-attribute
¶
Third product option value (e.g., Material).
pathname = Field(default=None, title='Pathname', description='Full pathname of the product variant page')
class-attribute
instance-attribute
¶
Full pathname of the product variant page
position = Field(..., ge=1, title='Position', description='Display position in product variant list.')
class-attribute
instance-attribute
¶
Display position in product variant list.
preview_url = Field(default=None, title='Preview URL', description='Preview URL of the product variant page')
class-attribute
instance-attribute
¶
Preview URL of the product variant page
product = Field(..., title='Product ID', description='ID of the parent product.')
class-attribute
instance-attribute
¶
ID of the parent product.
seo_meta = Field(default=None, title='SEO Meta', description='SEO metadata for this variant.')
class-attribute
instance-attribute
¶
SEO metadata for this variant.
sku = Field(default=None, title='SKU', description='Stock Keeping Unit identifier.')
class-attribute
instance-attribute
¶
Stock Keeping Unit identifier.
taxable = Field(..., title='Taxable', description='Whether this variant is subject to taxes.')
class-attribute
instance-attribute
¶
Whether this variant is subject to taxes.
title = Field(..., title='Title', description='Variant title or name.')
class-attribute
instance-attribute
¶
Variant title or name.
url = Field(default=None, title='URL', description='Public URL of the produc variant page')
class-attribute
instance-attribute
¶
Public URL of the product variant page. Results in 404 if the product is not published.
weight = Field(default=None, ge=0, title='Weight', description='Variant weight for shipping calculations.')
class-attribute
instance-attribute
¶
Variant weight for shipping calculations.
weight_unit = Field(default=None, max_length=31, title='Weight Unit', description='Unit of measurement for weight.')
class-attribute
instance-attribute
¶
Unit of measurement for weight.
ProductVariantBase
¶
Bases: BaseModel
Base product variant model with truly shared fields.
Contains only fields that have the same optionality and validation requirements in both creation and response contexts.
content = Field(default_factory=dict, title='Content', description='Variant-specific content blocks in EditorJS format.')
class-attribute
instance-attribute
¶
Variant-specific content blocks in EditorJS format.
price = Field(..., gt=0, max_digits=19, decimal_places=2, title='Price', description='Variant selling price.')
class-attribute
instance-attribute
¶
Variant selling price.
ProductVariantCreate
¶
Bases: CreateModel, ProductVariantBase
Model for creating a new product variant.
All fields required for creation are included. Supports setting all variant fields including pricing, inventory, and images.
barcode = Field(default=None, title='Barcode', description='Product barcode or UPC.')
class-attribute
instance-attribute
¶
Product barcode or UPC.
compare_at_price = Field(default=None, gt=0, max_digits=19, decimal_places=2, title='Original Price', description='Original price before discount.')
class-attribute
instance-attribute
¶
Original price before discount.
cost = Field(default=None, ge=0, max_digits=19, decimal_places=2, title='Cost', description='Cost of goods sold for this variant.')
class-attribute
instance-attribute
¶
Cost of goods sold for this variant.
currency = Field(default=None, max_length=3, title='Currency', description='Currency code for price fields.')
class-attribute
instance-attribute
¶
Currency code for price fields.
grams = Field(default=None, ge=0, title='Grams', description='Weight in grams.')
class-attribute
instance-attribute
¶
Weight in grams.
image = Field(default=None, title='Image ID', description='ID of the main cover image of the variant.')
class-attribute
instance-attribute
¶
ID of the variant-specific image.
inventory_policy = Field(default='deny', title='Inventory Policy', description='Policy for handling out-of-stock variants.')
class-attribute
instance-attribute
¶
Policy for handling out-of-stock variants.
inventory_quantity = Field(default=1, ge=0, title='Inventory Quantity', description='Available stock quantity.')
class-attribute
instance-attribute
¶
Available stock quantity.
option1 = Field(default=None, max_length=500, title='Option 1', description='First product option value (e.g., Size).')
class-attribute
instance-attribute
¶
First product option value (e.g., Size).
option2 = Field(default=None, max_length=500, title='Option 2', description='Second product option value (e.g., Color).')
class-attribute
instance-attribute
¶
Second product option value (e.g., Color).
option3 = Field(default=None, max_length=500, title='Option 3', description='Third product option value (e.g., Material).')
class-attribute
instance-attribute
¶
Third product option value (e.g., Material).
position = Field(default=1, ge=1, title='Position', description='Display position in product variant list.')
class-attribute
instance-attribute
¶
Display position in product variant list.
seo_meta = Field(default_factory=(lambda: SEOMeta()), title='SEO Meta', description='SEO metadata for this variant.')
class-attribute
instance-attribute
¶
SEO metadata for this variant.
sku = Field(default=None, title='SKU', description='Stock Keeping Unit identifier.')
class-attribute
instance-attribute
¶
Stock Keeping Unit identifier.
taxable = Field(default=True, title='Taxable', description='Whether this variant is subject to taxes.')
class-attribute
instance-attribute
¶
Whether this variant is subject to taxes.
title = Field(default=None, title='Title', description='Variant title or name.')
class-attribute
instance-attribute
¶
Variant title or name.
weight = Field(default=None, ge=0, title='Weight', description='Variant weight for shipping calculations.')
class-attribute
instance-attribute
¶
Variant weight for shipping calculations.
weight_unit = Field(default=None, max_length=31, title='Weight Unit', description='Unit of measurement for weight.')
class-attribute
instance-attribute
¶
Unit of measurement for weight.
ProductVariantUpdate
¶
Bases: UpdateModel
Model for updating an existing product variant.
All fields are optional for partial updates.
barcode = Field(default=None, title='Barcode', description='Product barcode or UPC.')
class-attribute
instance-attribute
¶
Product barcode or UPC.
compare_at_price = Field(default=None, gt=0, max_digits=19, decimal_places=2, title='Compare At Price', description='Compare at price for displaying discounts.')
class-attribute
instance-attribute
¶
Compare at price for displaying discounts.
content = Field(default=None, title='Content', description='Variant-specific content blocks in JSON format.')
class-attribute
instance-attribute
¶
Variant-specific content blocks in JSON format.
cost = Field(default=None, ge=0, max_digits=19, decimal_places=2, title='Cost', description='Cost of goods sold for this variant.')
class-attribute
instance-attribute
¶
Cost of goods sold for this variant.
currency = Field(default=None, max_length=3, title='Currency', description='Currency code for price fields.')
class-attribute
instance-attribute
¶
Currency code for price fields.
grams = Field(default=None, ge=0, title='Grams', description='Weight in grams.')
class-attribute
instance-attribute
¶
Weight in grams.
handle = Field(default=None, max_length=255, title='Handle', description='URL-friendly variant identifier.')
class-attribute
instance-attribute
¶
URL-friendly variant identifier.
image = Field(default=None, title='Image ID', description='ID of the main image of the variant.')
class-attribute
instance-attribute
¶
ID of the main image of the variant.
inventory_policy = Field(default=None, max_length=255, title='Inventory Policy', description='Policy for handling out-of-stock variants.')
class-attribute
instance-attribute
¶
Policy for handling out-of-stock variants.
inventory_quantity = Field(default=None, ge=0, title='Inventory Quantity', description='Available stock quantity.')
class-attribute
instance-attribute
¶
Available stock quantity.
position = Field(default=None, ge=1, title='Position', description='Display position in product variant list.')
class-attribute
instance-attribute
¶
Display position in product variant list.
price = Field(default=None, gt=0, max_digits=19, decimal_places=2, title='Price', description='Variant selling price.')
class-attribute
instance-attribute
¶
Variant selling price.
seo_meta = Field(default=None, title='SEO Meta', description='SEO metadata for this variant.')
class-attribute
instance-attribute
¶
SEO metadata for this variant.
sku = Field(default=None, title='SKU', description='Stock Keeping Unit identifier.')
class-attribute
instance-attribute
¶
Stock Keeping Unit identifier.
tax_code = Field(default=None, title='Tax Code', description='Tax classification code.')
class-attribute
instance-attribute
¶
Tax classification code.
taxable = Field(default=None, title='Taxable', description='Whether this variant is subject to taxes.')
class-attribute
instance-attribute
¶
Whether this variant is subject to taxes.
title = Field(default=None, max_length=255, title='Title', description='Variant title or name.')
class-attribute
instance-attribute
¶
Variant title or name.
weight = Field(default=None, ge=0, title='Weight', description='Variant weight for shipping calculations.')
class-attribute
instance-attribute
¶
Variant weight for shipping calculations.
weight_unit = Field(default=None, max_length=31, title='Weight Unit', description='Unit of measurement for weight.')
class-attribute
instance-attribute
¶
Unit of measurement for weight.