Skip to content

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.

handle = Field(title='Handle', description='URL-friendly product identifier.') class-attribute instance-attribute

URL-friendly product identifier.

title = Field(title='Title', description='Product title or name.') class-attribute instance-attribute

Product title or name.

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.