Документация для разработчиков WalMart содержит раздел о том, что они называют theItemObject
, который предоставляет XSD-шаблон и примеры запросов XML для каждого вызова элемента.на их сайте.
Документация направляет нас в XSD для MPItem .
В этом документе говорится, что единственными узлами, которые необходимо включить в запрос, являются:
<wm:requiredLevel value="Required"/>
<wm:displayName>SKU</wm:displayName>
и
wm:requiredLevel value="Required"/>
<wm:displayName>Product Identifiers</wm:displayName>
Итак, я создаю свой XML-запрос:
<?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>
Обратный успешный ответ с feedId
Но когдапри просмотре запроса состояния ленты мне возвращается эта ошибка:
<?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>
Куча явно обязательных полей с пропущенными значениями - ProductIdUpdate
, additionalProductAttributes
, msrp
, category
, SkuUpdate
.
Прочитайте документацию для MPProduct
Вручную заполните обязательные поля, перечисленные выше, отправьте их снова:
<?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>
Больше пропущенных полей?А некоторые даже не имеют отношения к продукту, который я пытался отредактировать в заголовке.
Это безумие из-за моих скромных амбиций просто обновить заголовок листинга.Они упростили пересмотр цены или количества запасов для Skus, но из того, что я только что испытал, стал кошмар, чтобы изменить что-то настолько простое, без необходимости обновлять множество видимых «обязательных» полей (которые нене может иметь значения даже в оригинальных списках, которые все были сделаны вручную)
Я вижу это неправильно?Я бы на это надеялся, но у меня есть сомнения.Может быть, есть другое решение, которое я еще не нашел.Пожалуйста помоги!Спасибо.