REST Resource: projects.locations.privateOffers

资源:PrivateOffer

描述 PrivateOffer 资源的消息。

关于“可选”字段的注意事项:为了方便您保存未完成的草稿优惠,大多数字段都被归类为“可选”,无论这些字段是否是有效非公开优惠所必需的。标有“可选”的许多字段必须设置才能发布优惠。

JSON 表示法
{
  "name": string,
  "state": enum (State),
  "publishRequirementGoogleReview": {
    object (PublishRequirementGoogleReview)
  },
  "createTime": string,
  "updateTime": string,
  "publishTime": string,
  "acceptTime": string,
  "cancelTime": string,
  "endTime": string,
  "cancellationNote": string,
  "resellerContact": {
    object (ResellerContact)
  },
  "internalNote": string,
  "offerDealType": enum (OfferDealType),
  "title": string,
  "customerNote": string,
  "partnerContact": {
    object (PartnerContact)
  },
  "customer": {
    object (Customer)
  },
  "acceptDeadlineTime": {
    object (DateTime)
  },
  "term": {
    object (Term)
  },

  // Union field content can be only one of the following:
  "singleProductOffer": {
    object (SingleProductOffer)
  }
  // End of list of possible types for union field content.
}
字段
name

string

标识符。资源的名称。

state

enum (State)

仅限输出。非公开优惠的状态。

publishRequirementGoogleReview

object (PublishRequirementGoogleReview)

仅限输出。有关 Google 审核流程的信息。仅当优惠被确定为需要 Google 审核时才显示。

createTime

string (Timestamp format)

仅限输出。创建时间。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

updateTime

string (Timestamp format)

仅限输出。上次更新时间。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

publishTime

string (Timestamp format)

仅限输出。相应优惠转换为“已发布”状态的时间。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

acceptTime

string (Timestamp format)

仅限输出。相应优惠转换为 ACCEPTED 状态的时间。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

cancelTime

string (Timestamp format)

仅限输出。优惠转换为 CANCELLED 状态的时间。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

endTime

string (Timestamp format)

仅限输出。优惠结束的时间。只能为状态为 ENDED 的优惠设置此字段。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

cancellationNote

string

仅限输出。取消报价时提供的内部备注。仅针对已取消的优惠存在,并且仅当提供了备注时才存在。

resellerContact

object (ResellerContact)

仅限输出。有关转销商联系人的信息。仅针对转销商创建的优惠存在。

internalNote

string

可选。客户看不到的非结构化文本内容。供合作伙伴用于存储有关非公开优惠的备注。长度上限:1,500 个字符。

offerDealType

enum (OfferDealType)

可选。与相应优惠进行交易的交易类型。

客户看不到特惠类型。

必须存在才能发布优惠。

title

string

可选。描述优惠并帮助客户识别优惠的标题。此标题将向客户显示。长度上限:256 个字符。必须存在才能发布优惠。

customerNote

string

可选。客户可见的非结构化文本内容。长度上限:120 个字符。

partnerContact

object (PartnerContact)

可选。合作伙伴联系人的相关信息。发布优惠时必须提供。

customer

object (Customer)

可选。用于标识优惠的预期接收者的信息。发布优惠时必须提供。

acceptDeadlineTime

object (DateTime)

可选。接受已发布优惠的截止期限。如果已发布的方案在此时间之前未被接受,则会过期。仅支持 America/Los_Angeles 时区中的日期边界。必须存在才能发布优惠。

发布优惠时,截止日期必须设置为未来时间,且不得超过发布时间后的 3 个月。例如,如果优惠是在 03/05 下午 1 点发布的,那么截止时间必须是 06/05 凌晨 12 点(美国/洛杉矶时间)或更早。

截止日期还必须:

  • 不晚于相应优惠的预定开始时间(如果设置了 term.scheduled_start_time 且相应期限的开始政策为 SCHEDULED_START_TIME)。
  • 如果设置了 term.scheduled_end_time 且相应条款的结束政策为 SCHEDULED_END_TIME,则在相应优惠的预定结束时间之前或等于该时间。
  • 不晚于相应优惠的即将到来的分期付款开始时间。
  • 如果优惠是对另一项非公开优惠或标准优惠的修正,则不得晚于修正后优惠的结束时间。
  • 如果修正的是采用自定义分期付款的非公开优惠,则在修正后的优惠的下一个待处理分期付款的开始时间之前或开始时间当天。例如,如果修改后的优惠的分期付款日期为 01/01、02/01、03/01、04/01,而今天是 02/15,那么此优惠的 acceptDeadlineTime 必须为 03/01 或更早。

此外,如果该优惠是对另一项非公开优惠的修正,但已接受的即将生效的修正针对的是该非公开优惠,那么此截止日期必须早于或等于已接受的即将生效的优惠的开始时间。例如,今天是 2 月 15 日,此优惠(优惠 C)修正了非公开优惠 A,并且非公开优惠 B 已被接受,它也修正了非公开优惠 A。非公开优惠 B 的开始时间为 03/01。那么,此截止日期必须不晚于 3 月 1 日。否则,非公开优惠 B 将于 3 月 1 日生效,取代优惠 A。这意味着,优惠 C 不再修正当前有效的优惠(优惠 A),而这是有效修正所必需的。

发布职位要约后,您仍可更新此字段以延长职位要约的截止期限。不过,延期后的最长时限仍为发布时间后的 3 个月。

