Creare un'offerta privata multiparty per un cliente

L'ISV (originatore) e il partner che collabora (venditore) devono usare lo stesso set di chiamate API per creare un'offerta privata per un cliente. Ecco il flusso previsto.

  1. ISV crea l'offerta e invia per la vendita della visibilità dei partner
  2. ISV notifica al partner di vendita (tramite posta elettronica o altri metodi) che l'offerta è ora disponibile per la vendita delle modifiche dei partner
  3. Vendita di recensioni dei partner e completa la configurazione dell'offerta privata e invia per la visibilità dei clienti finali

Ecco il metodo da chiamare per la creazione dell'offerta.

Richiedi

POST https://graph.microsoft.com/rp/product-ingestion/configure?$version=2022-07-01

Intestazione della richiesta

Intestazione Type Descrizione
Autorizzazione Stringa Obbligatorio. Token di accesso Di Microsoft Entra nel formato Bearer <token>.

Facoltativo: clientID

Parametri della richiesta

$version : obbligatorio. Si tratta della versione dello schema in uso nella richiesta.

Corpo della richiesta

Le opzioni seguenti rispecchiano le opzioni nel Centro per i partner quando si crea un'offerta privata multiparty per un cliente. Queste opzioni sono definite dai valori offerPricingType seguenti:

valore offerPricingType Opzione di creazione dell'offerta privata del Centro per i partner equivalente
editExistingOfferPricingOnly Personalizzare i prezzi per offerte e piani pubblici esistenti: usare questa opzione per creare un'offerta privata per tutti i tipi di offerta transazionabili: SaaS, Azure Macchine virtuali e app Azure licazioni. È possibile personalizzare i prezzi dei partner tramite prezzi assoluti o sconti percentuali.
saasNewCustomizedPlans Personalizzare prezzi, quantità di contatori e limiti utente per l'offerta SaaS: usare questa opzione per creare un'offerta privata per un piano SaaS personalizzando il prezzo assoluto dei partner, le quantità di dimensioni di misurazione e i limiti utente.
vmSoftwareReservations Personalizzare i prezzi e le quantità specifiche per le offerte di prenotazione software della macchina virtuale: usare questa opzione per creare un'offerta privata multiparty per vendere prenotazioni software vm (1 anno o 3 anni) e personalizzare il prezzo assoluto dei partner, le dimensioni vCPU, le quantità, la durata e la pianificazione dei pagamenti.

Per le tre opzioni del tipo di prezzo precedenti, i requisiti delle risorse specifiche del piano possono variare. Per informazioni dettagliate, vedere la tabella seguente:

Nome risorsa editExistingOfferPricingOnly saasNewCustomizedPlans vmSoftwareReservations
Prezzi. Piano Impostare questa opzione sull'ID piano del piano pubblico da configurare nel corpo della richiesta Non applicabile Non applicabile
pricing.basePlan Non applicabile Impostare questa opzione sull'ID piano del piano pubblico da configurare nel corpo della richiesta Impostare questa opzione sull'ID piano del piano pubblico da configurare nel corpo della richiesta
pricing.newPlanDetails.name Non applicabile Impostare questo valore sul nome del nuovo piano che verrà visualizzato al cliente nel corpo della richiesta Non applicabile al corpo della richiesta, verrà generato e disponibile nel sistema nella risposta del processo al termine.
pricing.newPlanDetails.description Non applicabile Impostare questa proprietà sulla descrizione che verrà visualizzata al cliente per il nuovo piano nel corpo della richiesta Non applicabile al corpo della richiesta, verrà generato e disponibile nel sistema nella risposta del processo al termine.

Il corpo della richiesta varia a seconda del ruolo chiamante. Usare privateOfferType per distinguere il chiamante ISV dalla vendita del chiamante partner.

Ruolo chiamante valore privateOfferType
ISV (Originator) multipartyPromotionOriginator
Partner di vendita (venditore) multipartyPromotionChannelPartner

Esempi di corpo della richiesta

Corpo della richiesta di esempio da ISV per creare l'offerta usando i prezzi di sconto per personalizzare i prezzi solo per il piano pubblico esistente

L'ISV (originator) è necessario per fornire tutti i dettagli fondamentali dell'offerta. Deve includere un nome.

{
 "$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
  "resources": [ 
    {
       "$schema": "https://schema.mp.microsoft.com/schema/private-offer/2023-07-15", 
"resourceName": "privateOffer",
       "name": "privateOffercustomer1705",
       "state": "live",
       "privateOfferType": "multipartyPromotionOriginator",
       "offerPricingType": "editExistingOfferPricingOnly",
       "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"
    }
  ]
}

Corpo della richiesta di esempio che usa prezzi assoluti per personalizzare i prezzi solo per il piano pubblico esistente

