Criar uma oferta privada com vários participantes para um cliente
O ISV (originador) e o parceiro colaborador (vendedor) devem usar o mesmo conjunto de chamadas de API para criar uma oferta privada para um cliente. Aqui está o fluxo esperado.
- ISV cria a oferta e envia para venda visibilidade do parceiro
- ISV notifica o parceiro de venda (via e-mail ou outros métodos) a oferta está agora disponível para edições de parceiros de venda
- O parceiro de venda analisa e conclui a configuração da oferta privada e envia para visibilidade do cliente final
Aqui está o método para chamar para a criação da oferta.
Pedir
POST https://graph.microsoft.com/rp/product-ingestion/configure?$version=2022-07-01
Cabeçalho do pedido
Cabeçalho | Tipo | Description |
---|---|---|
Autorização | String | Obrigatório. O token de acesso Microsoft Entra no formato Bearer <token> . |
Opcional: clientID
Parâmetros de solicitação
$version - obrigatório. Esta é a versão do esquema que está sendo usado na solicitação.
Corpo do pedido
As opções a seguir espelham as opções no Partner Center ao criar uma oferta privada de vários participantes para um cliente. Essas opções são definidas pelos seguintes valores offerPricingType :
valor offerPricingType | Equivalente à opção de criação de oferta privada do Partner Center |
---|---|
editarExistenteOfertaPreçoApenas | Personalizar preços para ofertas e planos públicos existentes - Use esta opção para criar uma oferta privada para todos os tipos de oferta transacionáveis: SaaS, Máquinas Virtuais do Azure e Aplicativos do Azure. Pode personalizar os preços dos seus parceiros através de preços absolutos ou descontos percentuais. |
saasNewCustomizedPlans | Personalize preços, quantidades de medidores e limites de usuários para ofertas SaaS - Use esta opção para criar uma oferta privada para um plano SaaS personalizando seu preço absoluto de parceiro, quantidades de dimensão de medição e limites de usuário. |
vmSoftwareReservas | Personalizar preços e quantidades específicas para ofertas de reserva de software de VM - Use esta opção para criar uma oferta privada de vários participantes para vender reservas de software de VM (1 ano ou 3 anos) e personalizar o preço absoluto do parceiro, o tamanho da vCPU, as quantidades, a duração e o cronograma de pagamento. |
Para as três opções de tipo de preço anteriores, os requisitos de recursos específicos do plano podem variar. Para obter detalhes, consulte a tabela a seguir:
Nome do recurso | editarExistenteOfertaPreçoApenas | saasNewCustomizedPlans | vmSoftwareReservas |
---|---|---|---|
preços. Plano | Defina isso como a ID do plano público a ser configurado no corpo da solicitação | Não aplicável | Não aplicável |
preço.basePlan | Não aplicável | Defina isso como a ID do plano público a ser configurado no corpo da solicitação | Defina isso como a ID do plano público a ser configurado no corpo da solicitação |
pricing.newPlanDetails.name | Não aplicável | Defina isso como o nome do novo plano que será mostrado ao cliente no corpo da solicitação | Não aplicável ao corpo da solicitação, será gerado pelo sistema e estará disponível na resposta do trabalho quando concluído. |
preços.newPlanDetails.description | Não aplicável | Defina isso como a descrição que será mostrada ao cliente para o novo plano no corpo da solicitação | Não aplicável ao corpo da solicitação, será gerado pelo sistema e estará disponível na resposta do trabalho quando concluído. |
customerContractValor de renovação | Description |
---|---|
verdadeiro | Oferta privada é a renovação de um contrato de cliente existente. Uma taxa de agência com desconto de 50% se aplica à sua oferta particular para renovações de clientes |
false | A oferta privada não é uma renovação de um contrato de cliente existente. Aplica-se a sua taxa de agência padrão. |
O corpo da solicitação varia dependendo da função do chamador. Use privateOfferType para distinguir o chamador ISV do chamador do parceiro vendedor.
Função de chamador | valor privateOfferType |
---|---|
ISV (Originador) | multipartidáriaPromotionOriginator |
Parceiro de venda (vendedor) | multipartidoPromotionChannelPartner |
Solicitar amostras corporais
Corpo de solicitação de amostra por ISV para criar a oferta usando preços com desconto para personalizar preços apenas para o plano público existente
O ISV (originador) é obrigado a fornecer todos os detalhes fundamentais da oferta. Isso deve incluir um nome.
{
"$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"
}
]
}
Corpo de solicitação de amostra usando preços absolutos para personalizar preços apenas para o plano público existente
Se você estiver usando o preço absoluto em vez do desconto baseado em porcentagem, poderá criar um novo recurso acima do recurso de oferta privada de vários participantes que define o preço absoluto e, em seguida, incluir esse recurso recém-criado como outro objeto na lista de recursos do esquema de configuração.
Use esse método para obter o recurso de preços para seu plano público existente, edite os preços e use o recurso editado para sua oferta.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Exemplo de recurso de preços absolutos
{
"$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
}
}
}
}
}
Incluir esse recurso como um objeto no módulo de definição de preço
[
{
"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 de solicitação de amostra usando preços absolutos para personalizar preços, quantidades de medição e limites de usuários para a oferta de SaaS
Use o método a seguir para criar um recurso absoluto de preço e disponibilidade para a oferta privada.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Exemplo de recurso de preço absoluto para uma oferta SaaS de taxa fixa que personaliza o preço e as quantidades do medidor
{
"$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
}
]
}
}
}
}
}
Exemplo de recurso de preço absoluto para uma oferta SaaS por usuário que personaliza o preço e os limites do usuário
{
"$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
}
]
}
}
}
Incluir esse recurso como um objeto no módulo de definição de preço
{
"$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"
}
]
}
Corpo de solicitação de amostra usando preços absolutos para personalizar preços e quantidades específicas para ofertas de reserva de software VM
Use o método a seguir para criar um recurso de preço e disponibilidade absolutos para a oferta.
GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15
Exemplo de recurso de preço absoluto para uma oferta de VM que personaliza preço e quantidades
{
"$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
}
}
}
}
Incluir esse recurso como um objeto no módulo de definição de preço
{
"$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"
}
]
}
Pedido de amostra do parceiro para concluir a criação da oferta
O parceiro de venda deve usar o ID de oferta privada de várias partes fornecido pelo ISV para configurar a % de ajuste do cliente (markup), os contratos personalizados do parceiro de venda, preparados por, e os contatos do parceiro de venda.
O exemplo a seguir é baseado no corpo da resposta retornado ao recuperar os detalhes da oferta usando o ID da oferta.
{
"$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\"",
}
]
}
Principais chamadas no exemplo anterior
- O parceiro de venda deve fornecer o atributo preparedBy .
- Os termos e condições personalizados do ISV são visíveis, mas não podem ser editados pelo parceiro de venda, eles são capturados no originador do recursoTermsAndConditionsDocs.
- O parceiro de venda pode carregar o seu próprio termo e condição personalizados no recurso termsAndConditionsDocs .
- O parceiro de venda pode adicionar seus próprios contatos para ser notificado da oferta no recurso notificationContacts .
- Os atributos Beneficiário e Parceiros são visíveis, mas não podem ser editados pelo parceiro vendedor.
- O recurso de definição de preço é exibido como originatorPricing, markupPercentage é necessário e deve ser fornecido pelo parceiro de venda ao enviar, todos os outros atributos no recurso de definição de preço são somente leitura.
Response
A resposta contém o jobId que você pode usar mais tarde para pesquisar o status:
{
"$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": []
}
Códigos de erro
Código de estado de HTTP | Description |
---|---|
401 | Erro de autenticação: verifique se você está usando um token de acesso válido do Microsoft Entra. |
400 | Validação de esquema. Verifique se o corpo da solicitação está seguindo o esquema correto e inclui todos os campos obrigatórios. |