Tworzenie wieloczęściowej oferty prywatnej dla klienta
Niezależnego dostawcy oprogramowania (inicjatora) i współpracującego partnera (sprzedawcy) należy użyć tego samego zestawu wywołań interfejsu API, aby utworzyć ofertę prywatną dla klienta. Oto oczekiwany przepływ.
- Niezależnego dostawcy oprogramowania tworzy ofertę i przesyła do sprzedaży widoczność partnera
- Niezależnego dostawcy oprogramowania powiadamia partnera sprzedaży (za pośrednictwem poczty e-mail lub innych metod), oferta jest teraz dostępna do edycji partnerów sprzedaży
- Sprzedaż przeglądów partnerów i kończenie konfigurowania oferty prywatnej i przesyłania pod kątem widoczności klienta końcowego
Oto metoda wywołania tworzenia oferty.
Żądanie
POST https://graph.microsoft.com/rp/product-ingestion/configure?$version=2022-07-01
Nagłówek żądania
Nagłówek | Type | Opis |
---|---|---|
Autoryzacja | String | Wymagany. Token dostępu firmy Microsoft Entra w postaci Bearer <token> . |
Opcjonalnie: clientID
Parametry żądania
$version — wymagane. Jest to wersja schematu używanego w żądaniu.
Treść żądania
Poniższe opcje odzwierciedlają opcje w Centrum partnerskim podczas tworzenia wieloczęściowej oferty prywatnej dla klienta. Te opcje są definiowane przez następujące wartości offerPricingType :
offerPricingType wartość | Odpowiednik opcji tworzenia oferty prywatnej w Centrum partnerskim |
---|---|
editExistingOfferPricingOnly | Dostosowywanie cen dla istniejącej oferty publicznej i planów — ta opcja umożliwia utworzenie oferty prywatnej dla wszystkich typów ofert transakcyjnych: SaaS, Azure Virtual Machines i aplikacja systemu Azure. Cennik partnera można dostosować za pomocą bezwzględnych cen lub rabatów procentowych. |
saasNewCustomizedPlans | Dostosowywanie cen, ilości mierników i limitów użytkowników dla oferty SaaS — ta opcja umożliwia utworzenie oferty prywatnej dla planu SaaS przez dostosowanie bezwzględnej ceny partnera, ilości wymiarów pomiarów i limitów użytkowników. |
vmSoftwareReservations | Dostosowywanie cen i określonych ilości ofert rezerwacji oprogramowania maszyn wirtualnych — ta opcja umożliwia utworzenie wieloczęściowej oferty prywatnej do sprzedaży rezerwacji oprogramowania maszyn wirtualnych (1 rok lub 3 rok) i dostosowanie bezwzględnej ceny partnera, rozmiaru procesorów wirtualnych, ilości, czasu trwania i harmonogramu płatności. |
W przypadku poprzednich trzech opcji typów cen wymagania dotyczące zasobów specyficznych dla planu mogą się różnić. Aby uzyskać szczegółowe informacje, zobacz następującą tabelę:
Nazwa zasobu | editExistingOfferPricingOnly | saasNewCustomizedPlans | vmSoftwareReservations |
---|---|---|---|
Ceny. Plan | Ustaw go na identyfikator planu publicznego, który ma zostać skonfigurowany w treści żądania | Nie dotyczy | Nie dotyczy |
pricing.basePlan | Nie dotyczy | Ustaw go na identyfikator planu publicznego, który ma zostać skonfigurowany w treści żądania | Ustaw go na identyfikator planu publicznego, który ma zostać skonfigurowany w treści żądania |
pricing.newPlanDetails.name | Nie dotyczy | Ustaw tę wartość na nazwę nowego planu, który będzie wyświetlany klientowi w treści żądania | Nie dotyczy treści żądania, zostanie wygenerowany system i dostępny w odpowiedzi zadania po zakończeniu. |
pricing.newPlanDetails.description | Nie dotyczy | Ustaw tę wartość na opis, który zostanie wyświetlony klientowi dla nowego planu w treści żądania | Nie dotyczy treści żądania, zostanie wygenerowany system i dostępny w odpowiedzi zadania po zakończeniu. |
customerContractRenewal wartość | opis |
---|---|
prawda | Oferta prywatna to odnowienie istniejącej umowy klienta. 50% obniżonej opłaty agencji ma zastosowanie do oferty prywatnej na potrzeby odnawiania klientów |
fałsz | Oferta prywatna nie jest odnawianiem istniejącej umowy klienta. Obowiązuje opłata za agencję standardową. |
Treść żądania różni się w zależności od roli wywołującej. Użyj parametru privateOfferType , aby odróżnić wywołującego niezależnego dostawcę oprogramowania od wywołującego partnera sprzedaży.
Rola wywołująca | wartość privateOfferType |
---|---|
Niezależnego dostawcy oprogramowania (inicjator) | multipartyPromotionOriginator |
Partner sprzedaży (sprzedawca) | multipartyPromotionChannelPartner |
Przykłady treści żądania
Przykładowa treść żądania przez niezależnego dostawcę oprogramowania w celu utworzenia oferty przy użyciu cennika rabatu w celu dostosowania cen tylko dla istniejącego planu publicznego
IsV (twórca) jest wymagany do dostarczenia wszystkich podstawowych szczegółów oferty. Musi to zawierać nazwę.
{
"$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"
}
]
}
Przykładowa treść żądania korzystająca z cen bezwzględnych w celu dostosowania cen tylko dla istniejącego planu publicznego
Jeśli używasz bezwzględnych cen zamiast rabatów opartych na procentach, możesz utworzyć nowy zasób powyżej zasobu oferty prywatnej z wieloma częściami, który definiuje bezwzględne ceny, a następnie uwzględnić ten nowo utworzony zasób jako inny obiekt na liście zasobów schematu konfiguracji.
Użyj tej metody, aby uzyskać zasób cenowy dla istniejącego planu publicznego, edytować ceny, a następnie użyć edytowanego zasobu dla oferty.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Przykładowy zasób cen bezwzględnych
{
"$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
}
}
}
}
}
Uwzględnij ten zasób jako obiekt w module cen
[
{
"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"
}
}
]
Przykładowa treść żądania korzystająca z cen bezwzględnych w celu dostosowania cen, ilości pomiarów i limitów użytkowników dla oferty SaaS
Użyj następującej metody, aby utworzyć bezwzględną cenę i zasób dostępności dla oferty prywatnej.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Przykładowy bezwzględny zasób cenowy dla oferty SaaS z ryczałtowaną stawką, która dostosowuje ilości cen i mierników
{
"$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
}
]
}
}
}
}
}
Przykładowy bezwzględny zasób cenowy dla oferty SaaS dla użytkownika, która dostosowuje limity cen i użytkowników
{
"$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
}
]
}
}
}
Uwzględnij ten zasób jako obiekt w module cen
{
"$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"
}
]
}
Przykładowa treść żądania korzystająca z cen bezwzględnych w celu dostosowania cen i określonych ilości ofert rezerwacji oprogramowania maszyn wirtualnych
Użyj następującej metody, aby utworzyć bezwzględną cenę i zasób dostępności dla oferty.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Przykładowy bezwzględny zasób cenowy dla oferty maszyny wirtualnej, który dostosowuje cenę i ilości
{
"$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
}
}
}
}
Uwzględnij ten zasób jako obiekt w module cen
{
"$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"
}
]
}
Przykładowe żądanie partnera w celu ukończenia tworzenia oferty
Partner sprzedaży powinien użyć wieloczęściowego identyfikatora oferty prywatnej dostarczonej przez niezależnego dostawcę oprogramowania w celu skonfigurowania % korekty klienta (adiustacji), sprzedaży umów niestandardowych partnerów, przygotowanych przez i sprzedaży kontaktów partnerów.
Poniższy przykład jest oparty na treści odpowiedzi zwracanej podczas pobierania szczegółów oferty przy użyciu identyfikatora oferty.
{
"$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\"",
}
]
}
Objaśnienie klucza w poprzednim przykładzie
- Partner sprzedaży musi podać atrybut preparedBy .
- Niestandardowe warunki i postanowienia niezależnego dostawcy oprogramowania są widoczne, ale nie można ich edytować przez partnera sprzedaży. Są one przechwytywane w jednostki źródłowej zasobuTermsAndConditionsDocs.
- Partner sprzedaży może przekazać własny termin niestandardowy i warunek w zasobieAndConditionsDocs.
- Partner sprzedaży może dodać własne kontakty, aby otrzymywać powiadomienia o ofercie w zasobie notificationContacts .
- Atrybuty beneficjenta i partnerów są widoczne, ale nie mogą być edytowane przez partnera sprzedaży.
- Zasób cenowy jest wyświetlany jako element źródłowyPricing, markupPercentage jest wymagany i musi być dostarczony przez partnera sprzedaży podczas przesyłania, wszystkie inne atrybuty w zasobie cenowym są tylko do odczytu.
Response
Odpowiedź zawiera identyfikator jobId , którego można użyć później do sondowania stanu:
{
"$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": []
}
Kody błędów
Kod stanu HTTP | opis |
---|---|
401 | Błąd uwierzytelniania: Upewnij się, że używasz prawidłowego tokenu dostępu firmy Microsoft Entra. |
400 | Weryfikacja schematu. Upewnij się, że treść żądania jest zgodna z prawidłowym schematem i zawiera wszystkie wymagane pola. |