管理产品

内容 API 是一种 RESTful API,它使用 产品 资源来管理 Microsoft 商家中心 (MMC) 商店中的产品/服务。

下面是用于调用内容 API 的基 URI。

https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/

每个 HTTP 请求都必须包含用户的 OAuth 访问令牌和开发人员令牌。 若要指定用户的访问令牌,请设置 AuthenticationToken 标头。 若要指定开发人员令牌,请设置 DeveloperToken 标头。

如果代表其他客户管理目录,则必须设置:

  • 要管理其商店的客户的客户 ID 的 CustomerId 标头。
  • 你管理的任何客户帐户的帐户 ID 的 CustomerAccountId 标头 (与哪个托管帐户) 无关紧要。

默认情况下,内容 API 使用 JSON 对象来表示产品/服务。 若要使用 XML,请将 alt 查询参数设置为 XML。

有关使用产品资源的详细信息,请参阅以下部分。

从商店获取产品/服务

若要从应用商店获取特定产品/服务,请将以下模板追加到基 URI。

{mmcMerchantId}/products/{productUniqueId}

设置为 {mmcMerchantId} MMC 商店 ID,并设置为 {productUniqueId} 完全限定的产品 ID (例如 Online:en:US:Sku123) ,而不是产品的 offerId。 由于产品 ID 区分大小写,因此请使用添加产品时 API 返回给你的 ID。

将 HTTP GET 请求发送到生成的 URL。 如果找到产品,响应将包含产品/服务的 Product 对象。

如果在多个目录中插入具有相同 ID 的产品,则服务只返回其中一个产品,即未确定哪个产品以及从哪个目录确定。 因此,不应将具有相同产品 ID 的产品插入多个目录中。

有关演示如何获取产品/服务的代码示例,请参阅 管理产品代码示例

从商店获取产品/服务列表

若要获取商店中产品/服务的列表,请将以下模板追加到基本 URI。

{mmcMerchantId}/products

将 设置为 {mmcMerchantId} MMC 存储 ID。

若要分页浏览产品/服务列表,请使用 max-resultsstart-token 查询参数。 在第一次调用中,将 设置为 max-results 希望服务返回的产品/服务的最大数量。 服务可返回的最大产品/服务数为 250。 默认值为 25。 将 HTTP GET 请求发送到生成的 URL。 下面显示了请求的示例。

https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/{mmcMerchantId}/products?max-results=250

如果存储区包含产品/服务,则响应包含一个 Product 对象,该对象最多包含所请求的产品/服务数。

如果有更多可用产品/服务,响应将包括 nextPageToken 字段 (请参阅 产品) 。 字段 nextPageToken 包含用于在下一个 List 请求中 start-token 将 参数设置为 的令牌值。 下面显示了一个使用 令牌的示例。

https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/{mmcMerchantId}/products?max-results=250&start-token=DFSos893j...

有关演示如何获取产品/服务列表的代码示例,请参阅 管理产品代码示例

从应用商店中删除产品/服务

若要从应用商店中删除特定产品/服务,请将以下模板追加到基 URI。

{mmcMerchantId}/products/{productUniqueId}

设置为 {mmcMerchantId} MMC 商店 ID,并设置为 {productUniqueId} 完全限定的产品 ID (例如 Online:en:US:Sku123) ,而不是产品的 offerId。 由于产品 ID 区分大小写,因此请使用添加产品时 API 返回给你的 ID。

将 HTTP DELETE 请求发送到生成的 URL。 如果找到产品,则会将其删除。

如果在多个目录中插入具有相同产品 ID 的产品,服务会删除所有这些产品。 不应将具有相同产品 ID 的产品插入多个目录中。

有关演示如何删除产品/服务的代码示例,请参阅 管理产品代码示例

添加和更新产品/服务

添加或更新产品/服务是一项插入操作。 由于更新是插入操作,因此必须在请求中包含产品/服务的所有字段;不能不更新单个字段。

若要插入产品/服务,请将以下模板追加到基 URI。

{mmcMerchantId}/products

将 设置为 {mmcMerchantId} MMC 存储 ID。

向生成的 URL 发送 HTTP POST 请求会将产品/服务写入默认存储目录。 若要将产品/服务写入特定目录,请包含 bmc-catalog-id 查询参数。

https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/{mmcMerchantId}/products?bmc-catalog-id=123456

如果插入了产品,则响应包含 Product 对象。 对象 Product 包括用于获取和删除产品/服务的产品 ID

产品/服务必须包含以下字段:

API 使用 channelcontentLanguagetargetCountryofferId 生成产品 ID。 由于这些字段用于生成 ID,因此不能更新它们。 产品 ID 区分大小写;ID 使用用于指定 channel、、 contentLanguagetargetCountryofferId的相同大小写。

警告

请务必对 channel、、 targetCountryofferId 使用相同的大小写,contentLanguage因为如果大小写不同,可以多次有效地添加同一产品。

如果制造商分配了值,则还需要以下字段。

如果已知,则必须指定值。 如果未指定其中任何一个,则必须将 identifierExists 字段设置为 false。 默认值为 true

