End Listing
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 | Applied changes | |
---|---|---|---|
28/09/2022 | 1.0 | Bogomil Pavlov | Initial Version |
01/02/2023 | 1.1 | Bogomil Pavlov | Additional Details updated |
The purpose of this page is to describe in details the process of deleting offers on MIRAKL.
Basically, for deleting an offer, again we will use the OF01 API Call BUT we need to specify
"update_delete": "delete"
API Call: /api/offers/imports
API Docs: https:///decathlonbelgium-preprod.mirakl.net/help/api-doc/seller/mmp.html#OF01
Mapping is the same as Update Stock
Аfter successful product creation should have Channel Item ID, which for MIRAKL integration is the SKU!
In Hemi, to delete an offer and send the update to MIRAKL, we should use the End listing flag and we should have the following product statuses:
Product status = Product Published ;End Listing = Yes
After successful deleted item we set the statuses as:
Product status = Product Removed ; Listing Status =Inactive; End listing = No
If error, we will have:
Product status = Product Published ; Listing Status = Active/Inactive; End Listing = Error
We need to store the particular error into End Listing error field.
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<offer_import_tracking>
<import_id>2035</import_id>
<product_import_id>2036</product_import_id>
</offer_import_tracking>
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 Delete“ | |
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.
- GET OF02 - Get information and statistics about an offer import
API Call: /api/offers/imports/{import}
API Docs:https://richemontit3-dev.mirakl.net/help/api-doc/seller/mmp.html#OF02
Parameter | Integration Notes / Value | Required |
---|---|---|
import |
Import identifier | Yes |
Using this call, we are able to check the status of the imported file.
Example Response:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<import>
<date_created>2019-04-01T15:16:31Z</date_created>
<has_error_report>false</has_error_report>
<import_id>2035</import_id>
<lines_in_error>0</lines_in_error>
<lines_in_pending>0</lines_in_pending>
<lines_in_success>1</lines_in_success>
<lines_read>1</lines_read>
<mode>NORMAL</mode>
<offer_deleted>0</offer_deleted>
<offer_inserted>1</offer_inserted>
<offer_updated>0</offer_updated>
<status>COMPLETE</status>
</import>
OF02 call is returning the response for the actual offer import (all offers).
Based on the response, we will need to check if we have to continue with the error report (if "has_error_report": true
) we continue with OF03, otherwise we treat it as success.
Success case:
Product status = Product Removed ; Listing Status =Inactive; End listing = No
Error case:
If "has_error_report": true
this means there is an error and we need to reach each of the reports in order to check for which item and what is the error.
Product status = Product Published ; Listing Status = Active/Inactive; End Listing = Error
and we need to store the relevant error in Product Account > End Listing Error field
- GET OF03 - Get the error report file for an offer import
In order to check if there are any errors related to the products, into imported file we should use the GET OF03 API Call.
API Call: /api/offers/imports/{import}/error_report
API Docs:https://richemontit3-dev.mirakl.net/help/api-doc/seller/mmp.html#OF03
"sku";"product-id";"product-id-type";"description";"internal-description";"price-additional-info";"quantity";"min-quantity-alert";"state";"available-start-date";"available-end-date";"logistic-class";"update-delete";"discount-start-date";"discount-end-date";"price";"discount-price";"discount-ranges";"price-ranges";"discount-start-date[channel=FR]";"discount-end-date[channel=FR]";"price[channel=FR]";"discount-price[channel=FR]";"discount-ranges[channel=FR]";"prices-ranges[channel=FR]";"discount-start-date[channel=CA]";"discount-end-date[channel=CA]";"price[channel=CA]";"discount-price[channel=CA]";"discount-ranges[channel=CA]";"prices-ranges[channel=CA]";"leadtime-to-ship";"error-line";"error-message"
"OFFER_SKU_004";"MKP100000000195360";"SKU";"My Offer Description n°1";"My Internal description 1";"My price Additional innformations";"1000000";"20";"11";"2017-02-20T10:45:53+01";"2017-04-30T10:45:53+01";"S";"update";"2017-02-22T10:45:53+01";"2017-04-30T10:45:53+01";"110.52";"108,56";"";"5|109.20,10|108.736";"2017-02-22T10:45:53+01";"2017-03-31T10:45:53+01";"105.56";"102,36";"";"5|104.56,10|103.27";"2017-02-22T10:45:53+01";"2017-03-31T10:45:53+01";"190.23";"175,36";"";"5|182.58,10|181.27";"15";"2";"The product does not exist"
As described above, this response give us detailed report of the SKUs and the actual SKUs errors are in the “error-message“ which we store in the Product Account >Update Item Error
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.