迁移数据源

本指南介绍了如何将集成从 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),从而提供更明确的配置。