term

object (Term)

可选。优惠期限的配置。发布优惠时必须设置。

联合字段 content。优惠的内容。未来可能会支持其他形式的内容。如需发布优惠,必须提供内容价值。content 只能是下列其中一项:
singleProductOffer

object (SingleProductOffer)

可选。与单个商品关联的优惠的配置。

SingleProductOffer

与单个商品关联的优惠的配置。

JSON 表示法
{
  "baseStandardOffer": string,
  "serviceLevel": string,
  "resellerPrivateOfferPlanId": string,
  "features": [
    {
      object (Feature)
    }
  ],
  "effectiveInstallmentTimeline": [
    {
      object (Installment)
    }
  ],
  "contractValue": {
    object (ContractValue)
  },
  "revenueShare": {
    object (RevenueShare)
  },

  // Union field amended_offer can be only one of the following:
  "amendedPrivateOffer": string,
  "amendedStandardOffer": string
  // End of list of possible types for union field amended_offer.

  // Union field price can be only one of the following:
  "standardIntervalPrice": {
    object (StandardIntervalPrice)
  },
  "customIntervalPrice": {
    object (CustomIntervalPrice)
  }
  // End of list of possible types for union field price.
}
字段
baseStandardOffer

string

可选。相应 PrivateOffer 所基于的 StandardOffer。必须与私享优惠位于同一项目中,并且在发布时必须有效。必须存在才能发布优惠。

格式:projects/{project}/locations/{location}/services/{service}/standardOffers/{standard_offer}

serviceLevel

string

仅限输出。基本标准优惠的服务级别(也称为“方案”)。该值在发布时从基本标准优惠中填充。

resellerPrivateOfferPlanId

string

仅限输出。适用于转销商基于转销商非公开优惠方案 (RPOP) 创建的优惠。如果已设置,则包含原始 RPOP 的 ID。PRIVATE_OFFER_VIEW_BASIC 不包含此功能。

features[]

object (Feature)

可选。要为此优惠显示的自定义商品功能。如需发布优惠,功能 displayName 值必须是唯一的。此处指定的功能集通常应包含基本服务级别中包含的所有功能(可选择自定义值),但不必完全匹配,并且可以包含其他功能。

effectiveInstallmentTimeline[]

object (Installment)

仅限输出。相应优惠的有效分期付款时间表。PRIVATE_OFFER_VIEW_BASIC 不包含此功能。如果所有必要信息都可用于生成时间轴,并且相应优惠的“standardIntervalPrice”为“MONTHLY_PRORATED”“MONTHLY_NOT_PRORATED”“QUARTERLY_NOT_PRORATED”或“YEARLY_NOT_PRORATED”,则包含 PRIVATE_OFFER_VIEW_FULL

contractValue

object (ContractValue)

仅限输出。相应优惠的合同价值。PRIVATE_OFFER_VIEW_BASIC 不包含此功能。

revenueShare

object (RevenueShare)

仅限输出。相应非公开优惠的收益分成信息。PRIVATE_OFFER_VIEW_BASIC 不包含此功能。

联合字段 amended_offer。将被此非公开优惠取代的现有优惠。amended_offer 只能是下列其中一项:
amendedPrivateOffer

string

可选。将被此优惠取代的现有非公开优惠。除非非公开优惠所针对的产品类型支持多个有效订单,否则只有在目标客户结算账号已包含同一产品的有效订单时,才能交易修正非公开优惠。要被取代的优惠必须是与有效订单相关联的优惠。

修正通常属于以下两种情形之一:

  1. 有效订单 / 已结束的优惠:修改后的优惠期限已结束,但仍与有效订单相关联。新优惠必须修正已结束的非公开优惠。
  2. 有效订单 / 有效优惠:修改后的优惠仍处于有效期限内,并且关联的订单处于有效状态。与上述类似,新优惠必须修改当前有效优惠(除非支持“多个有效订单”)。

如果设置了此值,则 baseStandardOffer 父级服务必须与 amendedPrivateOfferbaseStandardOffer 的父级服务相匹配。

有效期限限制:如果修订后的非公开优惠的期限尚未结束,则适用以下兼容性规则:

  • 价格模式兼容性
    • 固定费用(含或不含使用量)优惠可以修改固定费用优惠。
    • 仅限使用或 CUD 优惠可以修改仅限使用优惠。
    • 基于承诺的优惠必须修改价格模式子类型相同的优惠(例如“额外用量按定价计算”与“所有用量均有折扣”)。
  • 结算频率兼容性:由 standardIntervalcustomIntervalPrice 确定。
    • 如果修改后的优惠具有自定义结算周期,则新优惠也必须具有自定义结算周期。
    • 如果修订后的优惠具有标准频次(每月、每季度或每年),则新优惠必须保持相同的频次或改为自定义频次。
    • 不支持在不同的标准频次(例如从“每月”切换到“每季度”)之间切换。
    • 对于“每月”频次,系统支持在 MONTHLY_PRORATEDMONTHLY_NOT_PRORATED 之间切换,除非相应优惠的 term.end_policyMATCH_AMENDED_OFFER
    • 对于仅限使用量的优惠,结算频率不受限制。

有关优惠修改的其他条件,请参阅其他文章。

amendedStandardOffer

string

