Merchant API предлагает более надежный и интуитивно понятный способ управления данными о товарах. Главное изменение заключается в разделении данных о товарах на два отдельных ресурса: ProductInput для отправки данных и Product для просмотра окончательной, обработанной версии, включая статус товара и проблемы. Эта новая структура обеспечивает более предсказуемый и прозрачный пользовательский опыт.
В этом руководстве описаны ключевые отличия, которые помогут вам перенести интеграцию с Content API для покупок. Подробное руководство по использованию новых функций см. в разделе «Управление товарами» .
Ключевые отличия
Вот наиболее существенные изменения в управлении товарами в Merchant API по сравнению с Content API для покупок:
Выделенные ресурсы для ввода и обработки данных : API продавца разделяет управление товарами на два ресурса. Вы можете использовать ресурс
ProductInputдля вставки, обновления и удаления данных о товаре. Вы можете использовать ресурсProductдоступный только для чтения, чтобы просмотреть конечный продукт после того, как Google обработает ваши входные данные, применит правила и объединит данные из дополнительных источников.Кодировка названий товаров : Для полей
ProductInput.nameиProduct.nameможно использовать кодировку base64url без дополнения (RFC 4648, раздел 5) . Если названия товаров содержат символы, используемые Merchant API или зарезервированные в URL-адресе символы, кодировка обязательна . Например, названия товаров необходимо кодировать, если они содержат какие-либо из следующих символов:% . + / : ~ , ( * ! ) & ? = @ # $Интегрированный статус продукта : служба
productstatusesудалена. Проблемы проверки продукта и целевые статусы теперь напрямую включаются в ресурсProductв полеproductStatus, что упрощает извлечение данных.Предсказуемые обновления товаров : новый метод
productInputs.patchнапрямую изменяет конкретный входной параметр товара. Это значительное улучшение по сравнению с Content API для покупок, где обновления могли неожиданно перезаписываться другими загрузками фида. В Merchant API обновление сохраняется до тех пор, пока этот конкретный входной параметр товара не будет снова обновлен или удален. Обновления товаров применяются к ресурсуProductInputа не к обработанному ресурсуProduct.Выберите источник данных для более удобного управления данными : теперь для всех операций записи
productInputsтребуется параметр запросаdataSource, позволяющий явно указать, какой источник данных вы изменяете. Это особенно полезно, если у вас несколько источников данных.Новые идентификаторы ресурсов : теперь продукты идентифицируются по
nameRESTful-ресурса вместо поляid. Формат:accounts/{account}/products/{product}.custombatchпакеты больше не доступны. Вы можете использовать асинхронные запросы или пакетную обработку HTTP для отправки нескольких запросов в одном HTTP-вызове.Источники данных для любых меток и языков фида : API для продавцов позволяет создавать источники данных без указания метки и языка фида, что дает возможность добавлять товары с любой меткой и языком фида.
Запросы
В этом разделе сравниваются форматы запросов для Content API для покупок и Merchant API.
| Описание запроса | API контента для покупок | API для продавцов |
|---|---|---|
| Получить товар | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Список товаров | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Вставить товар | POST https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products | POST https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs:insert |
| Обновить продукт | PATCH https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | PATCH https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Удалить товар | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/products/{productId} | DELETE https://merchantapi.googleapis.com/products/v1/accounts/{account}/productInputs/{productinput} |
| Получить статус продукта | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses/{productId} | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products/{product} |
| Список статусов товаров | GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantId}/productstatuses | GET https://merchantapi.googleapis.com/products/v1/accounts/{account}/products |
| Пакетная обработка нескольких запросов | POST https://shoppingcontent.googleapis.com/content/v2.1/products/custombatch | Используйте асинхронные запросы или пакетную обработку HTTP-запросов. |
Идентификаторы
В Merchant API формат идентификаторов товаров изменился на стандартное имя ресурса REST.
| Описание идентификатора | API контента для покупок | API для продавцов |
|---|---|---|
| Идентификатор продукта | Строка, состоящая из сегментов, разделенных двоеточием ( : ).Формат: channel:contentLanguage:targetCountry:offerId или channel:contentLanguage:feedLabel:offerId .Пример: online:en:US:sku123 | Строка name REST-ресурса.Формат: accounts/{account}/products/{product} где {product} — это contentLanguage~feedLabel~offerId .Пример: accounts/12345/products/en~US~sku123 .Кодировка: Рекомендуется и обязательно использование кодировки base64url без дополнения в случае идентификаторов товаров, содержащих символы, используемые API продавца или зарезервированные в URL-адресе символы. |
Методы
В этой таблице показаны API контента для методов покупок и их эквиваленты в API продавца.
| API контента для метода покупок | Метод API продавца | Наличие и примечания |
|---|---|---|
products.get | products.get | Получает конечный, обработанный продукт. |
products.list | products.list | Содержит перечень готовой, переработанной продукции. |
products.insert | productInputs.insert | Вставляет поле ввода товара. Требуется dataSource . |
products.update | productInputs.update | Поведение существенно отличается. Оно обновляет конкретный входной параметр продукта и сохраняет его. |
products.delete | productInputs.delete | Удаляет данные о конкретном товаре. Требуется dataSource . |
products.custombatch | Нет в наличии | Используйте асинхронные запросы или пакетную обработку HTTP-запросов. |
productstatuses.get | products.get | Сервис productstatuses удален. Информация о статусе теперь является частью ресурса Product . |
productstatuses.list | products.list | Сервис productstatuses удален. Информация о статусе теперь является частью ресурса Product . |
productstatuses.custombatch | Нет в наличии | Используйте асинхронные запросы или пакетную обработку HTTP-запросов . |
Подробные изменения полей
В этой таблице выделены важные поля, которые были изменены, добавлены или удалены в API для продавцов.
| API контента для покупок | API для продавцов | Описание |
|---|---|---|
id | name | В качестве основного идентификатора продукта теперь используется name REST-ресурса. Рекомендуется и обязательно кодирование base64url без дополнения в случае, если названия продуктов содержат символы, используемые Merchant API или зарезервированные в URL-адресе символы. |
Атрибуты верхнего уровня, определяющие характеристики товара (например, title , price , link ). | объект productAttributes | Атрибуты продукта, такие как title , price и link больше не являются полями верхнего уровня. Теперь они сгруппированы в объекте productAttributes как в ресурсах Product , так и ProductInput . Это обеспечивает более чистую и организованную структуру ресурсов. |
targetCountry | feedLabel | В соответствии с функциональностью Merchant Center, в имени ресурса теперь используется feedLabel вместо targetCountry . |
feedId | dataSource (параметр запроса) | Теперь имя dataSource является обязательным параметром запроса для всех методов записи productInputs ( insert , update , delete ). |
channel | Недоступно. Используйте legacy_local для продуктов, доступных только локально. | Поле channel больше не присутствует в Merchant API. Для товаров с LOCAL каналом в Content API for Shopping следует вместо этого установить поле legacy_local в значение true. |
| Нет в наличии | versionNumber | В ProductInput появилось новое необязательное поле, которое можно использовать для предотвращения вставки данных в основные источники данных в неправильном порядке. |
Поля string типа с заданным набором значений | Поля типа enum с заданным набором значений | Поля в атрибутах продукта с заданным набором значений (например, excluded_destinations , availability ) теперь имеют тип enum ). |