API продавца представляет более надёжный и интуитивно понятный способ управления данными о товарах. Главное изменение заключается в разделении данных о товарах на два отдельных ресурса: ProductInput для отправки данных и Product для просмотра финальной, обработанной версии, включая статус товара и проблемы. Эта новая структура обеспечивает более предсказуемый и прозрачный опыт.
Это руководство познакомит вас с ключевыми различиями, которые помогут вам перенести интеграцию из Content API for Shopping. Подробное руководство по использованию новых функций см. в разделе «Управление товарами» .
Ключевые отличия
Ниже приведены наиболее существенные изменения в управлении товарами в Merchant API по сравнению с Content API for Shopping:
- Выделенные ресурсы для входных и обработанных данных : API продавца разделяет управление товарами на два ресурса. Ресурс - ProductInputможно использовать для добавления, обновления и удаления данных о товаре. Ресурс- Productдоступный только для чтения, можно использовать для просмотра конечного товара после того, как Google обработает ваши входные данные, применит правила и объединит данные из дополнительных источников.
- Интегрированный статус продукта : служба - 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 for Shopping и 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-пакетирование | 
Идентификаторы
Формат идентификаторов продуктов в 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 | 
Методы
В этой таблице показаны методы 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 | Нет в наличии | Использовать [асинхронный | 
запросы](/merchant/api/samples/insert-product-input-async) или HTTP-пакетирование . |
Подробные изменения полей
В этой таблице выделены важные поля, которые были изменены, добавлены или удалены в API торговца.
| API контента для покупок | API торговца | Описание | 
|---|---|---|
| id | name | Основным идентификатором продукта теперь является nameресурса REST. | 
| Атрибуты спецификации данных о продукте верхнего уровня (например, 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больше не присутствует в API продавца. Для товаров сLOCALканалом в Content API for Shopping вместо этого следует установить полеlegacy_localв значение true. | 
| Нет в наличии | versionNumber | Новое необязательное поле в ProductInput, которое можно использовать для предотвращения нерегулярных вставок в первичные источники данных. | 
| поля stringтипа с определенным набором значений | поля типа enumс определенным набором значений | Поля в атрибутах продукта с определенным набором значений (например, excluded_destinations,availability) теперь имеют типenum. |