Marketplaces / Decathlon Technical Scope / Decathlon - Product management / Update Price

Update Price

Summary of Changes: (The purpose of this table is to keep traceability and Product team to highlight the things that were changed into the scope, based on comments or discussions)

Date Version Name Applied changes
28/09/2022 1.0 Bogomil Pavlov Initial version
06.02.23 1.1 Bogomil Pavlov Split the flow to two separate feeds with and without prices.

Additional Info updated. Changes in the mapping. |

The purpose of this page is to describe in details how we will send price updates to offers on MIRAKL.

We are able to send updates to an offer using the call for creating an offer (OF01), but we need to specify the value in update_delete field to be equal to “update“ ( "update_delete": "update")

API Call: /api/offers/imports

API Docs: https://ecathlonbelgium-preprod.mirakl.net/help/api-doc/seller/mmp.html#OF01

Mirakl Field Mirakl Notes Integration Required Hemi Field Comment
sku The offer’s unique identifier in the shop - Required - Maximum 40 characters, no "/" character Yes Product >SKU
product-id Unique product identifier for a given product-id-type - Required at offer creation - Maximum 40 characters Yes Product >EAN
product-id-type Yes Hardcoded as “ean“
price The selling price in the currency.

It is up to the operator to define with the seller whether the selling price includes or excludes taxes. Decimal number; a period is used to separate cents | Yes | Product Account > Price OR Product Account> RRP | we send Product Account > RRP If RRP is populated and is bigger than Price | | price-additional-info | | | | No | Product Account Decathlon > Price Additional Field | | | discount-price | | | | No | Product Account > Price | If RRP > Price

  1. If there are discount dates imported in Hemi we use them
  2. If there are no dates imported in Hemi we use the default dates (Now) and (Now + 2y) If RRP <= Price 3.We include the discount fields with empty values | | discount-start-date | | | | No | Product Account Decathlon >Discount Start Date | If RRP > Price and If we do not specify any dates in the relevant fields we hardcoded current date (“NOW“) Date format - 2017-02-20T10:45:53+01 If RRP <= Price We include the discount fields with empty values | | discount-end-date | | | | No | Product Account Decathlon >Discount End Date | If RRP > Price and If we do not specify any dates in the relevant fields we hardcode current date + 2 year (“NOW“ +2y) Date format - 2017-02-20T10:45:53+01 If RRP <= Price We include the discount fields with empty values | | state | | | The state code of the offer The accepted values are defined from the Mirakl back office | Yes | see notes | Mapping to our conditions: 11- New > 1000; 1-Excellent > 1500; 2-Very Good >4000; 3-Good >5000; 4-Sufficient >6000; 5-Refurbished_like_new > 2750 6-Refurnished_very_good >2500 7-Refurbished_good > 2000 8-Refurbished_acceptable > New state(condition) to be created in Hemi (8000) | | all-prices | | | | | | | | | pricing | | | | | | | | | channel-code | | | Account Decathlon > Channel | | | | | price | price[channel=GB] - Offer Price for channel GB | Required | Product Account > Price or Product Account > RRP | we send Product Account > RRP If RRP is populated and is bigger than Price | | | | discount-price | | Optional | If RRP and is bigger than Price we push our Product Account > Price | If RRP > Price
  3. If there are discount dates imported in Hemi we use them
  4. If there are no dates imported in Hemi we use the default dates (Now) and (Now + 2y) If RRP <= Price 3.We include the discount fields with empty values | | | | discount-start-date | | Optional | Product Account Decathlon > Discount Start Date | If RRP > Price and If we do not specify any dates in the relevant fields we hardcoded current date (“NOW“) Date format - 2017-02-20T10:45:53+01 If RRP <= Price We include the discount fields with empty values | | | | discount-end-date | | Optional | Product Account Decathlon > Discount End Date | If RRP > Price and If we do not specify any dates in the relevant fields we hardcode current date + 2 year (“NOW“ +2y) Date format - 2017-02-20T10:45:53+01 If RRP <= Price We include the discount fields with empty values |

Аfter successful product creation should have Channel Item ID, which for MIRAKL integration is the SKU!

We are able to update the price when we have the following internal statuses:

Product status = Product Published; Listing Status = Active; Update price - Pending

If update was successful, we will have following statuses:

Product status -Product Published ; Listing Status -Active ; Update Price - Not Needed

If we receive an error, we will have:

Product status -Product Published ; Listing Status -Active ; Update Price - Error

We must store the respectively error into the field “Update Price Error

Example Response:

{
  "import_id": 2035
}

After each successfully send feed for creation we will receive the feed id from the response and need to store it in Marketplace Feeds table.

Mirakl Field Hemi Field Comment
import_id Marketplace Feed > External ID
Marketplace Feed > Account For which account is the feed generated.
Marketplace Feed > Type Hardcoded as “Offer Stock Price Update“
Marketplace Feed > Submitted Date When the feed is submitted
Marketplace Feed > Sent Objects Count How many products we have pushed in the feed
Marketplace Feed > Completed Date When the feed is completed

Please note we will also add the feed objects which after processing need to be removed.

Additional Information:

For this integration we will need to make sure the protect flags are working as expected:

Protect Quantity (Stop all quantity updates) - Applicable for already created offers. If the offer is not created this flag is ignored. If Protect Quantity = Yes and Update Quantity = Pending - We skip the product If Protect Quantity = Yes and Update Price= Pending - We pick the product only for price update and do NOT include the quantity in the payload If Protect Quantity = Yes and List/Update the Whole Item = Pending - We pick the product for full update but do NOT include the quantity in the payload

Protect Price (Stop all price updates) -Applicable for already created offers. If the offer is not created this flag is ignored. If Protect Price = Yes and Update Quantity = Pending -We pick the product only for stock update and do NOT include the prices in the payload If Protect Price = Yes and Update Price= Pending - We skip the product If Protect Price = Yes and List/Update the Whole Item = Pending - We pick the product for full update but do NOT include the prices in the payload

Protect the whole item - (Stop all product updates apart from Quantity) -Applicable for already created offers. If the offer is not created this flag is ignored. If Protect the whole item = Yes and Update Quantity = Pending -We send the quantity only If Protect the whole item = Yes and Update Price= Pending - We skip the product If Protect the whole item = Yes and List/Update the Whole Item = Pending - We skip the product

Closed -will stop all the updates to the MPs apart from the end item (send 0 stock update). This flag applies for all products the ones which are created and all new products.

Is this article helpful?
0 0 0