如果已知产品具有这些标识符,而你未指定它们,MMC 立即接受该产品,但 Product 响应中的 对象包括 字段 warnings 。 如果字段存在,warnings应始终检查并修复所有已识别的问题。

除了必填字段外,还应指定产品/服务到期的日期和时间 (见 expirationDate) 。 默认情况下,产品/服务从写入到应用商店或目录的日期和时间起 30 天过期。 应跟踪即将过期和到期前的产品,或者更新其到期日期,或者只需更新产品, (无需更新产品的任何字段) ,这会自动将到期日期再延长 30 天。 如果显式设置到期日期,则必须自行设置新的到期日期:在这种情况下,更新产品不会自动将到期日期再延长 30 天。

所有其他字段都被视为可选字段;但是,应指定所需的数量来准确描述产品。

注意

对象 Product 必须仅包含设置为值的字段。 不要在 对象中包含 Product null 字段。 例如,不要包括 "adult":null

Microsoft 不会使用所有 Product 字段。 有关 API 接受但不使用的字段列表,请参阅 我可以使用哪些 Google 属性? Microsoft 使用的所有其他字段用于在提供产品广告时筛选产品。

如果指定内容 API 未知的字段,则服务将忽略该字段。

插入产品/服务时,服务会对产品/服务执行基本验证,并根据需要返回错误和警告。 如果发生错误,响应将包含 对象 ErrorResponse 。 如果出现警告,响应将包含 一个 Product 对象, warnings 字段将列出警告。

如果产品/服务通过基本验证,它将进行脱机验证和评审,例如编辑评审,最长可能需要 36 小时。 在完成所有验证和评审之前,产品/服务才会提供。 若要确定产品/服务的状态,请使用 “状态” 资源。

请注意,API 不提供并发控件,例如 ETag。 如果两个应用正在尝试添加或更新同一产品,则最后一个应用获胜。

产品广告中显示的产品/服务包括价格、标题、商店名称 (或 sellerName(如果指定) ),指向包含产品详细信息的网页的链接,以及产品的图像。

对于有多种颜色、图案或材料的服装产品,请为每个变体创建一个产品,并使用 itemGroupId 字段对所有产品变体进行分组。

有关演示如何插入产品/服务的代码示例,请参阅 管理产品代码示例

使用批处理

如果要处理多个产品/服务,应考虑使用 API 的批处理功能。 此功能允许在单个请求中处理多个插入、获取和删除操作。 处理同一请求中的多个产品/服务比为每个产品/服务发送单独的请求更高效。 处理单个请求所产生的成本分散在批处理请求中的数千个产品/服务中,而不是为每个单个请求产生该成本。

请勿在同一请求中插入、获取或删除同一产品。

若要发送批处理请求,请将以下模板追加到基 URI。

{mmcMerchantId}/products/batch

将 设置为 {mmcMerchantId} MMC 存储 ID。

向生成的 URL 发送 HTTP POST 请求会将插入操作应用于默认存储目录。 若要将产品/服务应用于特定目录,请包含 bmc-catalog-id 查询参数。

https://content.api.bingads.microsoft.com/shopping/v9.1/bmc/{mmcMerchantId}/products/batch?bmc-catalog-id=123456

POST 的正文是包含 Item 对象数组的 Batch 对象。 对于所有操作,请设置 batchIdmerchantIdmethod 字段。 batchId是用户定义 ID,用于标识响应中的批处理项;merchantId是存储 ID;是method要执行的操作 (例如插入、删除或获取) 。

如果 method 为 insert,请将 product 字段设置为包含要添加或更新的产品/服务的 Product 对象。 否则,如果 method 是获取或删除,请将 设置为 productId 要获取或删除的产品/服务的完全限定 ID

批处理请求的正文大小不能超过 4 MB。 如果正文超过 4 MB,响应将返回 HTTP 状态代码 413。 根据每个产品/服务的大小 () 指定的字段数,可以发送 2,000 到 6,000 个产品/服务。 如果压缩正文,则可以发送产品/服务的最大数量,即 12,000 (,具体取决于其大小) 。

若要压缩正文,请仅使用 GZip 压缩,并将请求的内容编码标头设置为 gzip。

服务处理批处理中的每个项。 响应包含一个 Batch 对象,该对象包含 Item 请求中的每个对象。 请注意,不能保证响应中的项顺序与请求中的项的顺序相同。

对于插入操作,该项仅 batchId 包括 和 product 字段。 字段 product 包含你在请求中发送的相同产品/服务,但也包含完全限定的产品 ID。 如果发生错误或警告,该项将包括 batchIdmethoderror 字段。 字段 error 包含插入失败的原因或有关需要修复的产品/服务问题的警告。

对于获取操作,项包括 batchIdproduct 字段。 字段 product 包含请求的产品/服务。 如果未找到产品,则对象将不包括 字段 product

对于删除操作,该项仅 batchId 包括 字段;没有指示产品/服务是否存在且是否已删除。

有关演示如何使用批处理的代码示例,请参阅 创建批处理请求