Skip to main content

Update Product

This endpoint allows you to update an existing product's details, including its variants, options, and other properties.

πŸ”Ή Endpoint Details​

PUT /api/v1/products/{productId}

Path Parameters​

ParameterTypeRequiredDescription
productIdstringYesThe unique identifier of the product to update

πŸ”’ Authentication​

HeaderRequiredDescription
Content-TypeYesMust be application/json
AuthorizationYesFormat: ONLIVESITE Credential:ONLIVEAccessKeyId, Signature=CalculatedSignature

πŸ“ Request Structure​

All fields are optional in the update request. Only provided fields will be updated.

πŸ“˜ Update Strategies​

  1. Partial Updates

    • Send only fields that need to change
    • Omitted fields remain unchanged
    • Arrays are replaced, not merged
  2. Variant Updates

    • Include variant id to update existing
    • Omit id to create new variant
    • Variants not included remain unchanged
  3. Option Updates

    • Can add new values to options
    • Cannot remove values in use
    • Full option array required when updating

🎯 Request Examples​

Basic Field Update​

{
"name": "Updated T-Shirt Name",
"descriptionHtml": "<p>New description</p>",
"active": false
}

Price Update Across Variants​

{
"variants": [
{
"id": "789e0123-c45b-67d8-e901-234567890000",
"price": 34.99
},
{
"id": "890f1234-d56c-78e9-f012-345678901111",
"price": 34.99
}
]
}

Add New Option and Variant​

{
"name": "Updated Premium T-Shirt",
"descriptionHtml": "<p>Updated product description</p>",
"images": [
"https://example.com/new-image1.webp"
],
"options": [
{
"name": "Size",
"values": ["Small", "Medium", "Large", "XLarge"]
},
{
"name": "Color",
"values": ["Black", "White", "Red"]
}
],
"variants": [
{
"id": "789e0123-c45b-67d8-e901-234567890000",
"sku": "TS-BLK-S",
"price": 34.99,
"stock": 75,
"selectedOptions": [
{
"name": "Size",
"value": "Small"
},
{
"name": "Color",
"value": "Black"
}
]
},
{
"sku": "TS-RED-XL",
"price": 34.99,
"currency": "EUR",
"stock": 25,
"selectedOptions": [
{
"name": "Size",
"value": "XLarge"
},
{
"name": "Color",
"value": "Red"
}
],
"images": [
"https://example.com/shirt-red-xl.webp"
]
}
],
"active": true,
"tags": ["premium", "apparel", "updated"]
}

Stock Management​

{
"variants": [
{
"id": "789e0123-c45b-67d8-e901-234567890000",
"stock": 75
}
]
}

πŸ“€ Response Format​

{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Updated Premium T-Shirt",
"descriptionHtml": "<p>Updated product description</p>",
"images": [
"https://example.com/new-image1.webp"
],
"options": [
{
"name": "Size",
"values": ["Small", "Medium", "Large", "XLarge"]
},
{
"name": "Color",
"values": ["Black", "White", "Red"]
}
],
"variants": [
{
"id": "789e0123-c45b-67d8-e901-234567890000",
"sku": "TS-BLK-S",
"price": 34.99,
"currency": "EUR",
"stock": 75,
"selectedOptions": [
{
"name": "Size",
"value": "Small"
},
{
"name": "Color",
"value": "Black"
}
]
},
{
"id": "890f1234-d56c-78e9-f012-345678901111",
"sku": "TS-RED-XL",
"price": 34.99,
"currency": "EUR",
"stock": 25,
"selectedOptions": [
{
"name": "Size",
"value": "XLarge"
},
{
"name": "Color",
"value": "Red"
}
],
"images": [
"https://example.com/shirt-red-xl.webp"
]
}
],
"price": 34.99,
"stock": 100,
"active": true,
"tags": ["premium", "apparel", "updated"],
"updatedAt": "2025-05-22T10:30:00Z"
}

πŸ“˜ Response Interpretation​

  1. Updated Fields

    • Only modified fields are shown
    • updatedAt reflects latest change
    • Price/stock recalculated automatically
  2. Variant Changes

    • Updated variants show new values
    • New variants get assigned IDs
    • Unchanged variants remain as is

πŸ“˜ Notes​

  • Only provided fields will be updated
  • Omitted fields retain their current values
  • Existing variants can be updated by providing their id
  • New variants can be added without an id
  • Options can be extended with new values
  • Each variant must maintain a unique combination of options
  • The product's total stock and price are automatically recalculated

βœ… Common Use Cases​

  • πŸ’° Price Updates: Modify prices across variants
  • πŸ“¦ Stock Management: Update inventory levels
  • 🎨 New Options: Add new size or color options
  • πŸ†• New Variants: Add variants for new option combinations
  • ⚑ Status Changes: Activate or deactivate products
  • πŸ“ Content Updates: Modify descriptions and images
  • 🏷️ Categorization: Update product tags or category

πŸ” Validation Rules​

  1. Product Updates

    • All fields are optional
    • New values must pass the same validation as create
    • Cannot remove options that are in use by variants
    • Must maintain at least one variant
  2. Variant Updates

    • Price must be positive
    • Stock must be non-negative
    • Option combinations must be unique
    • SKUs must be unique across all variants
  3. Option Updates

    • Can add new values to existing options
    • Cannot remove values used by existing variants
    • Option names must remain unique

❌ Error Responses​

400 Bad Request​

{
"statusCode": 400,
"message": "Invalid input",
"errors": [
{
"field": "price",
"message": "Price must be a positive number"
}
]
}

401 Unauthorized​

{
"statusCode": 401,
"message": "Invalid or missing authorization credentials"
}

403 Forbidden​

{
"statusCode": 403,
"message": "Insufficient permissions to update this product"
}

404 Not Found​

{
"statusCode": 404,
"message": "Product not found"
}

409 Conflict - Duplicate SKU​

{
"statusCode": 409,
"message": "A variant with this SKU already exists"
}

409 Conflict - Option In Use​

{
"statusCode": 409,
"message": "Cannot remove option that is in use by variants"
}

422 Validation Error​

{
"statusCode": 422,
"message": "Validation failed",
"errors": [
{
"field": "variants",
"message": "Product must have at least one variant"
}
]
}

πŸ” Update Scenarios​

1. Price Changes​

{
"variants": [
{
"id": "variant-id",
"price": 39.99
}
]
}

Effect: Updates single variant price

2. Add Option Value​

{
"options": [
{
"name": "Size",
"values": ["Small", "Medium", "Large", "XLarge"]
}
]
}

Effect: Adds new size option

3. Stock Adjustment​

{
"variants": [
{
"id": "variant-id",
"stock": 100
}
]
}

Effect: Updates variant stock level

4. Product Status​

{
"active": false
}

Effect: Deactivates product

πŸ’‘ Best Practices​

  1. Validation

    • Validate changes before submitting
    • Check option combinations
    • Verify variant SKUs
    • Test price/stock updates
  2. Performance

    • Batch variant updates
    • Minimize update frequency
    • Cache responses
    • Use partial updates
  3. Data Integrity

    • Maintain option consistency
    • Keep SKUs unique
    • Track variant IDs
    • Log significant changes