The WalMart Developer Documentation has a section regarding what they call theItemObject
which provides an XSD template and sample XML requests for each and every item call on their site.
Documentation directs us to the XSD for MPItem.
These document states that the only required nodes to include in the request are:
<wm:requiredLevel value="Required"/>
<wm:displayName>SKU</wm:displayName>
and
wm:requiredLevel value="Required"/>
<wm:displayName>Product Identifiers</wm:displayName>
So, I create my XML request:
<?xml version="1.0"?>
<MPItemFeed xmlns="http://walmart.com/">
<MPItemFeedHeader>
<version>3.2</version>
</MPItemFeedHeader>
<MPItem>
<processMode>PARTIAL_UPDATE</processMode>
<sku>SAMPLESKU</sku>
<productIdentifiers>
<productIdentifier>
<productIdType>GTIN</productIdType>
<productId>0000000000000</productId>
</productIdentifier>
</productIdentifiers>
<MPProduct>
<productName>NEW TITLE NAME</productName>
</MPProduct>
</MPItem>
</MPItemFeed>
A successful response back, with a feedId
But when viewing a feed status request, I am returned this error:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:PartnerFeedResponse xmlns:ns2="http://walmart.com/">
<ns2:feedStatus>PROCESSED</ns2:feedStatus>
<ns2:feedSubmissionDate>2019-09-24T22:01:27.999Z</ns2:feedSubmissionDate>
<ns2:itemsReceived>1</ns2:itemsReceived>
<ns2:itemsFailed>1</ns2:itemsFailed>
<ns2:ingestionStatus>DATA_ERROR</ns2:ingestionStatus>
<ns2:description>'ProductIdUpdate' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>additionalProductAttributes</ns2:field>
<ns2:description>'additionalProductAttributes' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>msrp</ns2:field>
<ns2:description>'msrp' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>category</ns2:field>
<ns2:description>'category' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>SkuUpdate</ns2:field>
<ns2:description>'SkuUpdate' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
</ns2:ingestionErrors>
</ns2:itemIngestionStatus>
</ns2:itemDetails>
</ns2:PartnerFeedResponse>
A bunch of apparently required fields missing values -- ProductIdUpdate
, additionalProductAttributes
, msrp
, category
, SkuUpdate
.
Read the documentation for MPProduct
Manually fill out the required fields listed above, sent it along again:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:PartnerFeedResponse xmlns:ns2="http://walmart.com/">
<ns2:feedId>XXXXXXXXXXXXXXXXXXXXX</ns2:feedId>
<ns2:feedStatus>PROCESSED</ns2:feedStatus>
<ns2:feedSubmissionDate>2019-09-25T03:39:23.728Z</ns2:feedSubmissionDate>
<ns2:itemsReceived>1</ns2:itemsReceived>
<ns2:itemsSucceeded>0</ns2:itemsSucceeded>
<ns2:itemsFailed>1</ns2:itemsFailed>
<ns2:itemsProcessing>0</ns2:itemsProcessing>
<ns2:offset>0</ns2:offset>
<ns2:limit>50</ns2:limit>
<ns2:itemDetails>
<ns2:itemIngestionStatus>
<ns2:martId>0</ns2:martId>
<ns2:sku>LA2</ns2:sku>
<ns2:index>0</ns2:index>
<ns2:itemid/>
<ns2:productIdentifiers/>
<ns2:ingestionStatus>DATA_ERROR</ns2:ingestionStatus>
<ns2:ingestionErrors>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>sportsLeague</ns2:field>
<ns2:description>'sportsLeague' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>amps</ns2:field>
<ns2:description>'amps' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>isChemical</ns2:field>
<ns2:description>'isChemical' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>isAerosol</ns2:field>
<ns2:description>'isAerosol' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>keywords</ns2:field>
<ns2:description>'keywords' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>compatibleCars</ns2:field>
<ns2:description>'compatibleCars' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>lightBulbType</ns2:field>
<ns2:description>'lightBulbType' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>saeDotCompliant</ns2:field>
<ns2:description>'saeDotCompliant' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>isPowered</ns2:field>
<ns2:description>'isPowered' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
<ns2:ingestionError>
<ns2:type>DATA_ERROR</ns2:type>
<ns2:code>ERR_EXT_DATA_0801001</ns2:code>
<ns2:field>hasWarranty</ns2:field>
<ns2:description>'hasWarranty' - Attribute requires a value.</ns2:description>
</ns2:ingestionError>
</ns2:ingestionErrors>
</ns2:itemIngestionStatus>
</ns2:itemDetails>
</ns2:PartnerFeedResponse>
More missing fields? And some not even relevant to the product I was attempting to edit the title of.
This is crazy for my lowly ambition of just updating the title of a listing. They made it so easy to revise the price or inventory stock quantities for skus, but, from what I've just experienced, a nightmare to change something so simple without being forced to update a plethora of apparent "required" fields (that don't have values even in the original listings which were all done by hand)
Am I seeing this wrong? I would hope so, but I have my doubts. Maybe there is another solution that I just haven't found yet. Please help! Thank you.
No, I'm afraid that's pretty much the case. You need to supply all the required values, and those will depend on category. You'll need to check the category's xsd.
A merchant's offer on a product, price and quantity, is subject to frequent change. The product itself usually isn't, and its much harder to change them, and even if you get your submission correct, there's no guarantee the change will be accepted.
And, sadly, Walmart's product catalog is full of listings that need to be corrected or improved.