管理产品
内容 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-results 和 start-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 使用 channel
、 contentLanguage
、 targetCountry
和 offerId
生成产品 ID。 由于这些字段用于生成 ID,因此不能更新它们。 产品 ID 区分大小写;ID 使用用于指定 channel
、、 contentLanguage
targetCountry
和 offerId
的相同大小写。
警告
请务必对 channel
、、 targetCountry
和 offerId
使用相同的大小写,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 对象。 对于所有操作,请设置 batchId
、 merchantId
和 method
字段。
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。 如果发生错误或警告,该项将包括 batchId
、 method
和 error
字段。 字段 error
包含插入失败的原因或有关需要修复的产品/服务问题的警告。
对于获取操作,项包括 batchId
和 product
字段。 字段 product
包含请求的产品/服务。 如果未找到产品,则对象将不包括 字段 product
。
对于删除操作,该项仅 batchId
包括 字段;没有指示产品/服务是否存在且是否已删除。
有关演示如何使用批处理的代码示例,请参阅 创建批处理请求。