可选。将被相应优惠取代的现有标准优惠。如果目标客户结算账号已包含同一产品的有效订单,则必须交易修订非公开优惠,否则无法交易。要替换的优惠必须是与有效订单相关联的优惠。

如果设置了此属性,则 baseStandardOffer 必须包含与 amendedStandardOffer 的父服务相同的父服务。相应优惠的价格模式必须与 amendedStandardOffer 的价格模式兼容:

  • 固定费用或固定费用加使用量优惠可以修改固定费用或固定费用加使用量标准优惠。
  • 仅限使用量的优惠或 CUD 优惠可以修改仅限使用量的标准优惠。

有关优惠修改的其他条件,请参阅其他文章。

联合字段 price。相应优惠的价格。发布优惠时必须设置价格。price 只能是下列其中一项:
standardIntervalPrice

object (StandardIntervalPrice)

可选。具有标准间隔的优惠的价格配置。发布优惠时必须设置价格。

customIntervalPrice

object (CustomIntervalPrice)

可选。采用自定义间隔的优惠的价格配置。自定义间隔时间对应于“自定义结算频率”,请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule。发布优惠时必须设置价格。

StandardIntervalPrice

采用标准间隔的优惠的价格配置。

JSON 表示法
{
  "standardInterval": enum (StandardInterval),
  "priceModel": {
    object (PriceModel)
  }
}
字段
standardInterval

enum (StandardInterval)

可选。相应优惠的标准间隔。必须存在才能发布,除非价格模式为“仅基于用量”。

priceModel

object (PriceModel)

可选。相应优惠的价格模式。必须存在才能发布优惠。

StandardInterval

提供标准间隔的优惠的选项。

枚举
STANDARD_INTERVAL_UNSPECIFIED 非公开优惠没有间隔。如果设置了此值,则相应优惠为“仅限使用”。字段 term.duration_months 必须为正值。
MONTHLY_POSTPAY

每月后付费优惠的安排。此类优惠的结算频率为“每月”(请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule))。自 2024 年 5 月起,该功能已不再受支持。无法用于发布新优惠。

MONTHLY_PRORATED

按比例分摊的每月分期付款。此类优惠的结算频率为“每月”(请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule))。例如,如果优惠开始日期为 4 月 15 日,优惠期限为 3 个月,则系统将创建以下分期付款:

所有日期均表示 America/Los_Angeles 时区中相应日期的开始时间。

如果设置了此属性:

  • 必须设置 PriceModel.subscription oneof。
  • 字段 term.duration_months 必须为正值。
MONTHLY_NOT_PRORATED

按月分期付款,不按比例分摊。此类优惠的结算频率为“每月”(请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule))。例如,如果优惠开始日期为 4 月 15 日,优惠期限为 3 个月,则系统将创建以下分期付款:

所有日期均表示 America/Los_Angeles 时区中相应日期的开始时间。

如果设置了此属性:

  • 必须设置 PriceModel.subscription oneof。
  • 字段 term.duration_months 必须为正值。
QUARTERLY_NOT_PRORATED

按季度分期付款,不按比例分摊。此类优惠的结算频率为“季度”(请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule))。例如,如果优惠开始日期为 1 月 15 日,优惠时长为 3 个季度,则系统将创建以下分期付款:

所有日期均表示 America/Los_Angeles 时区中相应日期的开始时间。

如果设置了此属性:

  • 必须设置 PriceModel.subscription oneof。
  • 字段 term.duration_months 必须为正值。
YEARLY_NOT_PRORATED

不按比例分摊的年期分期付款。此类优惠的结算周期为“年”(请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule))。例如,如果优惠开始日期为 2025 年 1 月 15 日,优惠期限为 3 年,则系统将创建以下分期付款:

所有日期均表示 America/Los_Angeles 时区中相应日期的开始时间。

如果设置了此属性:

  • 必须设置 PriceModel.subscription oneof。
  • 字段 term.duration_months 必须为正值。

PriceModel

非公开优惠的价格模式。

私享优惠是指根据价格模型中设置的字段组合,采用不同类型的价格模型。文档和其他参考资料中使用了以下术语。

  • 基于用量:价格模式未设置 flatFee
  • 仅基于用量:价格模式仅设置 usage
  • CUD(承诺使用折扣):价格模式设置 commitment
    • 额外用量按定价计算的承诺折扣:价格模式设置为 commitment,而不是 usage
    • 所有用量均有折扣的承诺:价格模式设置为 commitmentusage
  • 固定费用:价格模式仅设置 flatFee
  • 固定费用加使用量:此价格模式会设置 flatFeeusage

如需了解价格模式,请参阅 https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD

JSON 表示法
{
  "usage": {
    object (Usage)
  },

  // Union field subscription can be only one of the following:
  "flatFee": {
    object (FlatFee)
  },
  "commitment": {
    object (Commitment)
  }
  // End of list of possible types for union field subscription.
}
字段
usage

object (Usage)

可选。使用部分的定价配置。如果设置了此字段,则必须取消设置 Commitment.discount_percent。私人优惠可以为所有使用量或使用量承诺提供折扣,但不能同时提供这两种折扣。如果基本标准优惠的价格模式不包含任何用量 SKU,则必须处于未设置状态。

联合字段 subscription。相应订阅部分的定价配置。subscription 只能是下列其中一项:
flatFee

