{
    "title": "products",
    "type": "object",
    "properties": {
        "id": {
            "type": "integer",
            "description": "Primary key, auto-increment"
        },
        "name": {
            "type": "string",
            "description": "Product name"
        },
        "slug": {
            "type": "string",
            "description": "URL slug, unique"
        },
        "description": {
            "type": "string",
            "description": "Short description for cards"
        },
        "long_description": {
            "type": "string",
            "description": "Full product description (HTML/markdown)"
        },
        "product_type": {
            "type": "string",
            "description": "physical | digital | hosting"
        },
        "price": {
            "type": "number",
            "description": "Current sale price"
        },
        "compare_at_price": {
            "type": "number",
            "description": "Original price for discount display"
        },
        "currency": {
            "type": "string",
            "description": "Currency code, default USD"
        },
        "category_id": {
            "type": "integer",
            "description": "FK to product_categories.id"
        },
        "tags": {
            "type": "string",
            "description": "Comma-separated tags"
        },
        "image_url": {
            "type": "string",
            "description": "Primary product image URL"
        },
        "gallery": {
            "type": "string",
            "description": "JSON-encoded array of additional image URLs"
        },
        "stock": {
            "type": "integer",
            "description": "Inventory count; -1 = unlimited (digital)"
        },
        "weight_grams": {
            "type": "integer",
            "description": "Product weight in grams, for shipping"
        },
        "sku": {
            "type": "string",
            "description": "Stock keeping unit code"
        },
        "download_url": {
            "type": "string",
            "description": "Digital product download URL (post-purchase)"
        },
        "whmcs_product_id": {
            "type": "integer",
            "description": "WHMCS product id for hosting add-ons"
        },
        "variants": {
            "type": "string",
            "description": "JSON-encoded variants config (e.g. size/color options)"
        },
        "is_active": {
            "type": "boolean",
            "description": "Whether product is published"
        },
        "featured": {
            "type": "boolean",
            "description": "Show on shop homepage as featured"
        }
    },
    "required": [
        "id",
        "name",
        "slug",
        "product_type",
        "price"
    ]
}