本指南介绍了如何将集成从 Content API for Shopping 的 datafeeds 和 datafeedstatuses 服务迁移到 Merchant API 中的“数据源”子 API。新的 Data sources 子 API 可让您更直接地控制数据流水线,并简化数据源管理。
如需详细了解新功能,请参阅管理数据源指南。
主要差异
与 Content API for Shopping 相比,Merchant API 具有多项优势。
- 显式数据源创建。该 API 不再在您首次插入商品时自动创建“Content API”数据源。在 Merchant API 中,您需要先明确创建数据源,然后才能向其中上传商品。 这样,您从一开始就可以更好地控制产品数据流水线的组织和管理。 
- 支持多个 API 数据源。在 Content API for Shopping 中,您只能使用一个自动创建的“Content API”数据源。借助 Merchant API,您可以创建和管理多个 - API输入类型的数据源。
- 没有标签和语言的数据源。借助 Merchant API,您可以创建主数据源,而无需指定 - feedLabel和- contentLanguage。此类数据源接受以任意组合形式提供的- feedLabel和- contentLanguage商品,从而简化了不需要为不同地区单独提供数据源的集成方案的商品上传流程。
- 简化了数据目标。每个数据源现在都对应一个目标,该目标由 - feedLabel和- contentLanguage的唯一组合定义。Merchant API 中已弃用多数据定位 Feed。
- 专用文件上传状态。Merchant API 使用单独的只读 - fileUploads资源来表示基于文件的数据源的状态。如需检索文件上传的状态,请使用带有- latest别名的- fileUploads.get方法。
- 新的数据源类型。 - DataSource资源支持更多垂直行业,包括促销、本地商品目录和区域商品目录,从而提供一种统一的方式来管理所有数据流水线。
- 自动化数据源。借助 Merchant API,您现在可以使用 Accounts 子 API 中的 - autofeedSettings.updateAutofeedSettings方法为账号启用或停用自动数据源功能。如需了解详情,请参阅配置自动进纸设置。
请求
下表比较了 Content API for Shopping 和 Merchant API 之间的请求网址格式。
| 请求说明 | Content API for Shopping | Merchant API | 
|---|---|---|
| 创建数据源 | POST https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeeds | POST https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources | 
| 获取数据源 | GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeeds/{DATAFEED_ID} | GET https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID} | 
| 列出数据源 | GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeeds | GET https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources | 
| 更新数据源 | PUT https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeeds/{DATAFEED_ID} | PATCH https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID} | 
| 删除数据源 | DELETE https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeeds/{DATAFEED_ID} | DELETE https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID} | 
| 提取数据源 | POST https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeeds/{DATAFEED_ID}/fetchNow | POST https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}:fetch | 
| 获取数据源状态 | GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeedstatuses/{DATAFEED_ID} | GET https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}/fileUploads/latest | 
| 列出数据源状态 | GET https://shoppingcontent.googleapis.com/content/v2.1/{MERCHANT_ID}/datafeedstatuses | 无法使用。为每个基于文件的数据源使用 dataSources.list和fileUploads.get。 | 
标识符
Merchant API 使用基于字符串的资源名称作为标识符。
| 标识符说明 | Content API for Shopping | Merchant API | 
|---|---|---|
| 数据源标识符 | datafeedId(数字) | name(字符串,格式:accounts/{account}/dataSources/{datasource}) | 
方法
下表将 Content API for Shopping datafeeds 和 datafeedstatuses 服务中的方法与 Merchant API 中的等效方法进行了比较。
| Content API for Shopping 方法 | Merchant API 方法 | 适用范围和备注 | 
|---|---|---|
| datafeeds.custombatch | 不可用 | 请改用单独的 API 调用。 | 
| datafeeds.delete | dataSources.delete | 可用。 | 
| datafeeds.fetchnow | dataSources.fetch | 可用。此方法现在仅适用于具有文件输入的数据源。 | 
| datafeeds.get | dataSources.get | 可用。 | 
| datafeeds.insert | dataSources.create | 可用。 | 
| datafeeds.list | dataSources.list | 可用。 | 
| datafeeds.update | dataSources.update | 可用。使用 PATCH语义,而不是PUT。 | 
| datafeedstatuses.custombatch | 不可用 | 请改用单独的 API 调用。如需了解详情,请参阅一次发送多项请求。 | 
| datafeedstatuses.get | fileUploads.get | 适用于基于文件的数据源。使用 latest别名可获取最近一次上传的状态。对于其他数据源类型,状态信息是DataSource资源的一部分。 | 
| datafeedstatuses.list | 不可用 | 如需获取多个数据源的状态,请先列出所有包含 dataSources.list的数据源。然后,使用每个基于文件的数据源的latest别名调用fileUploads.get。 | 
详细的字段更改
此表显示了 Content API for Shopping 中的 Datafeed 和 DatafeedStatus 资源与 Merchant API 中的 DataSource 和 FileUpload 资源之间的字段级变化。
| Content API for Shopping | Merchant API | 说明 | 
|---|---|---|
| Datafeed | DataSource | 数据源配置的主要资源。 | 
| id | name | 资源标识符。从数字 ID 更改为字符串资源名称。 | 
| name | displayName | 数据源面向用户的名称。 | 
| attributeLanguage | primaryProductDataSource.contentLanguage | 数据源中商品的双字母 ISO 639-1 语言代码。 | 
| fileName | fileInput.fileName | 已上传文件的名称。此字段现在嵌套在 fileInput下。 | 
| fetchSchedule | fileInput.fetchSettings | 用于提取基于文件的数据源的时间表。现在,此属性嵌套在 fileInput下。 | 
| fetchSchedule.paused | fileInput.fetchSettings.enabled | 逻辑已反转。 paused: true等效于enabled: false。 | 
| format | 不可用 | 系统会移除 fileEncoding、columnDelimiter和quotingMode字段。现在,系统会自动检测这些参数。 | 
| targets | primaryProductDataSource.feedLabel、primaryProductDataSource.contentLanguage、primaryProductDataSource.countries | 移除了重复的 targets字段。每个数据源现在都有一个由这些字段定义的目标,这反映了多数据目标 Feed 的弃用。 | 
| DatafeedStatus | FileUpload | 文件上传状态现在是一个单独的只读资源。 | 
| datafeedId | name | 文件上传的标识符,用于引用其父数据源。 | 
| processingStatus | processingState | 上传的处理状态。字符串值( success、failure、in progress)替换为枚举(SUCCEEDED、FAILED、IN_PROGRESS)。 | 
| errors、warnings | issues | 错误和警告会合并到单个 issues列表中。每个问题都有一个severity字段(ERROR或WARNING)。 | 
| lastUploadDate | uploadTime | 上次上传的时间戳。格式已从字符串更改为 Timestamp对象。 | 
| country、language、feedLabel | 不适用 | 这些字段已不再位于状态资源中。它们是 DataSource资源的一部分。 | 
| targets[].included_destinations、targets[].excluded_destinations | primaryProductDataSource.destinations | 用于包含和排除目的地的两个单独列表已替换为一个 destinations列表。新列表中的每个项都是一个对象,用于指定目的地及其状态(ENABLED或DISABLED),从而提供更明确的配置。 |