object (FlatFee)

可选。固定费用订阅的价格配置。如果基本标准优惠的价格模式不包含订阅 SKU,则必须处于未设置状态。

commitment

object (Commitment)

可选。基于合约的订阅的价格配置。如果基础标准优惠的价格模式包含订阅 SKU,则必须处于未设置状态。

FlatFee

包月订阅的价格配置。

JSON 表示法
{
  "flatFeeOverride": {
    object (Money)
  }
}
字段
flatFeeOverride

object (Money)

可选。替换基本标准优惠中的默认固定费用。值不能为负数。币种必须为“美元”,且精度限制为美分。如果设置了父消息,则必须提供此字段才能发布优惠。允许的最大值为 1,000,000,000 美元。

承诺

基于合约的订阅的价格配置。

JSON 表示法
{
  "commitmentAmount": {
    object (Money)
  },
  "discountPercent": {
    object (Decimal)
  },
  "additionalCredit": {
    object (Money)
  },
  "discardPreviousCreditBalance": boolean
}
字段
commitmentAmount

object (Money)

可选。客户将收到的承诺余额。值不能为负数。币种必须为“美元”,且精度限制为美分。如果设置了父消息,则必须提供此字段才能发布优惠。允许的最大值为 1,000,000,000 美元。

如果当前优惠修正了期限尚未结束的非公开优惠,并且当前优惠和修正后的非公开优惠都设置了 singleProductOffer.standard_interval_price.price_model.commitment.commitment_amount 字段,那么当前优惠的承诺金额必须等于或高于修正后的非公开优惠。

discountPercent

object (Decimal)

可选。commitmentAmount 的折扣百分比。

例如,10 表示 10% 的折扣。如果原始 commitmentAmount 为 100 美元,则折扣后的金额为 90 美元。客户支付 90 美元,获得 100 美元的赠金。

所有报告的用量都将按标准价格收费。如果设置了此字段,则必须取消设置 priceModel.usage。私人优惠可以为所有使用量或使用量承诺提供折扣,但不能同时提供这两种折扣。

必须介于 0 到 100 之间(含 0 和 100),精确到小数点后 2 位。如果设置了此字段,则“value”的允许模式为 ^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$。有效值示例:“0”“100.0”“12.34”“40.0”。无效值示例:“.3”“-1”“100.1”“12.345”“+12”“”。

必须存在才能发布优惠。

additionalCredit

object (Money)

可选。向客户授予的额外信用额度。额外积分仅适用于自定义间隔优惠。对于标准间隔优惠,可以通过改变 commitmentAmountdiscountPercent 来实现等效行为。

值不能为负数。币种必须为“美元”,且精度限制为美分。允许的最大值为 1,000,000 美元。

discardPreviousCreditBalance

boolean

可选。是否在关联的分期付款开始时舍弃之前的信用余额。如果未设置,则上期信用余额将结转至当前分期付款。

如果没有之前的分期付款,则此字段的值无关紧要,因为在没有积分的情况下,此字段不会产生任何影响。

用法

使用量 SKU 的价格。

JSON 表示法
{
  "defaultDiscountPercent": {
    object (Decimal)
  },
  "skuDiscounts": [
    {
      object (SkuDiscount)
    }
  ]
}
字段
defaultDiscountPercent

object (Decimal)

可选。用量 SKU 的默认折扣百分比。未设置的默认折扣百分比相当于 0(无折扣)。

必须介于 0 到 100 之间(含 0 和 100),精确到小数点后 2 位。如果设置了此字段,则“value”的允许模式为 ^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$。有效值示例:“0”“100.0”“12.34”“40.0”。无效值示例:“.3”“-1”“100.1”“12.345”“+12”“”。

skuDiscounts[]

object (SkuDiscount)

可选。用于覆盖 defaultDiscountPercent 的特定 SKU 的折扣。

SkuDiscount

特定 SKU 的折扣。

JSON 表示法
{

  // Union field target can be only one of the following:
  "sku": string,
  "cloudBillingSku": string
  // End of list of possible types for union field target.

  // Union field discount can be only one of the following:
  "discountPercent": {
    object (Decimal)
  }
  // End of list of possible types for union field discount.
}
字段
联合字段 target。必需。折扣适用的 SKU。target 只能是下列其中一项:
sku

string

可选。相应 API 中合作伙伴 SKU 的名称。

必须引用基本标准优惠的价格模型中的 SKU。纳入基础价格模型的方式可以是直接纳入,也可以是通过纳入包含的 SkuGroup 间接纳入。

目前,标准优惠价格模式仅包含与标准优惠位于同一项目中的合作伙伴 SKU。此设置可能会发生变化。

格式:projects/{project}/locations/{location}/services/{service}/skus/{sku}

cloudBillingSku

string

可选。Cloud Billing API 中的 Google SKU 的名称。

用于 Google 销售的合作伙伴产品,例如出售的用于 Compute Engine 的高级操作系统映像。这种情况并不常见。此类型的 SKU 不在此 API 中,但可在 Cloud Billing API 中或 https://cloud.google.com/skus 中找到。

必须引用基本标准优惠的价格模型中的 SKU。在标准优惠中,Google SKU 始终通过 SkuGroups 引用。

格式:services/{service}/skus/{sku}

联合字段 discount。相应 SKU 的折扣。discount 只能是下列其中一项:
discountPercent

