本指南介绍了如何将集成从 Content API for Shopping 的 datafeeds 和 datafeedstatuses 服务迁移到 Merchant API 中的 Data Sources sub-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资源来表示基于文件的数据源的状态。如需检索文件上传的状态,请使用fileUploads.get方法和latest别名。新的数据源类型。
DataSource资源支持更多行业,包括促销活动、本地商品目录和地区商品目录,为您提供了一种统一的方式来管理所有数据流水线。自动数据源。借助 Merchant API,您现在可以使用 Accounts 子 API 中的
autofeedSettings.updateAutofeedSettings方法为账号启用或停用自动数据源功能。如需了解详情,请参阅配置自动 Feed 设置。
选择数据源策略
您可以通过以下三种方式管理数据源:
为任何 Feed 标签和语言创建单个 Merchant API 数据源。使用此选项,您只需一个数据源即可接受具有任何
feedLabel和contentLanguage的商品,从而简化管理。在旧版 Content API 设置中,您需要通过单独的数据源为特定标签和语言定义规则,并将商品插入到具有相应定位规则的数据源中。如果您选择此选项,我们建议您将所有商品迁移到新数据源,并在所有商品迁移完毕后移除 Content API 数据源。为每个标签和语言创建新的 Merchant API 数据源。 如果您需要支持新的
feedLabel和contentLanguage组合(并且希望在它们之间保持严格的分离),或者如果您使用依赖于特定feedLabel和contentLanguage的数据源规则设置,请使用此选项。您需要为所使用的每对feedLabel和contentLanguage创建单独的数据源。您可以将 Merchant API 数据源与使用 Content API for Shopping 创建的数据源结合使用。
- 保留现有的 Content API 数据源。您可以继续使用通过 Content API for Shopping 创建的数据源,因为它们与 Merchant API 兼容。您可以使用
dataSources.list或在 Merchant Center 界面中找到其资源名称。Content API 主要数据源仅支持创建时使用的特定feedLabel和contentLanguage。即使商品是使用 Merchant API 插入的,Content API 数据源也会在 Merchant Center 中显示为“Content API”来源。您可以将这些数据源与同样定位到特定feedLabel和contentLanguage组合的新 Merchant API 数据源结合使用。
我们建议您回填本地商品数据库,为每件商品存储一次所有主要数据源的名称,以避免重复调用 dataSources.list。
请求
下表比较了 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),从而提供更明确的配置。 |