Перенос продуктов

Merchant API – это более надежный и интуитивно понятный способ управления данными о товарах. Главное изменение – разделение данных о товарах на два отдельных ресурса: ProductInput для отправки данных и Product для просмотра окончательной обработанной версии, включая статус товара и проблемы. Новая структура обеспечивает более предсказуемый и прозрачный процесс.

В этом руководстве описаны основные различия, которые помогут вам перенести интеграцию из Content API for Shopping. Подробные инструкции по использованию новых функций можно найти в статье Управление товарами.

Основные различия

Ниже перечислены наиболее значительные изменения в управлении товарами в Merchant API по сравнению с Content API for Shopping.

  • Отдельные ресурсы для исходных и обработанных данных. В Merchant API управление товарами разделено на два ресурса. Ресурс ProductInput позволяет добавлять, обновлять и удалять данные о товарах. Ресурс Product доступен только для чтения. Он позволяет посмотреть, как будет выглядеть товар после того, как Google обработает ваши данные, применит правила и объединит информацию из дополнительных источников.

  • Кодировка для названий товаров. Вы можете использовать кодировку base64url без заполнения (RFC 4648, раздел 5) для полей ProductInput.name и Product.name. Если в названии товара есть символы, используемые Merchant API или зарезервированные для URL, кодирование обязательно. Например, названия товаров нужно кодировать, если они содержат следующие символы:

    % . + / : ~ , ( * ! ) & ? = @ # $
    
  • Статус интегрированного продукта. Сервис productstatuses удален. Проблемы с проверкой товаров и статусы целевых сервисов теперь напрямую включаются в ресурс Product в поле productStatus, что упрощает получение данных.

  • Предсказуемое обновление товаров. Новый метод productInputs.patch позволяет напрямую изменять определенные входные данные о товарах. Это значительное улучшение по сравнению с Content API for Shopping, где обновления могли быть неожиданно перезаписаны другими загрузками фидов. В Merchant API обновление сохраняется до тех пор, пока данные о товаре не будут изменены или удалены. Обновления товаров применяются к ресурсу ProductInput, а не к обработанному ресурсу Product.

  • Выбор источника данных для более эффективного управления данными. Для всех операций записи productInputs теперь требуется параметр запроса dataSource, который явно указывает, какой источник данных вы изменяете. Это особенно полезно, если у вас есть несколько источников данных.

  • Новые идентификаторы ресурсов. Теперь товары идентифицируются по ресурсу RESTful name, а не по полю id. Формат: accounts/{account}/products/{product}.

  • Нет пользовательских пакетов. Метод custombatch больше не доступен. Чтобы отправить несколько запросов в одном HTTP-вызове, используйте асинхронные запросы или пакетную обработку HTTP.

.

Рекомендации по работе с источниками данных во время переноса

Прежде чем переносить источники данных, настоятельно рекомендуем выбрать стратегию работы с ними.

Чтобы перенос прошел без проблем и вы не столкнулись с такими проблемами, как кража предложений, следуйте этим рекомендациям:

  • Заполните базу данных. Вместо того чтобы вызывать dataSources.list перед каждой операцией с товаром, настоятельно рекомендуем выполнить однократное заполнение локальной базы данных. Добавьте поле dataSource в каждую запись о товаре, чтобы указывать правильный идентификатор прямо в запросах.

  • Объединяйте и используйте источники данных для любых ярлыков и языков. Merchant API позволяет создавать источники данных без указания ярлыка и языка, а значит, вы можете добавлять товары с любыми ярлыками и языками источников данных. Рекомендуем использовать один источник данных для всех ярлыков и языков.

  • Защитите свои товары. Если вы используете правила преобразования источников данных, вызовите products.get, чтобы найти точный идентификатор dataSource, связанный с товаром, прежде чем обновлять или удалять его. Это позволяет убедиться, что вы изменяете нужный источник, и предотвращает случайное присвоение предложений.

Запросы

В этом разделе сравниваются форматы запросов для Content API for Shopping и Merchant API.

Описание запроса Content API for Shopping Merchant 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.

Описание идентификатора Content API for Shopping Merchant API
Идентификатор товара Строка, состоящая из сегментов, разделенных двоеточием (:).
Формат: channel:contentLanguage:targetCountry:offerId или channel:contentLanguage:feedLabel:offerId.
Пример: online:en:US:sku123.
Строка ресурса REST name.
Формат: accounts/{account}/products/{product}, где {product} – это contentLanguage~feedLabel~offerId.
Пример: accounts/12345/products/en~US~sku123.
Кодировка: рекомендуется кодировка base64url без заполнения. Она обязательна, если идентификаторы товаров содержат символы, используемые Merchant API, или зарезервированные символы URL.

Методы

В таблице ниже приведены методы Content API for Shopping и их эквиваленты в Merchant API.

Метод Content API for Shopping Метод Merchant API Доступность и примечания
products.get products.get Получает конечный обработанный продукт.
products.list products.list Список обработанных товаров.
products.insert productInputs.insert Вставляет входные данные товара. Требуется dataSource.
products.update productInputs.patch Поведение значительно отличается. Оно обновляет определенные входные данные о товаре и является постоянным.
products.delete productInputs.delete Удаляет определенные входные данные о товаре. Требуется dataSource.
products.custombatch Недоступно Используйте асинхронные запросы или пакетную обработку HTTP.
productstatuses.get products.get Сервис productstatuses удален. Информация о статусе теперь является частью ресурса Product.
productstatuses.list products.list Сервис productstatuses удален. Информация о статусе теперь является частью ресурса Product.
productstatuses.custombatch Недоступно Используйте асинхронные запросы или пакетную обработку HTTP.

Подробные изменения полей

В таблице ниже перечислены важные поля, которые были изменены, добавлены или удалены в Merchant API.

Content API for Shopping Merchant API Описание
id name Основным идентификатором товара теперь является ресурс REST name. Кодировка base64url без заполнения рекомендуется и является обязательной, если названия товаров содержат символы, используемые Merchant API, или зарезервированные символы URL.
Атрибуты спецификации сведений о товарах верхнего уровня (например, title, price, link). Объект productAttributes Атрибуты товаров, такие как title, price и link, больше не являются полями верхнего уровня. Теперь они сгруппированы в объекте productAttributes в ресурсах Product и ProductInput. Это позволяет сделать структуру ресурсов более понятной и организованной.
targetCountry feedLabel Теперь в названии ресурса используется feedLabel вместо targetCountry, чтобы соответствовать функциям Merchant Center.
feedId dataSource (параметр запроса) Название dataSource теперь является обязательным параметром запроса для всех методов записи productInputs (insert, update, delete).
channel Недоступно. Используйте legacy_local для товаров местного ассортимента. Поле channel больше не используется в Merchant API. Для товаров с каналом LOCAL в Content API for Shopping нужно задать значение true для поля legacy_local.
Недоступно versionNumber Новое необязательное поле в ProductInput, которое можно использовать, чтобы предотвратить вставку данных в основные источники данных в неправильном порядке.
Поля типа string с заданным набором значений Поля типа enum с заданным набором значений Поля в атрибутах товаров с определенным набором значений (например, excluded_destinations, availability) теперь имеют тип enum.
gtin productAttributes.gtins Тип поля изменен с единичной строки (gtin) на повторяющуюся (gtins).
sizes productAttributes.size Повторяющаяся строка (sizes) заменена на единичную (size).
sizeType, additionalSizeType productAttributes.sizeTypes Поля sizeType и additionalSizeType заменены повторяющимся перечислением SizeType (sizeTypes), которое принимает до двух значений (например, ["PETITE", "MATERNITY"]).