object (Decimal)

可选。相应 SKU 的折扣百分比。例如,10 表示 10% 的折扣。如果 SKU 的原价为每小时 100 美元,则折扣价为每小时 90 美元。

必须介于 0 到 100 之间(含 0 和 100),精确到小数点后 2 位。如果设置了此字段,则“值”的允许模式为 ^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$

有效值示例:“0”“100.0”“12.34”“40.0”。无效值的示例:“.3”“-1”“100.1”“12.345”“+12”“”。必须提供此值才能发布优惠。

CustomIntervalPrice

采用自定义间隔的优惠的价格配置。

JSON 表示法
{
  "installments": [
    {
      object (Installment)
    }
  ]
}
字段
installments[]

object (Installment)

可选。构成分期付款时间表的分期付款。所有分期付款必须采用相同的价格模式(例如,全部为合约价或全部为固定费用)。价格模型中必须包含每个分期付款对应的订阅。

必须包含至少一个分期付款才能发布相应优惠。

分期付款

相应优惠的分期付款。

JSON 表示法
{
  "startTime": {
    object (DateTime)
  },
  "priceModel": {
    object (PriceModel)
  }
}
字段
startTime

object (DateTime)

可选。分期付款的开始时间。每个分期付款都必须具有唯一的开始时间,但有一种例外情况:当优惠期限的 term.start_policyIMMEDIATE 时,第一期分期付款的 startTime 必须未设置。优惠中未记录实际开始时间,而是由生成的订单变为有效状态的时间来确定。

如果相应优惠的期限的 term.start_policySCHEDULED_START_TIME,则第一期付款的 startTime 必须与 term.scheduled_start_time 一致。

如果优惠期限的 term.end_policySCHEDULED_END_TIME,则分期付款 startTime 必须早于 term.scheduled_end_time。如果值为 AFTER_DURATION,则分期付款 startTime 必须在通过将 term.duration_months 添加到优惠开始时间计算出的时间之前。

分期付款的startTime不能早于优惠的acceptDeadlineTime

分期付款开始时间必须严格按时间顺序递增。

priceModel

object (PriceModel)

可选。分期付款的价格模式。所有分期付款都必须采用相同的价格模式。

DateTime

表示民用时间(或偶尔表示物理时间)。

此类型可以通过几种可能的方式之一表示民用时间:

  • 当设置了 utcOffset 但未设置 timeZone 时:一个日历日内相对于世界协调时间 (UTC) 具有特定偏移量的民用时间。
  • 当设置了 timeZone 但未设置 utcOffset 时:特定时区中一个日历日内的民用时间。
  • 当未设置 timeZone 和 utcOffset 时:本地时间中一个日历日内的民用时间。

日期相对于公历格里历。

如果年、月或日为 0,则 DateTime 被视为分别没有特定的年、月或日。

如果设置了所有日期和时间字段,并且设置了 time_offset 的任一情形,此类型也可用于表示物理时间。请考虑改用 Timestamp 消息来表示物理时间。如果您的应用场景还要存储用户的时区,可以在另一个字段中完成该操作。

此类型的灵活性高于某些应用的需求。请务必记录并验证应用的限制。

JSON 表示法
{
  "year": integer,
  "month": integer,
  "day": integer,
  "hours": integer,
  "minutes": integer,
  "seconds": integer,
  "nanos": integer,

  // Union field time_offset can be only one of the following:
  "utcOffset": string,
  "timeZone": {
    object (TimeZone)
  }
  // End of list of possible types for union field time_offset.
}
字段
year

integer

可选。某年。必须是 1 到 9999 之间的数字,如果指定的日期时间不含“年”,则为 0。

month

integer

可选。某月。必须是 1 到 12 之间的数字,如果指定的日期时间不含“月”,则为 0。

day

integer

可选。某日。必须是 1 到 31 之间的数字并且符合具体的年和月,如果指定的日期时间不含“日”,则为 0。

hours

integer

可选。一天中的小时(采用 24 小时制)。应是 0 到 23 之间的数字,默认为 0(午夜)。对于业务结束时间等场景,API 可以选择允许“24:00:00”一值。

minutes

integer

可选。一天中某小时的分钟数。必须是 0 到 59 之间的数字,默认为 0。

seconds

integer

可选。时间的秒数部分。通常必须是 0 到 59 之间的数字,默认为 0。如果 API 允许闰秒,则 API 可以允许 60 一值。

nanos

integer

可选。秒数的小数部分(以纳秒为单位)。必须是 0 到 999,999,999 之间的数字,默认为 0。

联合字段 time_offset。可选。指定 DateTime 的世界协调时间 (UTC) 偏移量或时区。考虑到时区数据将来可能会发生变化(例如,某个国家/地区修改了夏令时开始/结束日期,而受影响范围内的未来 DateTime 已存储),请仔细进行选择。如果省略,则 DateTime 被视为采用本地时间。time_offset 只能是下列其中一项:
utcOffset

string (Duration format)

世界协调时间 (UTC) 偏移量。必须是介于 -18 小时到 +18 小时之间的整数秒数。例如,UTC 偏移量 -4:00 将表示为 { seconds: -14400 }。

该时长以秒为单位,最多包含九个小数位,以“s”结尾。示例:"3.5s"

timeZone

object (TimeZone)

时区。

TimeZone

