Edit Products
This is the new version of edit products endpoint. This endpoint just need to pass field that needed to edit into payload request. This endpoint canβt edit/update name
for the product that already has a transaction.
Pathβ
patch
/v3/products/fs/:fs_id/edit
Request Parametersβ
Parameter | Type | Required | Location | Description |
---|---|---|---|---|
fs_id | Integer | Required | path | Fulfillment service unique identifier |
shop_id | Integer | Required | path | Shop unique identifier |
products | Object Array | Required | body | Product object array |
Where products
object contain
Parameter | Type | Required | Location | Description |
---|---|---|---|---|
id | Integer | Required | body | Product Identifier |
sku | String | Required | body | The stock keeping unit for the product. Maximum characters allowed is 50 |
name | String | Optional | body | Name of the product with length less than or equals 70 characters |
category_id | Integer | Optional | body | Unique identifier for the productβs category. To get available categories, please check Get All Categories Please input the deepest category child ID |
price_currency | String | Optional | body | Currency code for stated price ( IDR or USD ) |
price | Integer | Optional | body | The possible value between 100 to 100.000.000. If the product variant is added, the price parameter is automatically set to the lowest price among the variant products |
status | String | Required | body | Status for the product with LIMITED value |
min_order | Integer | Optional | body | Minimum order required to purchase the product. Can only be a positive integer |
weight | Float | Optional | body | Weight of the product |
weight_unit | String | Optional | body | The unit of the weight with the following available value GR (gram) |
condition | String | Optional | body | The condition of the product with the following available values NEW and USED |
dimension | Object | Optional | body | Dimension of the product. The object contains height , width , and length . If want to use dimensions then three of this object must be filled |
custom_product_logistics | Integer Array | Optional | body | Custom product logistics of the product. To get the id, please check Get Active Courier. Required field to input just ShippingProductID value responses from Get Active Courier. Remove custom_product_logistics from related product by passing empty array ([]) in this request |
annotations | String Array | Optional | body | Product Specification (anotations) By Category ID. The value is array of annotations id that can be retrieve by hit endpoint Get Product Annotation by Category ID. The location of id is at values.id. Remove annotations from related product by passing empty array (ββ) in this request |
etalase | Object | Required | body | Etalase or Showcase of the product. The object contains id and name . To get available Showcase, please check Get Showcase. Required field to input just id with etalase_id responses from Get Showcase |
description | String | Optional | body | Description of the product. Maximum characters allowed is 2000 |
is_must_insurance | Boolean | Required | body | Determine if the product must be insured ( true ) or not (false ) |
stock | Integer | Optional | body | The stock of the product. 0 indicates always available. Other than that, the possible values are from 1 to 1000 . Stock should be 1 if want to add variant product |
wholesale | Object Array | Optional | body | Wholesale price and quantity of the product. The object keys includes: min_qty and price . Remove wholesale from related product by passing empty array ([]) in this request |
preorder | Object | Optional | body | Preorder information. The object keys includes: is_active , duration , and time_unit . Remove preorder from related product by passing empty object ({}) in this request |
pictures | Object Array | Optional | body | Images information of the product. The object keys includes: Image URL . Remove pictures from related product by passing empty array ([]) in this request |
videos | Object Array | Optional | body | Video link of the product. The object keys includes: url and source . url should only contain the YouTube video id e.g. dQw4w9WgXcQ. Where the type type should be youtube . Remove videos from related product by passing empty array ([]) in this request |
variant | Required* | Optional | body | Variant of the product. The object keys includes: variant and product_variant . There are some field in variant entity that mandatory. For more detail please refer to this link |
Example Requestβ
- Curl
curl -X PATCH \
'https://fs.tokopedia.net/v3/products/fs/13004/edit?shop_id=479573' \
-H 'Authorization: Bearer C-UMqWWXRqaJugr7w5U0zQ' \
-H 'Content-Type: application/json' \
-d '{
"products":[
{
"id":1,
"Name":"Product Testing V3 1.40",
"condition":"NEW",
"Description":"Product Testing Descr V2",
"sku":"TST21",
"price":10000,
"status":"LIMITED",
"stock":900,
"min_order":1,
"category_id":562,
"dimension":{
"height":2,
"width":3,
"length":4
},
"custom_product_logistics":[24,4,64],
"annotations":["1"],
"price_currency":"IDR",
"weight":200,
"weight_unit":"GR",
"is_must_insurance":false,
"menu":{
"id":1402922
},
"pictures":[
{
"file_path":"https://ecs7.tokopedia.net/img/cache/700/product-1/2017/9/27/5510391/5510391_9968635e-a6f4-446a-84d0-ff3a98a5d4a2.jpg"
}
],
"wholesale":[
{
"min_qty":2,
"price":9500
},
{
"min_qty":3,
"price":9000
}
],
"variant":{
"products":[
{
"is_primary":true,
"status":"LIMITED",
"price":10000,
"stock":500,
"sku":"TST21",
"combination":[
0
],
"pictures":[
{
"file_path":"https://ecs7.tokopedia.net/img/cache/700/product-1/2017/9/27/5510391/5510391_9968635e-a6f4-446a-84d0-ff3a98a5d4a2.jpg"
}
]
},
{
"status":"LIMITED",
"price":10000,
"stock":400,
"sku":"TST21",
"combination":[
1
],
"pictures":[
{
"file_path":"https://ecs7.tokopedia.net/img/cache/700/product-1/2017/9/27/5510391/5510391_9968635e-a6f4-446a-84d0-ff3a98a5d4a2.jpg"
}
]
}
],
"selection":[
{
"id":6,
"unit_id":7,
"options":[
{
"hex_code":"",
"unit_value_id":23,
"value":"XS"
},
{
"hex_code":"",
"unit_value_id":24,
"value":"S"
}
]
}
],
"sizecharts":[
{
"file_path":"https://ecs7.tokopedia.net/img/cache/700/product-1/2017/9/27/5510391/5510391_9968635e-a6f4-446a-84d0-ff3a98a5d4a2.jpg"
}
]
}
}
]
}'
Response Parametersβ
Name | Type | Demo Value | Description |
---|---|---|---|
Integer | 1 | Total Data Count | |
Integer | 1 | Success Data Count | |
Integer | 0 | Fail Data Count | |
success_rows_data | Object Array | ||
failed_rows_data | Object Array |
Success Response Examplesβ
{
"header": {
"process_time": 0,
"messages": "Your request has been processed successfully"
},
"data": {
"total_data": 1,
"success_data": 1,
"fail_data": 0,
"success_rows_data": [
{
"product_id": 1,
"product_sku": "TST21"
}
]
}
}
Error Response Examplesβ
{
"header": {
"process_time": 0,
"messages": "Your request has been processed successfully"
},
"data": {
"total_data": 1,
"success_data": 0,
"fail_data": 1,
"failed_rows_data": [
{
"product_id": 1,
"product_name": "Product Testing V3 1.40",
"product_price": 10000,
"sku": "TST21",
"error": [
"Field [dimension.height] must be filled between 1-2000"
]
}
]
}
}
Error Codesβ
Error Code | Error Message | Description |
---|---|---|
PRD_GRPC_001 | Failed Send GRPC Request | Failed sending request to upstream |
PRD_GRPC_002 | There Are Error From Ext Service | Failed getting response from upstream |
PRD_USC_001 | fs_id Is Not Associated With Shop ID or Warehouse ID | fs_id not assosiated, please check again |
PRD_USC_028 | Product Status Not In Active or Warehouse. Edit Process Canceled | Unable to edit product because the status is not active or warehouse |
SHP_GRPC_001 | Failed Send GRPC Request | Failed sending request to upstream |
SHP_GRPC_003 | Data Not Found | Failed finding data from upstream |
Notesβ
Edit Products V2 and V3 Comparisonβ
Description | V2 | V3 |
---|---|---|
Execution Flow | Asynchronous. Need to hit endpoint Check Upload Status to get result | Synchronous. Create product result will show at this endpoint, no need to hit additional endpoint Check Upload Status |
Payload Request | Just need to pass field that needed to edit into payload request | Same as V2 but user can create product with additional information for product dimension, specification (annotations), and custom product logistics |
Maximun Bulk Payload | 25 | 1 |
JSON Response | Provide upload_id information. | Provide information total data, total success, and total fail. It also provide detail information of success data if succeeded or fail data if failed |
Mandatory Fields at Variant Entityβ
User can exclude variant field that no need to edit but there are some field that need to pass into parameter whether the information of this field are not changes. If want to see detail explanation of how to use variant, please refer this link.
And also, when there is a new or edited variant, user need to add weight
and weight_unit
into those variant payload.
Below are the detail of required or optional field at variant entity :
Productsβ
Parameter | Type | Required |
---|---|---|
is_primary | Integer | Required for variant that need to be primary product |
price | Integer | Required |
stock | Integer | Required |
sku | String | Required |
weight | Float | Required for a new or edited variant |
weight_unit | String | Required for a new or edited variant |
combination | Integer Array | Required |
pictures | Object Array | Required |
Selectionβ
Parameter | Type | Required |
---|---|---|
id * | Integer | Required |
unit_id * | Integer | Required |
hex_code * | String | Required |
unit_value_id * | Integer | Required |
value | String | Required |
*Several parameters such as id
, unit_id
and unit_value_id
are not required when partners create a custom variant. Please make sure that unit_value_id
is correct because we prioritized it over value
.
Sizechartsβ
Parameter | Type | Required |
---|---|---|
sizecharts | Object Array | Optional |