Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Use this method to create a private offer for a customer directly as an ISV.
Request
POST https://graph.microsoft.com/rp/product-ingestion/configure?$version=2022-07-01
Request header
Header | Type | Description |
---|---|---|
Authorization | String | Required. The Microsoft Entra access token in the form Bearer <token> . |
Optional: clientID
Request parameters
$version - required. This is the version of the schema that is being used in the request.
Request body
Provide the details of the private offer using the ISV to Customer private offer schema. This must include a name.
The following options mirror the options in Partner Center when creating a private offer for a customer. Options are defined by the offerPricingType values listed here:
offerPricingType value | Partner Center private offer creation option equivalent |
---|---|
editExistingOfferPricingOnly | Customize pricing for existing public offer and plans - Use this option to create a private offer for all transactable offer types: SaaS, Azure Virtual Machines, and Azure Applications. You can customize your partner pricing via absolute pricing or percentage discounts. |
saasNewCustomizedPlans | Customize pricing, meter quantities, and user limits for SaaS offer - Use this option to create a private offer for a SaaS plan by customizing your absolute partner price, metering dimension quantities, and user limits. |
newCustomizedPlans | Customize SaaS plans and professional services - Use this option to customize pricing and terms and conditions for SaaS products and professional services. Additionally, customize metering dimensions and user limits for SaaS products. |
vmSoftwareReservations | Customize pricing and specific quantities for VM software reservation offers - Use this option to create a multiparty private offer to sell VM software reservations (1-year or 3-year) and customize the absolute partner price, vCPU size, quantities, duration, and payment schedule. |
For the previous three pricing type options, plan-specific resources requirements can vary, see following table for detail.
Resource name | editExistingOfferPricingOnly | saasNewCustomizedPlans | newCustomizedPlans | newCustomizedPlansvmSoftwareReservations |
---|---|---|---|---|
pricing.Plan | Set this to the plan ID of the public plan to be configured in the request body | Not applicable | Not applicable | Not applicable |
pricing.basePlan | Not applicable | Set this to the plan ID of the public plan to be configured in the request body | Set this to the plan ID of the public plan to be configured in the request body | Set this to the plan ID of the public plan to be configured in the request body |
pricing.newPlanDetails.name | Not applicable | Set this to the name of the new plan that will be shown to the customer in the request body | Set this to the name of the new plan that will be shown to the customer in the request body | Not applicable to the request body, will be system generated and available in the response of the job when completed. |
pricing.newPlanDetails.description | Not applicable | Set this to the description that will be shown to the customer for the new plan in the request body | Set this to the description that will be shown to the customer for the new plan in the request body | Not applicable to the request body, will be system generated and available in the response of the job when complete. |
customerContractRenewal value | Description |
---|---|
true | Private offer is a renewal of an existing customer contract. A 50% discounted agency fee applies to your private offer for customer renewals |
false | Private offer is not a renewal of an existing customer contract. Your standard agency fee applies. |
Request body samples
Sample request body using discount pricing to customize pricing for existing public plan only
{
"$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": "customerPromotion",
"offerPricingType": "editExistingOfferPricingOnly",
"customerContractRenewal": false,
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"preparedBy": "amy@contoso.com",
"termsAndConditionsDocSasUrl": "https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4rFOA ",
"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/34771906-9711-4196-9f60-4af380fd5042", "plan":"plan/123456","discountType": "percentage", "discountPercentage": 5 }
]
}
]
}
Sample request body using absolute pricing to customize pricing for existing public plan only
If you're using absolute pricing instead of percentage-based discounting:
- Create a new resource above the private offer resource that defines the absolute pricing
- Include that newly created resource as another object in the resources list of the configure schema.
Use this method to obtain the pricing resource for your existing public plan, edit the prices, and then use the edited resource for your private offer.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Sample absolute pricing resource
{
"$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",
"offerPricingType": "editExistingOfferPricingOnly",
"plan": "plan/987654",
"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
}
}
}
}
}
Include that resource as an object in the pricing module
[
{
"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"
}
}
]
Sample request body using absolute pricing to customize pricing, metering quantities, and user limits for SaaS offer
Use the following method to create an absolute price and availability resource for the offer.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Sample absolute pricing resource for a flat rate SaaS offer that customizes price and meter quantities
{
"$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
}
]
}
}
}
}
}
Sample absolute pricing resource for a per user SaaS offer that customizes price and user limits
{
"$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
}
]
}
}
}
Include that resource as an object in the pricing module
{
"$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": "customerPromotion",
"offerPricingType": "saasNewCustomizedPlans",
"customerContractRenewal": false,
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"preparedBy": "amy@contoso.com",
"termsAndConditionsDocSasUrl": "https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4rFOA",
"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"
}
]
}
]
}
Sample request body that includes both a Professional Service and an SaaS plan with custom pricing
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
// Pricing details for professional service product with custom flat rate
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2024-03-01-preview1",
"resourceName": "cmPricing",
"product": "product/c4a46f0a-9552-47cb-b15b-c5bf23a85aac",
"plan": "plan/c4a46f0a-9552-47cb-b15b-c5bf23a85aac/24b93378-fa94-4656-813a-2eef6fd83341",
"offerPricingType": "newCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "flatRate",
"priceInputOption": "usd",
"prices": [{
"contractDuration": {
"type": "month",
"value": 1
},
"billingFrequency": {
"type": "month",
"value": 1
},
"pricePerPaymentInUsd": 2
}
]
}
}
},
// Pricing details for SaaS product with custom flat rate and custom meters
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2024-03-01-preview1",
"resourceName": "cmPricing1",
"product": "product/ea95b54f-2989-4a89-9913-f64503b100d7",
"plan": "plan/ea95b54f-2989-4a89-9913-f64503b100d7/21915afa-0663-460f-8566-06f8958efaaf",
"offerPricingType": "newCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "flatRate",
"priceInputOption": "usd",
"prices": [{
"contractDuration": {
"type": "month",
"value": 1
},
"billingFrequency": {
"type": "month",
"value": 1
},
"pricePerPaymentInUsd": 3.5
}
]
},
"customMeters": {
"priceInputOption": "usd",
"meters": {
"id003": {
"includedQuantities": [{
"billingTerm": {
"type": "month",
"value": 1
},
"isInfinite": false,
"quantity": 10.0
}
],
"pricePerPaymentInUsd": 1
},
"id001": {
"includedQuantities": [{
"billingTerm": {
"type": "month",
"value": 1
},
"isInfinite": false,
"quantity": 10.0
}
],
"pricePerPaymentInUsd": 1
},
"id002": {
"includedQuantities": [{
"billingTerm": {
"type": "month",
"value": 1
},
"isInfinite": false,
"quantity": 10.0
}
],
"pricePerPaymentInUsd": 1
}
}
}
}
},
// Private offer details
{
"resourceName": "privateoffer",
"name": "private_offer_for_customer_xyz",
"privateOfferType": "customerPromotion",
"variableStartDate": true,
"offerPricingType": "newCustomizedPlans",
"end": "2025-02-28",
"acceptBy": "2025-02-17",
"preparedBy": "example@outlook.com",
"notificationContacts": [],
"state": "live",
"beneficiaries": [{
"id": "7c05a543-80ff-571e-9f98-1063b3b53cf2:99ad03ad-2d1b-4889-a452-090ad407d25f_2019-05-31",
"description": ""
}
],
"pricing": [
// Pricing details for the Professional Service
{
"product": "product/ea95b54f-2989-4a89-9913-f64503b100d7",
"discountType": "absolute",
"priceDetails": {
"resourceName": "cmPricing1"
},
"basePlan": "plan/ea95b54f-2989-4a89-9913-f64503b100d7/21915afa-0663-460f-8566-06f8958efaaf",
"newPlanDetails": {
"name": "custom_saas",
"description": "customized saas plan for customer xyz"
}
},
// Pricing details for the SaaS offer
{
"product": "product/c4a46f0a-9552-47cb-b15b-c5bf23a85aac",
"discountType": "absolute",
"priceDetails": {
"resourceName": "cmPricing"
},
"basePlan": "plan/c4a46f0a-9552-47cb-b15b-c5bf23a85aac/24b93378-fa94-4656-813a-2eef6fd83341",
"newPlanDetails": {
"name": "custom_professional_service",
"description": "customized professional service plan for customer xyz"
}
}
],
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30"
}
]
}
Sample request body to customize pricing in USD for SaaS flat-rate plan with flexible billing schedule
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
// Pricing details for SaaS flat-rate product with flexible billing
{
//new schema version 2025-05-01 for pricing and availability
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2025-05-01",
"resourceName": "poPricing",
"product": "product/<productId>",
"plan": "plan/<productId>/<planId>",
"offerPricingType": "newCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "flatRate",
"priceInputOption": "usd",
"prices": [
{
//taxonomy changed from “billingTerm” to “contractDuration”
"contractDuration": {
"type": "year",
"value": 1
},
//taxonomy changed from “paymentOption” to “billingFrequency”
"billingFrequency": {
//new value for flexible billing schedule
"type": "flexible",
"value": 1
},
// Details of flexible billing schedule installments including charge dates, amounts, and notes
"flexibleSchedule": {
"initialCharge": {
"pricePerPaymentInUsd": 0.25,
"note": "Activation"
},
"billingSchedule": [
{
"chargeDate": "2024-10-14", // date formatted as yyyy-mm-dd
"pricePerPaymentInUsd": 0.35,
"note": "Charge#1"
},
{
"chargeDate": "2024-10-15",
"pricePerPaymentInUsd": 0.23,
"note": "Charge#2"
}
]
}
}
]
},
// Pricing details for SaaS metered billing dimension (also known as custom meters)
"customMeters": {
"priceInputOption": "usd",
"meters": {
"uatmeter": {
"includedQuantities": [
{
//taxonomy changed from “billingTerm” to “contractDuration”
"contractDuration ": {
"type": "year",
"value": 1
},
"isInfinite": false,
"quantity": 100
}
],
"pricePerPaymentInUsd": 1.0
},
"uatmeter2": {
"includedQuantities": [
{
"contractDuration ": {
"type": "year",
"value": 1
},
"isInfinite": false,
"quantity": 0
}
],
"pricePerPaymentInUsd": 1.0
}
}
}
}
},
//Private Offer Details
{
"name": "FlexBilling_SAAS_Test_DAPI",
"privateOfferType": "customerPromotion",
"variableStartDate": true,
// Set for offerPricingType to “newCustomizedPlans” for SaaS plans with absolute pricing
"offerPricingType": "newCustomizedPlans",
"end": "2024-12-31",
"acceptBy": "2024-04-30",
"preparedBy": "xyz@contoso.com",
"notificationContacts": [“xyz@contoso.com”],
"state": "live",
"beneficiaries": [
{
"id": "<customerbillingId>",
"description": "Top First Customer"
}
],
"pricing": [
{
"product": "product/<productId>",
"discountType": "absolute",
"priceDetails": {
"resourceName": "poPricing"
},
"basePlan": "plan/<productId>/<planId>",
"newPlanDetails": {
"name": "contoso_flexbill_plan",
"description": "Sample plan for flexible billing"
}
}
],
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30"
}
]
}
Sample request body to customize market pricing for SaaS flat-rate plan with flexible billing schedule
Reference the ISO-2 Country codes and currencies supported for the commercial marketplace. See Geographic availability and currency support for the commercial marketplace to learn more.
Schema for SaaS market pricing for a flexible billing schedule
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
// Pricing details for SaaS flat-rate product with flexible billing
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2025-05-01",
"resourceName": "poPricing",
"product": "product/<productId>",
"plan": "plan/<productId>/<planId>",
"offerPricingType": "newCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "flatRate",
"priceInputOption": "perMarket",
"prices": [
{
"contractDuration": {
"type": "year",
"value": 2
},
"billingFrequency": {
"type": "flexible",
"value": 1
},
// Details of flexible billing schedule installments including charge dates, amounts, and notes
"flexibleSchedule": {
"initialCharge": {
"note": "Activation",
"prices": [
{
"markets": [
"ad"
],
"price": 0.23,
"currency": "eur"
}
]
},
"billingSchedule": [
{
"chargeDate": "2024-10-18",
"note": "customized note",
"prices": [
{
"markets": [
"ad"
],
"price": 0.45,
"currency": "eur"
}
]
}
]
}
}
]
},
// Pricing details for SaaS metered billing dimension (also known as custom meters)
"customMeters": {
"priceInputOption": "perMarket",
"meters": {
"emails": {
"includedQuantities": [
{
" contractDuration ": {
"type": "year",
"value": 2
},
"isInfinite": false,
"quantity": 3000
}
],
"prices": [
{
"markets": [
"ad"
],
"price": 0.96,
"currency": "eur"
}
]
}
}
}
}
},
{
"resourceName": "po",
"name": "SaaS_FlexBill_DAPI_permarket",
"privateOfferType": "customerPromotion",
"variableStartDate": true,
"offerPricingType": "newCustomizedPlans",
"end": "2024-12-31",
"acceptBy": "2024-12-31",
"preparedBy": "xyz@contoso.com",
"notificationContacts": ["xyz@contoso.com"],
"state": "live",
"beneficiaries": [
{
"id": "<billingId>",
"description": "Top First Customer"
}
],
"pricing": [
{
"product": "product/<productId>",
"discountType": "absolute",
"priceDetails": {
"resourceName": "poPricing"
},
"basePlan": "plan/<productId>/<planId>",
"newPlanDetails": {
"name": "SaaS Multi-Year FlexBill DAPI",
"description": "test"
}
}
],
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30"
}
]
}
Notes
Flexible billing schedule isn't applicable for license-based SaaS offers.
Flexible billing schedule is applicable for the flat-rate entitlement pricing, not to custom meters.
Professional services API schema is the same as SaaS. Custom meters aren't supported by professional services.
Sample request body to customize pricing for Professional Service with flexible billing schedule
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2025-05-01",
"resourceName": "poPricing",
"product": "product/<productId>",
"plan": "plan/<productId>/<planId>",
"offerPricingType": "newCustomizedPlans",
"pricing": {
"recurrentPrice": {
"recurrentPriceMode": "flatRate",
"priceInputOption": "usd",
"prices": [
{
"contractDuration": {
"type": "year",
"value": 1
},
"billingFrequency": {
"type": "flexible",
"value": 1
},
"flexibleSchedule": {
"initialCharge": {
"pricePerPaymentInUsd": 0.11,
"note": "activation"
},
"billingSchedule": [
{
"chargeDate": "2024-10-06",
"pricePerPaymentInUsd": 0.41
},
{
"chargeDate": "2024-10-07",
"pricePerPaymentInUsd": 0.16,
"note": "customized note up to 100 characters"
},
{
"chargeDate": "2024-10-09",
"pricePerPaymentInUsd": 0.20
}
]
}
}
]
}
}
},
{
"name": "ProfessionalService_Sample_Name",
"privateOfferType": "customerPromotion",
"variableStartDate": true,
"offerPricingType": "newCustomizedPlans",
"end": "2024-12-31",
"acceptBy": "2024-12-15",
"preparedBy": "<preparedBy>",
"notificationContacts": [],
"state": "live",
"beneficiaries": [
{
"id": "<billingId>",
"description": ""
}
],
"pricing": [
{
"product": "product/<productId>",
"discountType": "absolute",
"priceDetails": {
"resourceName": "poPricing"
},
"basePlan": "plan/<productId>/<planId>",
"newPlanDetails": {
"name": "ProfessionalService_DAPI",
"description": "S2"
}
}
],
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30"
}
]
}
Create multiparty private offer for customer API – Request body samples
For more information, see Create a multiparty private offer for a customer.
Sample request body using absolute pricing to customize pricing and specific quantities for VM software reservation offers
Use the following method to create an absolute price and availability resource for the offer.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Sample absolute pricing resource for a VM offer that customizes price and quantities
{
"$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
}
}
}
}
Include that resource as an object in the pricing module
{
"$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": "customerPromotion",
"offerPricingType": "vmSoftwareReservations",
"customerContractRenewal": false,
"variableStartDate": true,
"end": "2022-01-31",
"acceptBy": "2022-02-28",
"preparedBy": "amy@contoso.com",
"termsAndConditionsDocSasUrl": "https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4rFOA",
"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"
]
}
]
}
Sample request body to customize pricing for VM software reservation with flexible billing schedule
{
"$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
"resources": [
{
"$schema": "https://schema.mp.microsoft.com/schema/price-and-availability-private-offer-plan/2025-05-01",
"resourceName": "poPricing",
"product": "product/<productId>",
"plan": "plan/<productId>/<planId>",
"offerPricingType": "vmSoftwareReservations",
"softwareReservation": {
"reservationDuration": {
"type": "year",
"value": 3
},
"paymentSchedule": {
"type": "flexible",
"value": 1
},
"vmPrices": {
"2Core": {
"quantity": 2.0,
"flexibleSchedule": {
"initialCharge": {
"unitPricePerPaymentPeriodInUsd": 0.10
},
"billingSchedule": [
{
"chargeDate": "2024-10-07",
"unitPricePerPaymentPeriodInUsd": 0.55
},
{
"chargeDate": "2024-10-22",
"unitPricePerPaymentPeriodInUsd": 0.18
}
]
}
},
"4Core": {
"quantity": 1.0,
"flexibleSchedule": {
"initialCharge": {
"unitPricePerPaymentPeriodInUsd": 0.00,
"note": "activation"
},
"billingSchedule": [
{
"chargeDate": "2024-10-07",
"unitPricePerPaymentPeriodInUsd": 0.52
},
{
"chargeDate": "2024-10-08",
"unitPricePerPaymentPeriodInUsd": 0.34,
"note": "customized note up to 100 characters"
},
{
"chargeDate": "2024-10-13",
"unitPricePerPaymentPeriodInUsd": 0.53,
"note": "customized note up to 100 characters"
}
]
}
}
}
}
},
{
"name": "VMSR_Sample_Name",
"privateOfferType": "customerPromotion",
"variableStartDate": true,
"offerPricingType": "vmSoftwareReservations",
"end": "2024-12-31",
"acceptBy": "2024-12-31",
"preparedBy": "<preparedBy>",
"notificationContacts": [],
"state": "live",
"beneficiaries": [
{
"id": "<billingId>",
"description": ""
}
],
"pricing": [
{
"product": "product/<productId>",
"discountType": "absolute",
"priceDetails": {
"resourceName": "poPricing"
},
"basePlan": "plan/<productId>/<planId>"
}
],
"$schema": "https://schema.mp.microsoft.com/schema/private-offer/2024-09-30"
}
]
}
Response
The response contains the jobId you can use later to poll the status:
{
"$schema": "https://schema.mp.microsoft.com/schema/configure-status/2023-07-15",
"jobId": "c32dd7e8-8619-462d-a96b-0ac1974bace5",
"jobStatus": "notStarted",
"jobResult": "pending",
"jobStart": "2021-12-21T21:29:54.9702903Z",
"jobEnd": "0001-01-01",
"errors": []
}
Error codes
HTTP status code | Description |
---|---|
401 | Authentication Error: Ensure you're using a valid Microsoft Entra access token. |
400 | Schema Validation. Ensure your request body is following the correct schema and includes all required fields. |