表示 IANA 时区数据库中的时区。

JSON 表示法
{
  "id": string,
  "version": string
}
字段
id

string

IANA 时区数据库时区。例如“America/New_York”。

version

string

可选。IANA 时区数据库版本号。例如“2019a”。

功能

用于描述服务级别自定义的其他详细信息。

功能用于区分同一产品的不同服务级别。如果产品只有一个服务级别,则所有详细信息都可以包含在产品文档中。如果产品有多个服务等级,则可以为每个服务等级分配一组不同的功能,以区分服务等级之间的主要差异。

除了自定义价格和其他交易详情之外,私享优惠还可以包括自定义合作伙伴管理的产品行为。在这种情况下,自定义行为的详细信息将使用功能进行描述。

JSON 表示法
{
  "displayName": string,
  "value": string
}
字段
displayName

string

可选。用于描述相应功能的人类可读显示文本。应足够详细,以便识别相应功能,从而能够关联不同优惠和服务等级中的功能。必须为非空才能发布优惠。允许的长度上限为 128 个字符。允许使用以下 Unicode 属性类中的字符:字母、数字、标点符号、符号和分隔符

value

string

可选。反映功能价值的人类可读显示文本。用于无法仅通过 displayName 捕获的可变功能。允许的长度上限为 3000 个字符。允许使用以下 Unicode 属性类中的字符:字母、数字、标点符号、符号和分隔符

ContractValue

相应出价的合约价值。

JSON 表示法
{
  "totalContractValue": {
    object (Money)
  }
}
字段
totalContractValue

object (Money)

仅限输出。相应交易的总合同价值。只要请求了“PRIVATE_OFFER_VIEW_FULL”,系统就会为所有非草稿非公开优惠设置此值。对于草稿状态的私享优惠,只有在设置了最终用户的结算账号,并且价格和期限配置足够完整以允许计算时,才会填充此字段。

RevenueShare

非公开优惠的收益分成信息。如需详细了解收入分成,包括如何确定价值,请参阅 https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios

不适用于 PRIVATE_OFFER_VIEW_BASIC 或处于草稿状态的非公开优惠。

对于非草稿状态的非公开优惠,系统会根据以下信息填充这些字段:

  • 2025 年 4 月 20 日之后发布的优惠将始终填充收益分成字段。
  • 如果发布于 2025 年 4 月 20 日或之前的影音内容在当天与有效且未过期的订单相关联,则只有这些影音内容会填充收入分成字段。
JSON 表示法
{
  "currentTermVendorNetRevenuePercent": {
    object (Decimal)
  },
  "renewalTermVendorNetRevenuePercent": {
    object (Decimal)
  }
}
字段
currentTermVendorNetRevenuePercent

object (Decimal)

仅限输出。当前生效的收益分成。

值的范围介于 0 到 100 之间。例如,80 表示供应商当前合同期的收入分成比例为 80%。供应商将获得 80% 的收入。。

renewalTermVendorNetRevenuePercent

object (Decimal)

仅限输出。续订期限的预期收益分成。如果优惠没有续订条款,则不包含此元素。

值的范围介于 0 到 100 之间。例如,80 表示供应商当前合同期的收入分成比例为 80%。续订后,供应商将获得 80% 的收入。。

优惠的状态。

枚举
STATE_UNSPECIFIED 默认值。此值未使用。
DRAFT 创建后的默认状态,表示可以修改优惠。在所有其他州,优惠内容均无法修改。
PUBLISHING 优惠正在发布。满足所有发布要求后,发布流程即会完成。
PUBLISHED 优惠已发布,可供客户接受。
ACCEPTED 客户已接受此优惠。
CANCELLED 提供方在交易完成之前取消了优惠。客户无法再接受已取消的优惠。
EXPIRED 客户未接受该优惠,且该优惠已过期。客户无法再接受已过期的优惠。
ENDED

优惠已结束。

已结束的优惠是指过去已被接受且处于有效状态,但现在已达到期限或已被终止的优惠。

PublishRequirementGoogleReview

有关 Google 审核流程的信息。

JSON 表示法
{
  "reviewApproveTime": string
}
字段
reviewApproveTime

string (Timestamp format)

仅限输出。Google 审核流程的审批时间。

采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例:"2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

ResellerContact

转销商的联系信息。

JSON 表示法
{
  "contact": string,
  "email": string
}
字段
contact

string

仅限输出。相应商品的转销商联系人的姓名。

email

string

仅限输出。相应优惠的转销商联系人的电子邮件地址。

OfferDealType

与相应优惠进行交易的交易类型。优惠的交易类型是决定优惠收益分成的一个因素。

枚举
OFFER_DEAL_TYPE_UNSPECIFIED 默认值。此值未使用。
CHANNEL_SHIFT 相应优惠适用于正在转移到 Cloud Marketplace 的 Google Cloud 工作负载的现有商业安排。
MIGRATION 相应优惠适用于之前不在 Google Cloud 上但现在要转移到 Google Cloud 的工作负载,并且该工作负载之前已签订商业协议。
NATIVE_RENEWAL 相应优惠是指最初在 Google Cloud Marketplace 上交易的合约的续订。
NEW

相应优惠是指在 Google Cloud Marketplace 上达成的新交易。

