为客户创建多方专用产品/服务
ISV(发起方)和协作合作伙伴(卖方)应使用相同的 API 调用集为客户创建专用产品/服务。 下面是预期的流。
- ISV 创建产品/服务并提交以销售合作伙伴可见性
- ISV 通知销售合作伙伴(通过电子邮件或其他方法)产品/服务现在可用于销售合作伙伴编辑
- 销售合作伙伴评审并完成配置专用产品/服务并提交以供最终客户可见性查看
下面是用于创建产品/服务的方法。
请求
POST https://graph.microsoft.com/rp/product-ingestion/configure?$version=2022-07-01
请求头
标头 | 类型 | 说明 |
---|---|---|
授权 | 字符串 | 必需。 表单中的 Bearer <token> Microsoft Entra 访问令牌。 |
可选:clientID
请求参数
$version - 必需。 这是请求中使用的架构的版本。
请求正文
在为客户创建多方专用产品/服务时,以下选项反映了合作伙伴中心中的选项。 这些选项由以下 offerPricingType 值定义:
offerPricingType 值 | 合作伙伴中心专用产品/服务创建选项等效 |
---|---|
editExistingOfferPricingOnly | 自定义现有公共套餐和计划的定价 - 使用此选项为所有可交易的产品/服务类型创建专用产品/服务:SaaS、Azure 虚拟机和Azure 应用程序。 可以通过绝对定价或百分比折扣自定义合作伙伴定价。 |
saasNewCustomizedPlans | 自定义 SaaS 产品/服务的 定价、计量数量和用户限制 - 使用此选项通过自定义绝对合作伙伴价格、计量维度数量和用户限制为 SaaS 计划创建专用产品/服务。 |
vmSoftwareReservations | 自定义 VM 软件预留套餐 的定价和特定数量 - 使用此选项创建多方专用产品/服务来销售 VM 软件预留(1 年或 3 年),并自定义绝对合作伙伴价格、vCPU 大小、数量、持续时间和付款计划。 |
对于之前的三种定价类型选项,计划特定的资源要求可能会有所不同。 有关详细信息,请参阅下表:
资源名称 | editExistingOfferPricingOnly | saasNewCustomizedPlans | vmSoftwareReservations |
---|---|---|---|
定价。计划 | 将此设置为请求正文中要配置的公共计划的计划 ID | 不适用 | 不适用 |
pricing.basePlan | 不适用 | 将此设置为请求正文中要配置的公共计划的计划 ID | 将此设置为请求正文中要配置的公共计划的计划 ID |
pricing.newPlanDetails.name | 不适用 | 将此设置为将在请求正文中向客户显示的新计划的名称 | 不适用于请求正文,将在作业完成后在响应中生成并可用。 |
pricing.newPlanDetails.description | 不适用 | 将此设置为将在请求正文中向客户显示的新计划的说明 | 不适用于请求正文,将在作业完成时在响应中生成并可用。 |
customerContractRenewal 值 | 说明 |
---|---|
true | 专用产品/服务是现有客户合同的续订。 50% 折扣代理费用适用于你的私人产品/服务进行客户续订 |
false | 专用产品/服务 不是 现有客户合同的续订。 标准代理费用适用。 |
请求正文因调用方角色而异。 使用 privateOfferType 将 ISV 呼叫方与销售合作伙伴呼叫方区分开来。
调用方角色 | privateOfferType 值 |
---|---|
ISV (发起人) | multipartyPromotionOriginator |
销售合作伙伴(卖方) | multipartyPromotionChannelPartner |
请求正文示例
ISV 提供的示例请求正文,以使用折扣定价创建产品/服务,以便仅自定义现有公共计划的定价
ISV(发起方)需要提供产品/服务的所有基本详细信息。 必须包含名称。
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
{
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30",
"resourceName": "privateOffer",
"name": "privateOffercustomer1705",
"state": "live",
"privateOfferType": "multipartyPromotionOriginator",
"offerPricingType": "editExistingOfferPricingOnly",
"customerContractRenewal": false,
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"termsAndConditionsDocs": [
{
"sasUrl": "https://promotionpmeprod.blob.core.windows.net/promotionsblobdata/44c2b38a-fa64-4861-806c-6c486ec19b6d-769f3960-45af-42db-ab3b-6391841683d6",
"fileName": "Test1.pdf",
"customerFacingDocumentName": "Test1 T&C"
} ],
"notificationContacts": [ "amy@contoso.com" ],
"beneficiaries": [
{ "id": "xxxxxx-2163-5eea-ae4e-d6e88627c26b:6ea018a9-da9d-4eae-8610-22b51ebe260b_2019-05-31", "description": "Top First Customer"}
],
"partners": [
{
"id": "12345678",
"partnerName": "Market Place Test",
"location": "United States"
}
],
"pricing": [
{ "product": "product/34771906-9711-4196-9f60-4af380fd5042", "plan":"plan/123456","discountType": "percentage", "discountPercentage": 5 }
],
"notes": "ISV 123"
}
]
}
使用绝对定价自定义现有公共计划定价的示例请求正文
如果使用绝对定价而不是基于百分比的折扣,则可以在定义绝对定价的多方专用产品/服务资源之上创建一个新资源,然后将新创建的资源作为配置架构的资源列表中的另一个对象包含。
使用此方法获取现有公共计划的定价资源、编辑价格,然后使用已编辑的资源获取产品/服务。
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
绝对定价资源示例
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2023-07-15",
"resourceName": "newSimpleAbsolutePricing",
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"plan": "plan/987654",
"offerPricingType": "editExistingOfferPricingOnly",
"pricing": {
"recurrentPrice": {
"priceInputOption": "usd",
"prices": [
{
"pricePerPaymentInUsd": 1,
"billingTerm": {
"type": "month",
"value": 1
}
},
{
"pricePerPaymentInUsd": 2,
"paymentOption": {
"type": "month",
"value": 1
},
"billingTerm": {
"type": "year",
"value": 1
}
}
]
},
"customMeters": {
"priceInputOption": "usd",
"meters": {
"meter1": {
"pricePerPaymentInUsd": 1
}
}
}
}
}
将该资源作为对象包含在定价模块中
[
{
"product": "product/34771906-9711-4196-9f60-4af380fd5042",
"plan": "plan/123456",
"discountType": "percentage",
"discountPercentage": 5
},
{
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"plan": "plan/987654",
"discountType": "absolute",
"priceDetails": {
"resourceName": "newSimpleAbsolutePricing"
}
}
]
使用绝对定价自定义 SaaS 产品/服务定价、计量数量和用户限制的示例请求正文
使用以下方法为专用产品/服务创建绝对价格和可用性资源。
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
自定义价格和计量数量的统一费率 SaaS 产品/服务的示例绝对定价资源
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2023-07-15",
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"resourceName": "newSaaSPlanAbsolutePricing",
"plan": "plan/123456",
"offerPricingType": "saasNewCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "flatRate",
"priceInputOption": "usd",
"prices": [
{
"billingTerm": {
"type": "month",
"value": 1
},
"paymentOption": {
"type": "month",
"value": 1
},
"pricePerPaymentInUsd": 0.1
},
{
"billingTerm": {
"type": "year",
"value": 1
},
"paymentOption": {
"type": "month",
"value": 1
},
"pricePerPaymentInUsd": 0.12
}
]
},
"customMeters": {
"priceInputOption": "usd",
"meters": {
"meter1": {
"includedQuantities": [
{
"billingTerm": {
"type": "month",
"value": 1
},
"quantity": 10.0,
"isInfinite": false
},
{
"billingTerm": {
"type": "year",
"value": 1
},
"quantity": 15.0,
"isInfinite": false
}
]
},
"meter2": {
"includedQuantities": [
{
"billingTerm": {
"type": "month",
"value": 1
},
"isInfinite": true
},
{
"billingTerm": {
"type": "year",
"value": 1
},
"isInfinite": true
}
]
}
}
}
}
}
每个用户 SaaS 产品/服务的示例绝对定价资源,用于自定义价格和用户限制
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2023-07-15",
"resourceName": "newSaaSPlanAbsolutePricing",
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"plan": "plan/123456",
"offerPricingType": "saasNewCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "perUser",
"priceInputOption": "usd",
"userLimits": {
"min": 20,
"max": 100
},
"prices": [
{
"billingTerm": {
"type": "month",
"value": 1
},
"paymentOption": {
"type": "month",
"value": 1
},
"pricePerPaymentInUsd": 0.01
},
{
"billingTerm": {
"type": "year",
"value": 1
},
"paymentOption": {
"type": "year",
"value": 1
},
"pricePerPaymentInUsd": 0.02
}
]
}
}
}
将该资源作为对象包含在定价模块中
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
{
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30",
"name": "privateOffercustomer1705",
"state": "live",
"privateOfferType": "multipartyPromotionOriginator",
"offerPricingType": "newSimpleAbsolutePricing",
"customerContractRenewal": false,
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"partners": [
{
"id": "12345678",
"partnerName": "Market Place Test",
"location": "United States"
}
],
"termsAndConditionsDocs": [
{
"sasUrl": "https://promotionpmeprod.blob.core.windows.net/promotionsblobdata/44c2b38a-fa64-4861-806c-6c486ec19b6d-769f3960-45af-42db-ab3b-6391841683d6",
"fileName": "Test1.pdf",
"customerFacingDocumentName": "Test1 T&C"
} ],
"notificationContacts": [ "amy@contoso.com" ],
"beneficiaries": [
{ "id": "xxxxxx-2163-5eea-ae4e-d6e88627c26b:6ea018a9-da9d-4eae-8610-22b51ebe260b_2019-05-31", "description": "Top First Customer"}
],
"pricing": [
{
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"discountType": "absolute",
"priceDetails": {
"resourceName": "newSaaSPlanAbsolutePricing"
}
"basePlan": "plan/123456",
"newPlanDetails": {
"name": "newPlanName",
"description": "newPlanDescription"
}
],
"notes": "ISV 123"
}
]
}
使用绝对定价自定义 VM 软件预留套餐的定价和特定数量的示例请求正文
使用以下方法为产品/服务创建绝对价格和可用性资源。
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
自定义价格和数量的 VM 产品/服务的示例绝对定价资源
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2023-07-15",
"resourceName": "newVMSRAbsolutePricing",
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"offerPricingType": "vmSoftwareReservations",
"plan": "plan/987654",
"softwareReservation": {
"reservationDuration": {
"type": "year",
"value": 1
},
"paymentSchedule": {
"type": "year",
"value": 1
},
"vmPrices": {
"36Core": {
"quantity": 4.0,
"unitPricePerPaymentPeriodInUsd": 0.04
}
}
}
}
将该资源作为对象包含在定价模块中
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
{
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30",
"name": "privateOffercustomer1705",
"state": "live",
"privateOfferType": "multipartyPromotionOriginator",
"offerPricingType": "vmSoftwareReservations",
"customerContractRenewal": false,
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"partners": [
{
"id": "12345678",
"partnerName": "Market Place Test",
"location": "United States"
}
],
"termsAndConditionsDocs": [
{
"sasUrl": "https://promotionpmeprod.blob.core.windows.net/promotionsblobdata/44c2b38a-fa64-4861-806c-6c486ec19b6d-769f3960-45af-42db-ab3b-6391841683d6",
"fileName": "Test1.pdf",
"customerFacingDocumentName": "Test1 T&C"
} ],
"notificationContacts": [ "amy@contoso.com" ],
"beneficiaries": [
{ "id": "xxxxxx-2163-5eea-ae4e-d6e88627c26b:6ea018a9-da9d-4eae-8610-22b51ebe260b_2019-05-31", "description": "Top First Customer"}
],
"pricing": [
{
"product": "product/7ba807c8-386a-4efe-80f1-b97bf8a554f8",
"discountType": "absolute",
"priceDetails": {
"resourceName": "newVMSRAbsolutePricing"
}
"basePlan": "plan/987654"
],
"notes": "ISV 123"
}
]
}
合作伙伴完成产品/服务创建的示例请求
销售合作伙伴应使用 ISV 提供的多方专用产品/服务 ID 来配置客户调整百分比(标记)、销售合作伙伴自定义协议、由合作伙伴准备和销售合作伙伴联系人。
以下示例基于使用产品/服务 ID 检索产品/服务详细信息时返回的响应正文。
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
{
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30",
"resourceName": "privateOffer",
"name": "privateOffercustomer1705",
"state": "live",
"privateOfferType": "multipartyPromotionChannelPartner",
"offerPricingType": "editExistingOfferPricingOnly",
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"preparedBy": "tester@microsoft.com",
"originatorTermsAndConditionsDocs": [
{
"sasUrl": "https://promotionpmeprod.blob.core.windows.net/promotionsblobdata/44c2b38a-fa64-4861-806c-6c486ec19b6d-769f3960-45af-42db-ab3b-6391841683d6",
"fileName": "Test1.pdf",
"customerFacingDocumentName": "Test1 T&C"
} ],
"termsAndConditionsDocs": [
{
"sasUrl": "https://promotionpmeprod.blob.core.windows.net/promotionsblobdata/44c2b38a-fa64-4861-806c-6c486ec19b6d-769f3960-45af-42db-ab3b-6391841683d6",
"fileName": "Test1.pdf",
"customerFacingDocumentName": "Test1 T&C"
} ],
"notificationContacts": [ "amy@contoso.com" ],
"beneficiaries": [
{ "id": "xxxxxx-2163-5eea-ae4e-d6e88627c26b:6ea018a9-da9d-4eae-8610-22b51ebe260b_2019-05-31", "description": "Top First Customer"}
],
"partners": [
{
"id": "12345678",
"partnerName": "Market Place Test",
"location": "United States"
}
],
"originatorPricing": [
{
"product": "product/34771906-9711-4196-9f60-4af380fd5042",
"plan":"plan/123456",
"discountType": "percentage",
"discountPercentage": 5
"markupPercentage": 1.0
}
],
"lastModified": "2023-01-19",
"eTag": "\"7f020249-0000-0800-0000-63c9b4ca0000\"",
}
]
}
上一示例中的关键标注
- 销售合作伙伴必须提供 preparedBy 属性。
- ISV 自定义条款和条件是可查看的,但无法由销售合作伙伴编辑,它们被捕获在资源 发起方TermsAndConditionsDocs 中。
- 销售合作伙伴可以在 TermsAndConditionsDocs 资源中上传自己的自定义术语和条件。
- 销售合作伙伴可以添加自己的联系人,以在 notificationContacts 资源中通知产品/服务。
- 受益者和合作伙伴属性是可查看的,但无法由销售合作伙伴编辑。
- 定价资源显示为发起方Pricing,markupPercentage 是必需的,必须在提交时由销售合作伙伴提供,定价资源中的所有其他属性都是只读的。
响应
响应包含稍后可用于轮询状态的 jobId :
{
"$schema": "https://schema.mp.microsoft.com/schema/configure-status/2022-07-01",
"jobId": "c32dd7e8-8619-462d-a96b-0ac1974bace5",
"jobStatus": "notStarted",
"jobResult": "pending",
"jobStart": "2021-12-21T21:29:54.9702903Z",
"jobEnd": "0001-01-01",
"errors": []
}
错误代码
HTTP 状态代码 | 说明 |
---|---|
401 | 身份验证错误:确保使用有效的Microsoft Entra 访问令牌。 |
400 | 架构验证。 确保请求正文遵循正确的架构并包含所有必填字段。 |