Shein Update Products
Version | Date | Created / Updated | Notes |
---|---|---|---|
v1.0 | Hristiyan | First publish | |
v1.1 | 02.08.2024 | Bogomil | Mapping Changes |
v1.2 | 15.08.2024 | Bogomil | Mapping Changes |
For product update we need to use the same API Call as the product create, however there is only difference in some of the request parameters.
All triggers, validations etc are as per the abstraction - Product Listing general requirements
API Call : POST /open-api/goods/product/publishOrEdit
API Docs : https://open.sheincorp.com/documents/apidoc/detail/3000266-1000001
Example Request Body: Please pay attention to the “” which must be applied as per the example response!
{
"brand_code": "254p8",
"category_id": "1732",
"edit_type": 1,
"multi_language_desc_list": [
{
"language": "en",
"description": "TEST DESCP<br>\n\n\n<br>\n\n\n"
}
],
"multi_language_name_list": [
{
"language": "en",
"name": "Test Product 2"
}
],
"product_attribute_list": [{
"attribute_id": 147,
"attribute_value_id": 1047
}],
"product_type_id": 72,
"site_list":[
{
"main_site":"shein",
"sub_site_list":[
"shein-uk"
]
}
],
"skc_list": [
{
"image_info": {
"image_info_list": [
{
"image_sort": 1,
"image_type": "1",
"image_url": "https://img.ltwebstatic.com/images3_spmp/2024/08/07/60/1723044738911fddcf68a451d56a42ad13a39ed7a1_square.jpg"
},
{
"image_sort": 2,
"image_type": "2",
"image_url": "https://img.ltwebstatic.com/images3_spmp/2024/08/07/33/1723044741e5d9ea106c212fdcefa8740d5844e3b6_square.jpg"
}
]
},"sale_attribute": {
"attribute_id": 27,
"attribute_value_id": 118
},
"skc_name": "sz2408098988881576",
"sku_list": [
{
"height": 0,
"length": 0,
"width": 15,
"weight": 1,
"mall_state": 1,
"sale_attribute_list": [],
"supplier_sku": "sku22",
"stop_purchase": 1,
"sku_code": "SPMP240809054953987",
"stock_info_list": [
{
"inventory_num": 11,
"supplier_warehouse_id": "PS8377568967"
}
],
"price_info_list": [
{
"base_price": 500,
"currency": "GBP",
"special_price": 250,
"sub_site": "shein-uk"
}
]
}
]
}
],
"spu_name": "z24080989888",
"suit_flag": 0,
"supplier_code": "sku22"
}
Request Mapping :
Shein Field | Required | Hemi Field | Comment | |||
---|---|---|---|---|---|---|
brand_code |
Yes | Product Account > Item Specific |
OR
Product Brand
| Product account is with priority we want to match the name and send the code.
We want to have internal validation if this is missing! |
| category_id
| | | | Yes | Product Account
> Primary Category ID
| We want to have internal validation if this is missing! |
| edit_type
| | | | Yes | Hardcoded as “1” | When sending this as “1” Shein will treat this as update for the product. |
| multi_language_desc_list
| | | | | | |
| | language
| | | Yes | Account Shein
> Country
| Shein support multi language descriptions so we need to have a logic and based on the account territory we need to send the iso2 country code. For example “en”.
Full mapping list here |
| | name
| | | Yes | Product Account
> Description
| We want to have internal validation if this is missing or more than 5000 characters |
| multi_language_name_list
| | | | | | |
| | language
| | | Yes | | Shein support multi language descriptions so we need to have a logic and based on the account territory we need to send the iso2 country code. For example “en”.
Full mapping list here |
| | name
| | | Yes | Product Account
> Title
| We want to have internal validation if this is missing or more than 1000 characters |
| product_attribute_list
| | | | | | |
| | attribute_id
| | | No | <v1.1>Product Account
> Item Specific Name
| part of Taxonomy
Based on the validation and mapping we need to push the actual ID |
| | attribute_value_id
| | | No | Product Account
> Item Specific Value
| part of Taxonomy
Based on the validation and mapping we need to push the actual ID</v1.1> |
| | attribute_extra_value
| | | No | N/A | |
| product_type_id
| | | | Yes | | Each category_id has a product_type_id that we need to send that corresponds to the selected category and we can do this via the Taxonomy. |
| site_list
| | | | | | |
| | main_site
| | | Yes | ‘shein’ | Hardcoded as ‘shein’ |
| | sub_site_list
| | | Yes | Account Shein > Country | We need to send the shein country code. See Shein Authorization and Limits for info on country codes. |
| skc_list
| | | | Yes | | |
| | image_info
| | | Yes | | |
| | | image_group_code
| | No | N/A | |
| | | image_info_list
| | Yes | | |
| | | | image_sort
| Yes | | The image sort. We need to make sure we are not sending duplicates so we can create a logic that will push every other image with next number. For example 1, 2, 3 etc |
| | | | image_type
| Yes | Shein Images
> Image type
| |
| | | | image_url
| Yes | Shein Images
> Shein Url
| |
| | sale_attribute
| | | Yes | | |
| | | attribute_id
| | Yes | Product Account
> Variation Specific Name
| We need to pick the variation specific but send the ID based on the taxonomy.
<v1.1>We also want to incorporate additional check and we when we have a case of more than one variation specific added for a variation group we need to validate them and the one which is with "attribute_label": 1 in the taxonomy to be included as sale_attribute
</v1.1> |
| | | attribute_value_id
| | Yes | Product Account
> Variation Specific Value
| We need to pick the value but send the ID based on the taxonomy.
<v1.1>We also want to incorporate additional check and we when we have a case of more than one variation specific added for a variation group we need to validate them and the one which is with "attribute_label": 1 in the taxonomy to be included as sale_attribute
</v1.1> |
| | skc_name | | | Yes | Item Account Shein > SKC | |
| | sku_list
| | | Yes | | |
| | | height
| | No | Product > Height(cm)
| Height - in centimeters |
| | | length
| | No | Product > Length(cm)
| Length - in centimeters |
| | | width
| | No | Product > Width(cm)
| Width - in centimeters |
| | | weight
| | Yes | Product > Weight(g)
| Weight - in grams
We want to have internal validation if this is missing! |
| | | mall_state
| | Yes | Product Account Shein
> Mall State
| New field in table.
Needs to have two options = On Sale and Out of sale.
If on sale we need to send mall_state
= 1
If out of sale we need to send mall_state
= 2
Default option should be On sale |
| | | sale_attribute_list
| | | | |
| | | | attribute_id
| No | Product Account
> Variation Specific Name
| We need to pick the variation specific but send the ID based on the taxonomy.
<v1.1>We also want to incorporate additional check and we when we have a case of more than one variation specific added for a variation group we need to validate them and the one which is with "attribute_label": 0 in the taxonomy to be included as sale_attribute_list
</v1.1> |
| | | | attribute_value_id
| No | Product Account
> Variation Specific Value
| We need to pick the value but send the ID based on the taxonomy.
<v1.1>We also want to incorporate additional check and we when we have a case of more than one variation specific added for a variation group we need to validate them and the one which is with "attribute_label": 0 in the taxonomy to be included as sale_attribute_list
</v1.1> |
| | | stop_purchase
| | Yes | | Hardcoded as “1” |
| | | sku_code | | Yes | Item Account > Channel Item Id | |
| | | supplier_sku
| | Yes | Product
> SKU
| |
| | | stock_info_list
| | | | |
| | | | inventory_num
| Yes | Product Account > Quantity
| |
| | | | supplier_warehouse_id
| Yes | Account Shein > Shein location
| If a location is not mapped we want to return internal error |
| | | price_info_list
| | | | |
| | | | base_price
| Yes | Product Account > Price OR Product Account > RRP
| If RRP > Price we want to pick the RRP |
| | | | currency
| Yes | Account > Exchange Rate Calculator Currency
| |
| | | | special_price
| Yes | Product Account > Price
| If RRP > Price we want to push this in the payload |
| | | | sub_site
| Yes | Account Shein > Country
| We need to send the shein country code. See Shein Authorization and Limits for info on country codes. |
| suit_flag
| | | | Yes | Product Account Shein
> Suit Flag
| New field.
Indicates if the product is a set or not. We should have two optoins 1: Yes 0: No . A set is buying an item that may include tops and bottom for example swimsuit.
Default option should be No on this field. |
| spu_name | | | | Yes | Item Account Shein > SPU | |
| supplier_code
| | | | Yes | <v1.2>Product Account > Variation Group
</v1.2> | |
Example success response :
{
"code": "0",
"msg": "OK",
"info": {
"success": true,
"spu_name": "z24080989888",
"skc_list": [
{
"skc_name": "sz2408098988881576",
"sku_list": [
{
"sku_code": "I725t0bki4n5",
"supplier_sku": "sku22"
}
]
}
],
"version": "SPMP240809063010897",
"pre_valid_result": null,
"mcc_valid_result": null,
"extra": {}
},
"bbl": null
}
Example error responses :
{
"code": "20100",
"msg": "Under the same SPU, SKC still has pending approval records, which cannot be released",
"info": null,
"bbl": null
}
{
"code": "20100",
"msg": "Under the same SPU, SKC still has pending approval records, which cannot be released",
"info": null,
"bbl": null
}
After successful product update we want to update the statuses accordingly and any errors we want to store as per the abstraction Product Listing general requirements.