为客户创建多方专用产品/服务

ISV(发起方)和协作合作伙伴(卖方)应使用相同的 API 调用集为客户创建专用产品/服务。 下面是预期的流。

  1. ISV 创建产品/服务并提交以销售合作伙伴可见性
  2. ISV 通知销售合作伙伴(通过电子邮件或其他方法)产品/服务现在可用于销售合作伙伴编辑
  3. 销售合作伙伴评审并完成配置专用产品/服务并提交以供最终客户可见性查看

下面是用于创建产品/服务的方法。

请求

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 架构验证。 确保请求正文遵循正确的架构并包含所有必填字段。