Se si usano prezzi assoluti anziché lo sconto basato su percentuale, è possibile creare una nuova risorsa sopra la risorsa offerta privata multiparty che definisce i prezzi assoluti, quindi includere la risorsa appena creata come un altro oggetto nell'elenco delle risorse dello schema di configurazione.

Usare questo metodo per ottenere la risorsa dei prezzi per il piano pubblico esistente, modificare i prezzi e quindi usare la risorsa modificata per l'offerta.

GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15

Risorsa prezzi assoluta di esempio

{
    "$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
                }
            }
        }
    }
}

Includere tale risorsa come oggetto nel modulo prezzi

[
    {
        "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"
        }
    }
]

Corpo della richiesta di esempio che usa prezzi assoluti per personalizzare prezzi, quantità di misurazione e limiti utente per l'offerta SaaS

Usare il metodo seguente per creare un prezzo assoluto e una risorsa di disponibilità per l'offerta privata.

GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15

Risorsa prezzi assoluta di esempio per un'offerta SaaS a tariffa fissa che personalizza le quantità di prezzo e contatore

{
    "$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
                        }
                    ]
                }
            }
        }
    }
}

Risorsa prezzi assoluta di esempio per un'offerta SaaS per utente che personalizza i limiti di prezzo e utente

{
    "$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
                }
            ]
        }
    }
}

Includere tale risorsa come oggetto nel modulo prezzi


{
 "$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
  "resources": [ 
    {
       "$schema": "https://schema.mp.microsoft.com/schema/private-offer/2023-07-15", 
       "name": "privateOffercustomer1705",
       "state": "live",
       "privateOfferType": "multipartyPromotionOriginator",
       "offerPricingType": "newSimpleAbsolutePricing",
       "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"
     }
  ]
}

Corpo della richiesta di esempio che usa prezzi assoluti per personalizzare i prezzi e le quantità specifiche per le offerte di prenotazione software della macchina virtuale

Usare il metodo seguente per creare un prezzo assoluto e una risorsa di disponibilità per l'offerta.

GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15

Risorsa prezzi assoluta di esempio per un'offerta di macchina virtuale che personalizza i prezzi e le quantità

{
    "$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
            }
        }
    }       
}

Includere tale risorsa come oggetto nel modulo prezzi

{
 "$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
  "resources": [ 
    {
       "$schema": "https://schema.mp.microsoft.com/schema/private-offer/2023-07-15", 
       "name": "privateOffercustomer1705",
       "state": "live",
       "privateOfferType": "multipartyPromotionOriginator",
       "offerPricingType": "vmSoftwareReservations",
       "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"
     }
  ]
}

Richiesta di esempio da parte del partner per completare la creazione dell'offerta

Il partner di vendita deve utilizzare l'ID offerta privata multiparty fornito dall'ISV per configurare la percentuale di rettifica del cliente (markup), vendere contratti personalizzati dei partner, preparati da e vendere contatti partner.

L'esempio seguente si basa sul corpo della risposta restituito durante il recupero dei dettagli dell'offerta usando l'ID offerta.

{
 "$schema": "https://schema.mp.microsoft.com/schema/configure/2022-07-01",
  "resources": [ 
    {
       "$schema": "https://schema.mp.microsoft.com/schema/private-offer/2023-07-15", 
"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\"",
    }
  ]
}

Callout delle chiavi nell'esempio precedente

  • Il partner di vendita deve fornire l'attributo preparedBy .
  • I termini e le condizioni personalizzati ISV sono visualizzabili, ma non possono essere modificati dal partner di vendita, vengono acquisiti nell'origine risorseTermsAndConditionsDocs.
  • Il partner di vendita può caricare il proprio termine personalizzato e la condizione nella risorsa TermsAndConditionsDocs .
  • Il partner di vendita può aggiungere i propri contatti per ricevere una notifica dell'offerta nella risorsa notificationContacts .
  • Gli attributi del beneficiario e dei partner sono visualizzabili, ma non possono essere modificati dal partner di vendita.
  • La risorsa prezzi viene visualizzata come originatorPricing, markupPercentage è obbligatoria e deve essere fornita dal partner di vendita durante l'invio, tutti gli altri attributi nella risorsa dei prezzi sono di sola lettura.

Response

La risposta contiene il jobId che è possibile usare in un secondo momento per eseguire il polling dello stato:

{
    "$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": []
}

Codici di errore

Codice di stato HTTP Descrizione
401 Errore di autenticazione: assicurarsi di usare un token di accesso Microsoft Entra valido.
400 Convalida dello schema. Verificare che il corpo della richiesta stia seguendo lo schema corretto e includa tutti i campi obbligatori.