put
https://{Host}/v2/product/skus
Create or update a list of product SKUs.
This API allows you to update product SKUs in bulk. You can update up to 100 SKUs per request. The SKU code serves as the identifier and cannot be changed. EAN codes are also immutable and cannot be updated.
Field Editability
| Field | Editable? |
|---|---|
| sku | ✗ |
| ean | ✗ |
| ouCode | ✗ |
| price | ✓ |
| description | ✓ |
| longDescription | ✓ |
| brandCode | ✓ |
| categoryCode | ✓ |
| imageUrl | ✓ |
| returnable | ✓ |
| returnableDays | ✓ |
| attributes | ✓ |
Example request
curl --location --request PUT 'https://{Host}/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
{
"sku": "Colour",
"price": "100",
"ouCode": "krishna.ou1",
"description": "tesht sku",
"longDescription": "detailed description",
"brandCode": "Airpods",
"categoryCode": "Apparel",
"attributes": [
{
"code": "producttype",
"value": "plastic"
}
],
"returnable": "true",
"returnableDays": "2",
"imageUrl": "http://newimage.com/abc.png"
}
]
'curl --location --request PUT 'https://nightly.intouch.capillarytech.com/v2/product/skus' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic bmVlcmFqa3Jpc2huYTpkY2VhNmU1ODlhM2U0M2JhODdkMTFkMTM2ODI2NmMxOQ==' \
--data '[
{
"sku": "SKU-1",
"ean": "EAN-1",
"price": "100",
"ouCode": "krishna.ou1",
"description": "tesht sku",
"longDescription": "detailed description",
"brandCode": "Airpods",
"attributes": [
{
"code": "producttype12",
"value": "producttypecode1"
}
],
"returnable": "true",
"returnableDays": "2",
"imageUrl": "http://newimage.com/abc.png"
},
{
"sku": "shirt-1",
"ean": "EAN-1",
"price": "100",
"ouCode": "krishna.ou1",
"description": "tesht sku",
"longDescription": "detailhed description",
"brandCode": "Airpods",
"attributes": [
{
"code": "producttype12",
"value": "producttypecode1"
}
],
"returnable": "true",
"returnableDays": "2",
"imageUrl": "http://newimage.com/abc.png"
}
]
'Prerequisites
To enable OU support for product entities, you must create a JIRA ticket and enable the configCONF_OU_LEVEL_PRODUCTS_ENABLED. For more information, see Configuring Organisation Unit (OU) support for product entities.
Body parameters
| Field | Type | Required | Description | Update Support |
|---|---|---|---|---|
| sku | string | Yes | Defines the unique identifier for the product article (e.g., "TSHIRT-RED-001"). This field is mandatory and cannot be changed once created, and limited to 50 characters. | No |
| ouCode | string | Optional | Specifies the concept code of the organisation unit. This is applicable only if OU support for product inventory is enabled. For more information, see OU support for product inventory. | No |
| price | decimal | Optional | Indicates the monetary value or cost assigned to the SKU. Must be a positive value or zero; if not provided, the system defaults it to 0 and issues a warning. | Yes |
| description | string | Optional | Defines a short text summary for the item (e.g., "Men's Cotton Polo Shirt"). This is an optional field typically limited to 100 characters. | Yes |
| longDescription | string | Optional | Specifies comprehensive details about the SKU, such as materials or care instructions. There is no strict character limit. | Yes |
| imageUrl | string | Optional | Indicates the web address for the product's image asset. - Must be a valid URL supporting formats like JPG, JPEG, and PNG (EXE or PDF are rejected). | Yes |
| returnable | boolean | Optional | Defines whether the product is eligible for return according to company policy. Defaults to the standard organizational policy if not explicitly passed. | Yes |
| returnableDays | integer | Optional | Specifies the duration of the window during which a customer can return the item. - Defaults to -1 where the customer can return it on any further day. - Cannot be any value less than -1. | Yes |
| brandCode | string | Optional | Defines the identifier for the brand associated with the product. The brand must be pre-created via Add product API; the SKU creation will fail if the code is invalid or non-existent. | Yes |
| categoryCode | string | Optional | Specifies the classification code for hierarchical product grouping (e.g., "Electronics > Audio"). The category must already exist in the system. | Yes |
| attributes | array | Optional | Indicates an array of custom key-value pairs used for additional product specifications. attributes must be already created via Add attribute API in the specific org. | Yes |
| ..code | string | Conditional | Defines the unique identifier for a specific custom attribute. - Required if the attributes array is used. - Max 50 characters. | Yes |
| ..value | string | Conditional | Specifies the actual data assigned to the attribute code, required if attributes are used, and must be a valid, pre-existing value associated with that attribute code. | Yes |
| ean | string | Optional | Specifies the European Article Number, acting as a unique barcode identifier. It is mandatory, must be unique across the request, and cannot be updated via PUT requests. | No |
API Quick Reference
{{host_v2_product_skus_put}}
└─ {{RequestBody}} (Batch Array)
├─ {{sku}} (string)
├─ {{ean}} (string)
├─ {{price}} (decimal)
├─ {{description}} (string)
├─ {{longDescription}} (string)
├─ {{ouCode}} (string)
├─ {{brandCode}} (string)
├─ {{categoryCode}} (string)
├─ {{imageUrl}} (string)
├─ {{returnable}} (boolean)
├─ {{returnableDays}} (integer)
├─ {{attributes}} []
│ ├─ {{attributeCode}} (string)
│ └─ {{attributeValue}} (string)
└─ {{ResponseBody}}
├─ {{updated}} []
│ ├─ {{responseId}} (integer)
│ ├─ {{responseCode}} (string)
│ ├─ {{responseOuCode}} (string)
│ └─ {{responseOuId}} (integer)
├─ {{summary}}
│ ├─ {{totalRequested}} (integer)
│ ├─ {{successCount}} (integer)
│ └─ {{failureCount}} (integer)
├─ {{warnings}} []
└─ {{errors}} []
├─ {{errorCode}} (integer)
├─ {{errorMessage}} (string)
└─ {{errorIdentifiers}} (object)Example response
{
"updated": [
{
"ouCode": "krishna.ou1",
"id": 32510109,
"ouId": 50025951,
"code": "1212jo12212"
},
{
"ouCode": "krishna.ou1",
"id": 32510514,
"ouId": 50025951,
"code": "shirt"
}
],
"summary": {
"totalRequested": 2,
"successCount": 2,
"failureCount": 0
},
"warnings": [],
"errors": []
}
Response parameters
| Field | Type | Description |
|---|---|---|
| updated | array | Contains the list of successfully updated ProductSKU objects. |
| ..id | long | Indicates the unique identifier for the SKU. |
| ..ouId | long | Indicates the Organization unit ID. Returns -1 for organization-level SKUs. |
| ..code | string | Specifies the SKU code. |
| summary | object | Provides summary statistics for the bulk operation. |
| ..totalRequested | integer | Indicates the total number of SKUs in the request. |
| ..successCount | integer | Indicates the number of SKUs successfully updated. |
| ..failureCount | integer | Indicates the number of SKUs that failed validation. |
| warnings | array | Lists warning status codes for non-blocking issues. |
| errors | array | Lists error status codes for SKUs that failed validation. |
| ..code | integer | Indicates the specific error code. |
| ..message | string | Describes the error message. |
| ..identifiers | object | Specifies the SKU identifiers related to the error. |
Error codes
| Code | Description |
|---|---|
| 9175 | Indicates that the batch size cannot exceed 100 SKUs. |
| 9176 | Indicates that the batch cannot be empty. |
| 9223 | Indicates that the SKU with the provided code was not found. |
| 9222 | Indicates that the EAN cannot be updated as the field is immutable. |
| 9207 | Indicates that the price is invalid and must be a positive value. |
| 9217 | Indicates that the image URL exceeds the maximum allowed length. |
| 9221 | Indicates that the brand with the provided code was not found. |
| 9220 | Indicates that the category with the provided code was not found. |
| 9218 | Indicates that the attribute with the provided code was not found. |
| 9210 | Indicates that the image URL format is invalid. |
