Update product
Updates an existing product or component in the Sodtrack catalog, identified by its internal id or its sku.
/api/integration/productRequest
curl -X PATCH "https://dev.integration.cl.sodtrack-shared.sodtrack.com/api/integration/product" \
-H "Authorization: Bearer $SODTRACK_TOKEN" \
-H "origin: <your-origin>"Base URL: https://dev.integration.cl.sodtrack-shared.sodtrack.com · other environments
Headers
| Name | Type | Description |
|---|---|---|
origin | string | — |
Responses
{
"id": "316",
"sku": "COMP-0001",
"name": "Oil filter premium",
"description": "High-flow oil filter (updated)",
"category": "Filters",
"brand": "K&N",
"type": "component"
}Error responses for this endpoint follow the shared error reference.
Purpose
Updates an existing product or component in the Sodtrack catalog, identified by its internal id or its sku.
This is a partial update: only the fields you send are changed. The target product is selected through the product object, which specifies whether you are addressing it by internal id or by sku. The updated product is returned in full.
Authentication
| Header | Required | Description |
|---|---|---|
x-api-key | ✅ | External integration API key provided by Sodtrack. |
Field Definitions
🔎 Product selector
| Field | Type | Required | Description |
|---|---|---|---|
product | object | ✅ | Identifies the product/component to update. |
product.type | string | ✅ | One of: "productId", "productSku". Determines how product.value is interpreted. |
product.value | string | ✅ | Internal Sodtrack id when type is "productId", or the sku when type is "productSku". |
📦 Product (fields to update)
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ❌ | New display name. Left unchanged if omitted. |
description | string | ❌ | New description. Left unchanged if omitted. |
category | string | ❌ | Category name. Created automatically if it does not exist. |
brand | string | ❌ | Brand name. Created automatically if it does not exist. |
🏷️ Tags
| Field | Type | Required | Description |
|---|---|---|---|
tags | array | ❌ | When sent, replaces the product's full tag set. Omit to leave tags untouched. |
tags[].name | string | ✅ when a tag is sent | Tag name. Created automatically if it does not exist. |
tags[].value | string | ✅ when a tag is sent | Value assigned to the tag. |
Example Request — by sku
{
"product": { "type": "productSku", "value": "COMP-0001" },
"description": "High-flow oil filter (updated)",
"category": "Filters",
"brand": "K&N",
"tags": [
{ "name": "Warranty", "value": "24 months" }
]
}
Example Request — by internal id
{
"product": { "type": "productId", "value": "326" },
"name": "Oil filter premium"
}
Response Example
{
"id": "316",
"sku": "COMP-0001",
"name": "Oil filter premium",
"description": "High-flow oil filter (updated)",
"category": "Filters",
"brand": "K&N",
"type": "component"
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique Sodtrack identifier of the product. |
sku | string | Product/component code. |
name | string | Display name. |
description | string | Description, or null. |
category | string | Resolved category name, or null. |
brand | string | Resolved brand name, or null. |
type | string | "product" or "component". |
Error Responses
| HTTP Status | Error | Description |
|---|---|---|
400 Bad Request | InvalidParameters | The product selector is missing/invalid, or product.type is not "productId" / "productSku". |
401 Unauthorized | — | Missing or invalid x-api-key. |
404 Not Found | — | No product exists for the given id or sku. |
500 Internal Server Error | — | Unexpected server error. Contact Sodtrack support. |
Business Rules & Constraints
Product selection
product.type | product.value contains |
|---|---|
"productId" | The internal Sodtrack id of the product. |
"productSku" | The sku of the product. |
Only "productId" and "productSku" are supported. Any other selector type is rejected with 400 Bad Request.
Partial update
Only the fields present in the request are modified. Omitted fields keep their current values.
Tag replacement
When tags is included, the product's existing tags are replaced by the provided set. To keep current tags, omit the tags field. Sending an empty name/value is not valid.