Поделиться через


Создание многопартийного частного предложения для клиента

Поставщик программного обеспечения (источник) и партнер по совместной работе (продавец) должны использовать тот же набор вызовов API для создания частного предложения для клиента. Вот ожидаемый поток.

  1. IsV создает предложение и отправляет для продажи видимости партнера
  2. Поставщик программного обеспечения уведомляет партнера о продажах (через электронную почту или другие методы) предложение теперь доступно для продажи редактирования партнеров.
  3. Продажа отзывов партнеров и завершает настройку частного предложения и отправляется для видимости конечных клиентов

Ниже приведен метод для вызова создания предложения.

Запросить

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

Заголовок запроса

Верхний колонтитул Тип Описание
Авторизация Строка Обязательный. Маркер доступа Microsoft Entra в форме Bearer <token>.

Необязательно: clientID

Параметры запроса

$version — обязательный. Это версия схемы, которая используется в запросе.

Текст запроса

Следующие параметры отражают параметры в Центре партнеров при создании многопартийного частного предложения для клиента. Эти параметры определяются следующими значениями offerPricingType :

значение offerPricingType Эквивалентный вариант создания частного предложения в Центре партнеров
editExistingOfferPricingOnly Настройка цен на существующее общедоступное предложение и планы. Используйте этот параметр, чтобы создать частное предложение для всех типов транзакций: SaaS, Azure Виртуальные машины и приложение Azure. Вы можете настроить цены партнера с помощью абсолютных цен или процентных скидок.
saasNewCustomizedPlans Настройка цен, количества счетчиков и ограничений пользователей для предложения SaaS. Используйте этот параметр, чтобы создать частное предложение для плана SaaS, настроив абсолютную цену партнера, измерения измерений и ограничения пользователей.
vmSoftwareReservations Настройка цен и определенных объемов для предложений резервирования программного обеспечения виртуальных машин. Используйте этот параметр, чтобы создать многопартийное частное предложение для продажи резервирования программного обеспечения виртуальной машины (1-летний или 3-летний) и настроить абсолютную цену партнера, размер виртуального ЦП, количество, длительность и расписание оплаты.

Для предыдущих трех вариантов ценообразования требования к ресурсам для конкретного плана могут отличаться. Дополнительные сведения см. в следующей таблице:

Имя ресурса editExistingOfferPricingOnly saasNewCustomizedPlans vmSoftwareReservations
ценообразование. План Задайте для этого идентификатор плана общедоступного плана, который будет настроен в тексте запроса. Неприменимо Неприменимо
pricing.basePlan Нет данных Задайте для этого идентификатор плана общедоступного плана, который будет настроен в тексте запроса. Задайте для этого идентификатор плана общедоступного плана, который будет настроен в тексте запроса.
pricing.newPlanDetails.name Нет данных Задайте для этого имя нового плана, который будет отображаться клиенту в тексте запроса. Не применимо к тексту запроса, будет создан и доступен в ответе задания при завершении.
pricing.newPlanDetails.description Нет данных Задайте для этого описание, которое будет отображаться клиенту для нового плана в тексте запроса. Неприменимо к тексту запроса, будет создан и доступен в ответе задания при завершении.
значение customerContractRenewal Description
true Частное предложение — это продление существующего контракта клиента. Скидка на 50% агентства применяется к вашему частному предложению для продления клиентов
false Частное предложение не является продлением существующего контракта клиента. Ваша стандартная плата за агентство применяется.

Текст запроса зависит от роли вызывающего объекта. Используйте privateOfferType для отличия вызывающего поставщика программного обеспечения от продажи вызывающего партнера.

Роль вызывающего абонента значение privateOfferType
ISV (источник) multipartyPromotionOriginator
Продажи партнера (продавец) multipartyPromotionChannelPartner

Примеры текста запроса

Пример текста запроса по 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"
     }
  ]
}

Пример текста запроса с использованием абсолютных цен для настройки цен и конкретных количеств для предложений резервирования программного обеспечения виртуальной машины

Используйте следующий метод, чтобы создать абсолютный ресурс цены и доступности для предложения.

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

Пример запроса партнера для завершения создания предложения

Партнер по продажам должен использовать многопартийный частный идентификатор предложения, предоставленный поставщиком программного обеспечения, чтобы настроить корректировку клиента % (разметка), продавать пользовательские соглашения партнера, подготовленные и продавать контакты партнеров.

Следующий пример основан на теле ответа, возвращаемом при получении сведений о предложении с помощью идентификатора предложения.

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

Вызовы ключей в предыдущем примере

  • Партнер по продаже должен предоставить подготовленный атрибутBy .
  • Пользовательские условия и условия isV доступны для просмотра, но не могут быть изменены партнером-продавцом, они записываются в исходном объекте resourceorTermsAndConditionsDocs.
  • Продажи партнера могут отправлять собственный пользовательский термин и условие в ресурсеAndConditionsDocs .
  • Продажи партнера могут добавлять собственные контакты, чтобы получать уведомления о предложении в ресурсе notificationContacts .
  • Атрибуты бенефициаров и партнеров доступны для просмотра, но не могут быть изменены партнером по продаже.
  • Ресурс ценообразования отображается как источникPricing, markupPercentage является обязательным и должен предоставляться партнером-продавцом при отправке, все остальные атрибуты в ресурсе ценообразования доступны только для чтения.

Response

Ответ содержит идентификатор задания, который можно использовать позже для опроса состояния:

{
    "$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 Description
401 Ошибка проверки подлинности. Убедитесь, что вы используете действительный маркер доступа Microsoft Entra.
400 Проверка схемы. Убедитесь, что текст запроса соответствует правильной схеме и включает все обязательные поля.