Product Data
- Product Data to MM
- Check status of product data upload
- Get error report
- Error handling
- Get a list of all your product data uploads
Product Data to MM
Once you product data file is ready you can send it to us using a POST
request /openapi/v1/uploads
and attaching the file. Please send product data files with maximum 300 products.
In the Swagger documentation you will see a parameter called sourceId
, please ignore it as it´s for internal purposes.
Example:
Request: POST https://app-seller-pim.sandbox.infra.metro-markets.cloud/openapi/v1/uploads
attaching a .csv file.
You get a response with status code 201
and the body with an id
. This is the id
of your upload, it´s an UUID needed to check further details of your upload.
{
"id": "56331416-687b-4916-bec0-7d03fdcc37ch"
}
Product Data for multimarkets
In case you would like to provide us the same product data for two or more different markets you have need to upload one file for each market (example one product data feed for DE and one for NL) taking into consideration the following aspects:
- all non-localizable attributes need to be provided in every product data feed (eg. image, size, brand, …). This feature doesn’t work as a patch, therefore if you forget to add a value for an attribute in a market, the system will override it with null and delete it across all markets.
- non localizable attributes (like images, size, etc.) will be taken from the latest successfully file. For example, if you provide a “Weight” value of 1 kg for the DE market and later created the same product for the NL market with a “Weight” value of 2 kg, then 2 kg will be saved for all markets.
- Therefore images can´t be different per market.
Note: You can find more information about localizable attributes here.
Check status of product data upload
Once your data is uploaded it needs to be validated by our Product Data team, it can take up to 10 days.
In the sandbox, the data is validated only by the system by checking only the file’s structure and the mandatory attributes. In production, we conduct manual reviews of your files, where we also assess the quality. This is why you may encounter differences between the sandbox and production when we validate product data.
You can check the status of your file, sending a GET
request /openapi/v1/uploads/{id}
being {id}
the upload id provided in our response before.
Request example:
GET https://app-seller-pim.sandbox.infra.metro-markets.cloud/openapi/v1/uploads/56331416-687b-4916-bec0-7d03fdcc37ch
Response example:
{
"id": "56331416-687b-4916-bec0-7d03fdcc37ch",
"filename": "productdata.csv",
"status": {
"internalStatus": "in_review",
"readableStatus": "In review"
},
"reportFileName": null,
"createdAt": "2023-01-06T18:46:12+00:00",
"rejectReason": null
}
Here you have a list of all possible status and how we map them:
internalStatus | readableStatus | Explanation |
---|---|---|
uploaded | Uploading | The file is being uploaded to our server and waiting in the queue |
in_review | In review | The file is being reviewed by our product data team |
approved | Approved | Temporal status before going to processing |
processing | Processing | The file is being processed |
processing_finished | Processing | Temporal status. The file is still being processed |
auto_process | Auto processed | The file is being processed automatically |
report_generation | Processing | Temporal status while the report is being generated |
success | Completed | The review has been completed withot any errors |
with_errors | Completed with errors | The review has been completed with errors |
review_rejected | Rejected | The file has been rejected, reason can be seen in rejectReason field |
The statuses success
, with_errors
or review_rejected
mean that the process of reviewing the file has completetly finished and you can check the report.
Request
GET https://app-seller-pim.sandbox.infra.metro-markets.cloud/openapi/v1/uploads/56331416-687b-4916-bec0-7d03fdcc37ch
Response 1:
{
"id": "56331416-687b-4916-bec0-7d03fdcc37ch",
"filename": "productdata.csv",
"status": {
"internalStatus": "with_errors",
"readableStatus": "Completed with errors"
},
"reportFileName": "productdata.csv_0_20210106.csv",
"createdAt": "2023-01-06T18:46:12+00:00",
"rejectReason": null
}
Response 2
{
"id": "56331416-687b-4916-bec0-7d03fdcc37ch",
"filename": "productdata.csv",
"status": {
"internalStatus": "review_rejected",
"readableStatus": "Rejected"
},
"reportFileName": "productdata.csv_0_20210106.csv",
"createdAt": "2023-01-06T18:46:12+00:00",
"rejectReason": "Recurrent file upload"
}
Get error report
Once your product data file has been reviewed, a report will be generated and will inform whether the data has been successfully processed or if there are any errors / warnings.
To check the report you can send a GET
request /openapi/v1/uploads/{id}/errors/file
being {id}
the upload id provided in our response before.
MID
: in this error report you will get the MID (METRO identifier). This is a unique identifier to a product and is assigned by MM when the product is created.
Request example
GET https://app-seller-pim.sandbox.infra.metro-markets.cloud/openapi/v1/uploads/56331416-687b-4916-bec0-7d03fdcc37ch/errors/file
Response example
Row;Status;MID;GTIN;MPN;Manufacturer;"Product Name";"Error Report"
2;successful;AAA0000122255;7321014500571;1230;Duni GmbH;Duni Sacchetto Zelltuch 190 x 85 mm bordeaux/cream 100er Pack;
3;successful with warnings;AAA0000155961;7321011657322;A456;Duni GmbH;Duni Zelltuch-Untersetzer 10 cm Traube bordeaux 250er Pack;Attribute `Color`: Value does not exist
4;successful with warnings;AAA0000000952;4251225663105;GG8000;Gastro-Groküchen-Geräte GmbH;GGG Arbeitstisch aus Edelstahl;Attribute `Guarantee conditions`: URL is invalid
5;rejected;;4251225663129;GG8002;Gastro-Groküchen-Geräte GmbH;GGG Arbeitstisch aus Edelstahl;Attribute `Guarantee conditions`: URL is invalid | Combination of GTIN and Manufacturer + MPN can't be associated with any existing product
6;rejected;;4042485424489;0196;Plustek;Plustek SmartOffice PS286 Plus Dokumentenscanner Duplex A3 ADF-Scanner Duplex;Category not found
7;successful;AAA0000001897;4260212792872;67263252;Handelsagentur Noll GbR;JUNOPAX Papiertischläufer weinrot 50m x 0,20m nass- und wischfest;
8;successful;AAA0000001895;4260212792858;67263193;Handelsagentur Noll GbR;JUNOPAX Papiertischläufer weinrot 50m x 0,40m nass- und wischfest;
Error handling
- Error messages in
GET /openapi/v1/uploads/{id}
Case 1:
id
is UUID but it doesn´t correspond to any upload id.
You will get a response with status code 404
error and the following body:
{
"type": "about:blank",
"title": "Upload not exist",
"status": 404,
"detail": "",
"instance": null
}
Case 2:
id
is not an UUID.
You will get a response with status code 400
error and the following body:
{
"type": "about:blank",
"title": "Invalid UUID string: 4b6afa92-22a3-4e4c-a14c-64d3932f9",
"status": 400,
"detail": "",
"instance": null
}
- Error messages for
GET /openapi/v1/uploads/{id}/errors/file
Case 1:
id
is UUID but it doesn´t correspond to any upload id.
You will get a response with status code 404
error and the following body:
{
"type": "about:blank",
"title": "Not found",
"status": 404,
"detail": "",
"instance": null
}
Case 2:
id
is not an UUID.
You will get a response with status code 400
error and the following body:
{
"type": "validation",
"title": "Validation error",
"status": 400,
"detail": "Incorrect Upload ID. Please check it and try again",
"instance": null
}
- Error messages for
POST /openapi/v1/uploads
Case 1: Product upload temporary disabled. If this happens after a while, seller needs to contact their Seller Manager / Support team.
{
"type": "about:blank",
"title": "Unauthorized",
"status": 401,
"detail": "Product upload temporary disabled",
"instance": null
}
Get a list of all your product data uploads
If you want to see a list of all your uploads, please use GET /openapi/v1/uploads
.
You can use the following filters to define your search:
- sort[createdAt]: ASC, DESC (per default DESC)
- sort[filename]: ASC, DESC
- sort[status]: ASC, DESC
- sort[reportFilename]: ASC, DESC
- limit: per default 10
- offset: default 0
For example, this request will give you the information about the product data uploads sorting them by creationdate in descending order, by filename in ascending order and limiting the results to 25.
https://app-seller-pim.sandbox.infra.metro-markets.cloud/openapi/v1/uploads?sort[createdAt]=DESC&sort[filename]=ASC&limit=25&offset=0