Skip to main content

Product Properties

This table defines the structure of the product entity, including all properties and their descriptions. Products in the system can have multiple variants, each representing a specific combination of options (e.g., size and color).

πŸ”‘ Core Properties​

PropertyTypeRequiredExampleDescription
namestringYes"Premium T-Shirt"Name of the product
activebooleanNotrueIndicates if the product is active
categorystringYes"Apparel"Category to which the product belongs
descriptionHtmlstringYes"<p>High-quality cotton t-shirt</p>"HTML description of the product
handlestringNo"premium-t-shirt"URL-friendly identifier

πŸ“˜ Interpretation​

  • name should be unique and descriptive
  • active controls visibility in listings (defaults to true)
  • category helps organize products in the catalog
  • descriptionHtml supports full HTML markup for rich descriptions
  • handle is auto-generated if not provided

🎯 Example Use Cases​

{
"name": "Premium T-Shirt",
"active": true,
"category": "Apparel",
"descriptionHtml": "<p>High-quality cotton t-shirt featuring:</p><ul><li>100% organic cotton</li><li>Premium stitching</li></ul>",
"handle": "premium-t-shirt"
}

🏷️ Identification​

PropertyTypeRequiredExampleDescription
externalIdstringNo"SHIRT-001"External identifier
tokenstringNo"prod_123abc"Token for identification
skustringNo"SKU123"Stock Keeping Unit
gtinstringNo"123456789"Global Trade Item Number

πŸ“˜ Interpretation​

  • externalId links to external systems
  • token is system-generated for internal reference
  • sku is used for inventory management
  • gtin supports standard product identification

πŸ’° Pricing & Stock​

PropertyTypeRequiredExampleDescription
pricenumberNo29.99Base price (derived from variants)
currencystringNo"EUR"Currency code (ISO 4217)
stocknumberNo100Total stock (summed from variants)

πŸ“˜ Interpretation​

  • price is automatically calculated from variants
  • currency must use standard ISO 4217 codes
  • stock is automatically summed from variant stocks

⚠️ Important Notes​

  • Prices should have max 2 decimal places
  • Currency must be consistent across variants
  • Stock cannot be negative

πŸ–ΌοΈ Media​

PropertyTypeRequiredExampleDescription
imagesstring[]Yes["https://example.com/shirt.webp"]Product images (WebP)
vodUrlstringNo"https://vod.example.com/123"Video on demand URL
urlstringNo"https://store.example.com/shirt"Product URL

πŸ“˜ Interpretation​

  • images must be WebP format for optimal performance
  • vodUrl supports product video content
  • url provides direct link to product page

πŸ–ΌοΈ Image Guidelines​

  • Minimum resolution: 800x800px
  • Maximum file size: 2MB
  • Format: WebP only
  • Aspect ratio: 1:1 (square)

🎨 Product Options​

Options define the available choices for variants (e.g., size, color). Each option has a name and possible values:

{
"options": [
{
"name": "Size",
"values": ["Small", "Medium", "Large"]
},
{
"name": "Color",
"values": ["Black", "White", "Red"]
}
]
}

πŸ“˜ Interpretation​

  • Option names must be unique per product
  • Values must be strings
  • At least one option value required
  • Options create variant matrix

πŸ“¦ Product Variants​

Each variant represents a specific combination of options with its own pricing and inventory:

PropertyTypeRequiredExampleDescription
externalIdstringNo"VAR-001"External variant ID
skustringNo"SKU123-BLK-L"Variant SKU
pricenumberYes29.99Variant price
currencystringYes"EUR"Currency code
stocknumberYes50Available stock
imagesstring[]Yes["https://example.com/black-l.webp"]Variant images
selectedOptionsOptionValue[]YesSee belowSelected option values

Selected Options Structure​

{
"variants": [
{
"sku": "TS-BLK-L",
"price": 29.99,
"currency": "EUR",
"stock": 50,
"images": ["https://example.com/black-l.webp"],
"selectedOptions": [
{
"name": "Size",
"value": "Large"
},
{
"name": "Color",
"value": "Black"
}
]
}
]
}

πŸ“˜ Interpretation​

  • Each variant must have unique option combinations
  • SKUs must be unique across all variants
  • Stock values must be non-negative
  • Prices must be positive
  • Images should show specific variant

πŸ“ Validation Rules​

  1. Core Properties

    • Name: 2-255 characters
    • Category: Must exist in system
    • Description: Valid HTML, max 50000 characters
  2. Options & Variants

    • At least one variant required
    • All option combinations must be unique
    • SKUs must be unique globally
    • Price > 0
    • Stock >= 0
  3. Media

    • At least one image required
    • Images must be WebP format
    • URLs must be HTTPS
    • Valid video URL for vodUrl

πŸ“˜ Notes​

  • Images must be in WebP format for optimal performance
  • Currency codes must follow ISO 4217 format (e.g., 'EUR', 'USD')
  • Price and stock are computed from variants
  • Provider type must be one of: 'onlive', 'shopify-private', 'shopify-public', 'moddo', 'prestashop', 'woocommerce'
  • HTML description should contain valid markup
  • Each variant must have a unique combination of options

βœ… Common Use Cases​

  • πŸͺ Product Setup: Create basic product with variants
  • 🎨 Custom Products: Configure multiple options and variants
  • πŸ“¦ Inventory Management: Track stock across variants
  • πŸ’° Price Management: Set different prices per variant
  • πŸ”„ E-commerce Integration: Connect with external platforms
  • 🏷️ Product Organization: Use categories and tags
  • πŸ–ΌοΈ Media Management: Handle product and variant images