如果相应优惠是对另一项期限尚未结束的非公开优惠的修正,且修正后的非公开优惠的交易类型为 MIGRATIONCHANNEL_SHIFTNATIVE_RENEWAL,则不允许使用此值。

PartnerContact

合作伙伴代表的联系信息。

JSON 表示法
{
  "contact": string,
  "email": string
}
字段
contact

string

可选。用于标识合作伙伴销售联系人的显示文本。向客户显示。发布优惠时必须提供。长度上限:256 个字符。

email

string

可选。合作伙伴销售联系人的电子邮件地址。向客户显示。发布房源时,系统会验证所提供电子邮件地址的格式,但不会验证该电子邮件地址是否实际存在、是否接受电子邮件或是否正常运行。

客户

与客户相关的信息。

JSON 表示法
{
  "entityTitle": string,
  "contact": string,
  "email": string,
  "address": string,
  "targetBillingAccount": string
}
字段
entityTitle

string

可选。用于标识客户实体的字符串(例如,客户的组织或公司名称)。发布优惠时必须提供。长度上限:256 个字符。

contact

string

可选。用于标识客户联系人的字符串。发布优惠时必须提供。长度上限:256 个字符。

email

string

可选。客户联系人的电子邮件地址。如果提供,则必须是格式正确的电子邮件地址。

address
(deprecated)

string

仅限输出。客户组织的法定地址。此字段已无法再设置,但仍会保留,以便返回设置了地址的现有优惠中的数据。

targetBillingAccount

string

可选。相应优惠所针对的客户结算账号。非公开优惠发布后,目标结算账号的结算管理员即可接受该优惠。如果客户接受了优惠,但后来将由此产生的订单转移到了新的结算账号,此字段仍会反映最初提供非公开优惠的结算账号。发布优惠时必须提供。

如需发布此非公开优惠,请执行以下操作:

  • 结算账号必须存在。
  • 结算账号不得处于免费试用期。
  • 结算账号必须遵守 Marketplace 转销政策。
  • 禁止使用转销商父级结算账号。除非服务已启用转销功能,否则禁止使用转销商子账号。

格式:billingAccounts/012345-567890-ABCDEF

术语

优惠期限和续订选项的配置。向客户提供涵盖特定期限的非公开优惠,即向客户保证,在相应期限内,客户可以继续使用相应产品。

JSON 表示法
{
  "startPolicy": enum (StartPolicy),
  "scheduledStartTime": {
    object (DateTime)
  },
  "endPolicy": enum (EndPolicy),
  "effectiveTermEndTime": {
    object (DateTime)
  },

  // Union field end_policy_data can be only one of the following:
  "durationMonths": integer,
  "scheduledEndTime": {
    object (DateTime)
  }
  // End of list of possible types for union field end_policy_data.

  // Union field renewal can be only one of the following:
  "maxRenewalCount": integer,
  "unlimitedRenewal": boolean
  // End of list of possible types for union field renewal.
}
字段
startPolicy

enum (StartPolicy)

可选。定义结果订单的开始时间。发布优惠时必须设置。

scheduledStartTime

object (DateTime)

可选。优惠的预定开始时间。不得超过发布时间起的一年。

如果开始政策为 SCHEDULED_START_TIME,则在发布优惠时,必须提供 America/Los_Angeles 时区中位于日期边界的未来时间。

如果相应优惠是对另一项非公开优惠或标准优惠的修正,则预定的开始时间必须:

  • 如果相应优惠的结束政策不是 MATCH_AMENDED_OFFER,则在修改后的优惠结束时间之前或结束时间。否则,必须严格早于修订后优惠的结束时间。
  • 如果修正的是采用自定义分期付款的非公开优惠,则在修正后的优惠的下一个待处理分期付款的开始时间之前或开始时间。例如,如果修改后的优惠的分期付款日期为 1 月 1 日、2 月 1 日、3 月 1 日、4 月 1 日,而今天是 2 月 15 日,那么新优惠的 scheduledStartTime 必须在 3 月 1 日或之前。
endPolicy

enum (EndPolicy)

可选。定义优惠的结束时间。发布优惠时必须设置。

effectiveTermEndTime

object (DateTime)

仅限输出。当前优惠期限的预计结束时间。

在每个优惠期限结束时,与有效订单相关联的优惠将续订或结束。当优惠续订时,新的期限开始,此值会更改以反映新期限的结束时间。当优惠结束时,系统将不再设置此值,而是设置 endTime

如果优惠期限结束且优惠未续订,则相关订单也会结束(如果基础标准优惠采用订阅价格模式)。否则,关联的订单不会结束,而是保持有效状态。

不包含在 PRIVATE_OFFER_VIEW_BASIC 中。如果优惠尚未结束,且优惠已开始或该值可从其他字段推导得出,则包含在 PRIVATE_OFFER_VIEW_FULL 中。

对于尚未开始的优惠,如果满足以下任一条件,系统会设置此字段。

  • 优惠设置了 term.scheduled_end_time
  • 优惠设置了 term.scheduled_start_timeterm.duration_months,优惠的 term.end_policy 不是 MATCH_AMENDED_OFFER,并且优惠未将 standardInterval 设置为 MONTHLY_POSTPAY
联合字段 end_policy_data。最终政策的额外数据。end_policy_data 只能是下列其中一项:
durationMonths

integer

