Миграция продуктов

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 , что упрощает извлечение данных.

  • Predictable product updates : The new productInputs.patch method modifies a specific product input directly. This is a significant improvement over the Content API for Shopping, where updates could be unexpectedly overwritten by other feed uploads. In Merchant API, an update remains until that specific product input is updated again or deleted. Product updates are applied on ProductInput resource instead of processed Product resource.

  • Choose your data source for cleaner data management : All productInputs write operations now require a dataSource query parameter, making it explicit which data source you are modifying. This is especially useful if you have multiple sources providing data.

  • Новые идентификаторы ресурсов : теперь продукты идентифицируются по name RESTful-ресурса вместо поля 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 A new optional field on ProductInput that can be used to prevent out-of-order insertions into primary data sources.
Поля string типа с заданным набором значений Поля типа enum с заданным набором значений Поля в атрибутах продукта с заданным набором значений (например, excluded_destinations , availability ) теперь имеют тип enum ).