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

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 , позволяющий явно указать, какой источник данных вы изменяете. Это особенно полезно, если у вас несколько источников данных.

  • Новые идентификаторы ресурсов : теперь продукты идентифицируются по 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 В ProductInput появилось новое необязательное поле, которое можно использовать для предотвращения вставки данных в основные источники данных в неправильном порядке.
Поля string типа с заданным набором значений Поля типа enum с заданным набором значений Поля в атрибутах продукта с заданным набором значений (например, excluded_destinations , availability ) теперь имеют тип enum ).