可选。优惠期限(以月为单位)。优惠将于此期限后的当月同日结束。如果该日期不存在,优惠将于当月的最后一天结束。例如,如果优惠从 2024 年 1 月 31 日开始,持续时间为 13 个月,则优惠将于 2025 年 2 月 28 日结束。如果结束政策为 AFTER_DURATIONMATCH_AMENDED_OFFER,则必须设置此值才能发布相应优惠,且此值必须为正值。

优惠的最长可能期限(包括所有续订期限)不得超过 7 年。例如,如果 durationMonths 为 9,term.max_renewal_count 为 9,则最长的可能优惠期限为 90 个月,超过了 7 年的上限。

scheduledEndTime

object (DateTime)

可选。优惠的指定结束时间。如果结束政策为 SCHEDULED_END_TIME,则必须设置此字段才能发布优惠。设置后,时间必须是未来的时间,且位于 America/Los_Angeles 时区的日期边界,并且必须晚于 term.scheduled_start_time(如果适用)。

联合字段 renewal。定义相应优惠的续订政策。renewal 只能是下列其中一项:
maxRenewalCount

integer

可选。初始期限结束后允许的最大续订次数。此字段仅适用于标准间隔优惠,且间隔为“MONTHLY_PRORATED”“MONTHLY_NOT_PRORATED”“QUARTERLY_NOT_PRORATED”或“YEARLY_NOT_PRORATED”。其他类型的优惠无法续订。

例如,如果初始期限为 1 年,最长续订期限为 3 年,则客户可以在初始期限结束后将相应优惠续订最多 3 年。客户可以自行决定是否续订优惠。

允许客户续订优惠并不构成对客户的保证,即所提供的产品在续订日期仍可续订。

续订次数上限为 0 的优惠无法续订。必须是非负数。

unlimitedRenewal
(deprecated)

boolean

仅限输出。已弃用:此字段只能在标准间隔为“MONTHLY_POSTPAY”的现有优惠中为 true。自 2024 年 5 月起,我们将不再允许无限续订。

StartPolicy

定义优惠的开始时间。

枚举
START_POLICY_UNSPECIFIED 默认值。此值未使用。
IMMEDIATE 如果无需合作伙伴批准,则在客户接受优惠后,系统会立即开始处理由此产生的订单;如果需要合作伙伴批准,则在合作伙伴批准购买后,系统会立即开始处理由此产生的订单。此枚举值不能与 term.scheduled_start_time 组合使用。
SCHEDULED_START_TIME 生成的订单从预定的开始时间开始。

EndPolicy

定义优惠的结束时间。

枚举
END_POLICY_UNSPECIFIED 默认值。此值未使用。
AFTER_DURATION 优惠将在指定时长后结束。如果设置了此值,则 durationMonths 必须为正数。
SCHEDULED_END_TIME 优惠将在预定时间结束。
MATCH_AMENDED_OFFER

优惠与修订后的优惠同步结束 - 优惠在修订后的优惠期限结束时结束

例如,如果修订后的优惠从 2024 年 1 月 15 日开始,持续时间为 6 个月,则将于 2024 年 7 月 15 日结束。如果当前优惠与之前优惠的结束时间相同,且当前优惠自 2024 年 5 月 6 日开始,那么它仍将于 2024 年 7 月 15 日结束。假设当前优惠续订 3 次,则当前优惠的条款如下:

  1. 2024 年 5 月 6 日 - 2024 年 7 月 15 日(第一期,于 7 月 15 日结束,与修改后的优惠同步结束)
  2. 2024 年 7 月 15 日 - 2025 年 1 月 15 日(首次续订期限)
  3. 2025 年 1 月 15 日 - 2025 年 7 月 15 日(第二个续订期限)
  4. 2025 年 7 月 15 日 - 2026 年 1 月 15 日(第三个续订期限)

相比之下,如果当前优惠与修订后的优惠不同期结束(例如,当 endPolicyAFTER_DURATION 时),则条款将为:

  1. 2024 年 5 月 6 日 - 2024 年 11 月 6 日(第一期,于 11 月 6 日结束,无同期)
  2. 2024 年 11 月 6 日 - 2025 年 5 月 6 日(第一个续订期限)
  3. 2025 年 5 月 6 日 - 2025 年 11 月 6 日(第二个续订期限)
  4. 2025 年 11 月 6 日 - 2026 年 5 月 6 日(第三个续订期限)

如果设置了此值,则必须满足以下条件:

  • 必须设置 singleProductOffer.amended_private_offer,且修正后的非公开优惠不得已结束。
  • 比例分摊政策不得更改(例如,您不能在 MONTHLY_PRORATEDMONTHLY_NOT_PRORATED 之间切换)。
  • 当前优惠不得具有自定义间隔(即不得设置 customIntervalPrice)。
  • term.duration_months 必须与修正后的非公开优惠的时长一致。
  • 修正后的非公开优惠不得具有标准间隔 MONTHLY_POSTPAY

目前尚不支持此功能。

方法

cancel

取消目标 PrivateOffer。

create

在给定的项目和位置中创建新的 PrivateOffer。

delete

删除目标 PrivateOffer。

get

获取单个 PrivateOffer 的详细信息。

list

列出指定父级对应的 PrivateOffers。

patch

更新目标 PrivateOffer。

publish

发布目标 PrivateOffer。

resolveAmendmentTarget

解决创建新的 PrivateOffer 时必须修正的现有优惠。