Erstellen eines privaten Mehrparteienangebots für einen Kunden
Der ISV (Absender) und der Zusammenarbeitspartner (Verkäufer) sollten die gleichen API-Aufrufe verwenden, um ein privates Angebot für einen Kunden zu erstellen. Dies ist der erwartete Fluss.
- ISV erstellt das Angebot und übermittelt die Sichtbarkeit von Vertriebspartnern.
- ISV benachrichtigt den Vertriebspartner (per E-Mail oder andere Methoden), das Angebot ist jetzt für den Verkauf von Partnerbearbeitungen verfügbar.
- Verkaufen von Partnerrezensionen und Abschluss der Konfiguration des privaten Angebots und Übermittelt für die Sichtbarkeit von Endbenutzern
Hier ist die Methode, um die Erstellung des Angebots aufzurufen.
Anfordern
POST https://graph.microsoft.com/rp/product-ingestion/configure?$version=2022-07-01
Anforderungsheader
Header | Typ | Beschreibung |
---|---|---|
Autorisierung | String | Erforderlich. Das Microsoft Entra-Zugriffstoken im Formular Bearer <token> . |
Optional: clientID
Anforderungsparameter
$version – erforderlich. Dies ist die Version des Schemas, das in der Anforderung verwendet wird.
Anforderungstext
Die folgenden Optionen spiegeln die Optionen im Partner Center beim Erstellen eines privaten Mehrparteienangebots für einen Kunden wieder. Diese Optionen werden durch die folgenden offerPricingType-Werte definiert:
offerPricingType-Wert | Partner Center private Angebotserstellungsoptionsäquivalent |
---|---|
editExistingOfferPricingOnly | Anpassen der Preise für vorhandene öffentliche Angebote und Pläne – Verwenden Sie diese Option, um ein privates Angebot für alle transaktionsfähigen Angebotstypen zu erstellen: SaaS, Azure Virtual Machines und Azure-App lizenzierungen. Sie können Ihre Partnerpreise über absolute Preise oder Prozentrabatte anpassen. |
saasNewCustomizedPlans | Anpassen von Preisen, Metermengen und Benutzerlimits für SaaS-Angebote – Verwenden Sie diese Option, um ein privates Angebot für einen SaaS-Plan zu erstellen, indem Sie Ihren absoluten Partnerpreis, die Maßmengen für die Messung und die Benutzerbeschränkungen anpassen. |
vmSoftwareReservations | Anpassen der Preise und spezifischen Mengen für VM-Softwarereservierungsangebote – Verwenden Sie diese Option, um ein privates Mehrparteienangebot zum Verkauf von VM-Softwarereservierungen (1-Jahr oder 3-Jahr) zu erstellen und den absoluten Partnerpreis, die vCPU-Größe, die Mengen, die Dauer und den Zahlungsplan anzupassen. |
Für die vorherigen drei Preistypoptionen können planspezifische Ressourcenanforderungen variieren. Ausführliche Informationen finden Sie in der folgenden Tabelle:
Ressourcenname | editExistingOfferPricingOnly | saasNewCustomizedPlans | vmSoftwareReservations |
---|---|---|---|
Auszeichnung. Plan | Legen Sie dies auf die Plan-ID des öffentlichen Plans fest, der im Anforderungstext konfiguriert werden soll. | Nicht zutreffend | Nicht zutreffend |
pricing.basePlan | Nicht zutreffend | Legen Sie dies auf die Plan-ID des öffentlichen Plans fest, der im Anforderungstext konfiguriert werden soll. | Legen Sie dies auf die Plan-ID des öffentlichen Plans fest, der im Anforderungstext konfiguriert werden soll. |
pricing.newPlanDetails.name | Nicht zutreffend | Legen Sie dies auf den Namen des neuen Plans fest, der dem Kunden im Anforderungstext angezeigt wird. | Gilt nicht für den Anforderungstext, wird das System generiert und steht in der Antwort des Auftrags nach Abschluss zur Verfügung. |
pricing.newPlanDetails.description | Nicht zutreffend | Legen Sie dies auf die Beschreibung fest, die dem Kunden für den neuen Plan im Anforderungstext angezeigt wird. | Gilt nicht für den Anforderungstext, wird das System generiert und in der Antwort des Auftrags verfügbar, wenn er abgeschlossen ist. |
customerContractRenewal-Wert | Beschreibung |
---|---|
true | Privates Angebot ist eine Verlängerung eines bestehenden Kundenvertrags. Eine 50% ermäßigte Agenturgebühr gilt für Ihr privates Angebot für Kundenverlängerungen |
false | Privates Angebot ist keine Verlängerung eines bestehenden Kundenvertrags. Ihre Standardagenturgebühr gilt. |
Der Anforderungstext variiert je nach Anruferrolle. Verwenden Sie privateOfferType , um ISV-Anrufer vom Verkaufen von Partneranrufern zu unterscheiden.
Anruferrolle | privateOfferType-Wert |
---|---|
ISV (Absender) | multipartyPromotionOriginator |
Verkaufspartner (Verkäufer) | multipartyPromotionChannelPartner |
Anfordern von Textkörperbeispielen
Beispielanforderungstext von ISV zum Erstellen des Angebots mithilfe von Rabattpreisen zum Anpassen der Preise für vorhandene öffentliche Pläne
Der ISV (Absender) ist verpflichtet, alle grundlegenden Details des Angebots bereitzustellen. Sie müssen hierbei einen Namen angeben.
{
"$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"
}
]
}
Beispielanforderungstext mit absoluten Preisen zum Anpassen der Preise für vorhandene öffentliche Pläne
Wenn Sie absolute Preise anstelle von prozentbasierten Rabatten verwenden, können Sie eine neue Ressource oberhalb der privaten Angebotsressource mit mehreren Teilnehmern erstellen, die die absolute Preisgestaltung definiert, und diese neu erstellte Ressource als ein weiteres Objekt in die Ressourcenliste des Konfigurationsschemas einschließen.
Verwenden Sie diese Methode, um die Preisressource für Ihren vorhandenen öffentlichen Plan zu erhalten, die Preise zu bearbeiten und dann die bearbeitete Ressource für Ihr Angebot zu verwenden.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Beispiel für absolute Preisressource
{
"$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
}
}
}
}
}
Diese Ressource als Objekt in das Preismodul einschließen
[
{
"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"
}
}
]
Beispielanforderungstext mit absoluten Preisen zum Anpassen von Preisen, Getakteungsmengen und Benutzergrenzwerten für SaaS-Angebote
Verwenden Sie die folgende Methode, um eine absolute Preis- und Verfügbarkeitsressource für das private Angebot zu erstellen.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Beispiel für absolute Preisressourcen für ein SaaS-Angebot mit Pauschalpreisen, das Preis- und Metermengen angibt
{
"$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
}
]
}
}
}
}
}
Beispiel für absolute Preisressourcen für ein SaaS-Angebot pro Benutzer, das Preis- und Benutzerlimits angibt
{
"$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
}
]
}
}
}
Diese Ressource als Objekt in das Preismodul einschließen
{
"$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"
}
]
}
Beispielanforderungstext mit absoluten Preisen zum Anpassen der Preise und spezifischen Mengen für VM-Softwarereservierungsangebote
Verwenden Sie die folgende Methode, um eine absolute Preis- und Verfügbarkeitsressource für das Angebot zu erstellen.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Beispiel für absolute Preisressourcen für ein VM-Angebot, das Preise und Mengen angibt
{
"$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
}
}
}
}
Diese Ressource als Objekt in das Preismodul einschließen
{
"$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"
}
]
}
Beispielanfrage des Partners, um die Erstellung des Angebots abzuschließen
Der Vertriebspartner sollte die vom ISV bereitgestellte private Angebots-ID für mehrere Parteien verwenden, um die Kundenanpassung % (Markup), partnerspezifische Vereinbarungen zu konfigurieren, von ihnen vorbereitet und Partnerkontakte zu verkaufen.
Das folgende Beispiel basiert auf dem Antworttext, der beim Abrufen der Angebotsdetails mithilfe der Angebots-ID zurückgegeben wird.
{
"$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\"",
}
]
}
Wichtige Aufrufe im vorherigen Beispiel
- Der Vertriebspartner muss das preparedBy-Attribut bereitstellen.
- ISV-benutzerdefinierte Geschäftsbedingungen sind sichtbar, können aber nicht vom Vertriebspartner bearbeitet werden, sie werden in den Ressourcen-OriginatorTermsAndConditionsDocs erfasst.
- Der Vertriebspartner kann einen eigenen benutzerdefinierten Ausdruck und eine eigene Bedingung in der Ressource "termsAndConditionsDocs " hochladen.
- Der Vertriebspartner kann eigene Kontakte hinzufügen, um über das Angebot in der notificationContacts-Ressource benachrichtigt zu werden.
- Die Attribute "Empfänger" und "Partner" sind sichtbar, können aber nicht vom Vertriebspartner bearbeitet werden.
- Die Preisressource wird als originatorPricing angezeigt, markupPercentage ist erforderlich und muss vom Vertriebspartner bei der Übermittlung bereitgestellt werden, alle anderen Attribute in der Preisressource sind schreibgeschützt.
Antwort
Die Antwort enthält die jobId , die Sie später verwenden können, um den Status abzufragen:
{
"$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": []
}
Fehlercodes
HTTP-Statuscode | Beschreibung |
---|---|
401 | Authentifizierungsfehler: Stellen Sie sicher, dass Sie ein gültiges Microsoft Entra-Zugriffstoken verwenden. |
400 | Schemaüberprüfung. Stellen Sie sicher, dass der Anforderungstext dem richtigen Schema folgt und alle erforderlichen Felder enthält. |