Compartilhar via


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.

  1. O ISV cria a oferta e envia para visibilidade do parceiro de vendas
  2. O ISV notifica o parceiro de vendas (por e-mail ou outros métodos) de que a oferta agora está disponível para edições do parceiro de vendas
  3. O parceiro de vendas analisa e conclui a configuração da oferta privada e envia para visibilidade do cliente final

Aqui está o método para solicitar a criação da oferta.

Solicitar

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

Cabeçalho da solicitação

Cabeçalho Tipo Descrição
Autorização String Obrigatória. O token de acesso do Microsoft Entra no formato Bearer <token>.

Opcional: clientID

Parâmetros da solicitação

$version - obrigatório. Esta é a versão do esquema que está sendo usada na solicitação.

Corpo da solicitação

As opções a seguir espelham as opções no Partner Center ao criar uma oferta privada com vários participantes para um cliente. Essas opções são definidas pelos seguintes valores offerPricingType :

offerPricingType valor Opção de criação de oferta privada do Partner Center equivalente
editExistingOfferPricingOnly Personalizar preços para ofertas e planos públicos existentes – use essa 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. Você pode personalizar o preço do seu parceiro por meio de preços absolutos ou descontos percentuais.
saasNewCustomizedPlans Personalizar preços, quantidades de medidores e limites de usuário para oferta de SaaS – use essa opção para criar uma oferta privada para um plano de SaaS personalizando o preço absoluto do parceiro, as quantidades de dimensão de medição e os limites de usuário.
vmSoftwareReservations Personalizar preços e quantidades específicas para ofertas de reserva de software de VM – use essa opção para criar uma oferta privada de vários participantes para vender reservas de software de VM (1 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 editExistingOfferPricingOnly saasNewCustomizedPlans vmSoftwareReservations
precificação. 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.novosDetalhes.plano 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.
valor customerContractRenewal Descrição
true A oferta privada é uma renovação de um contrato de cliente existente. Uma taxa de agência com desconto de 50% se aplica à sua oferta privada 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 de acordo com a função do chamador. Use privateOfferType para distinguir o chamador ISV do chamador do parceiro de vendas.

Função do chamador valor privateOfferType
ISV (Originador) multipartyPromotionOriginator
Parceiro de vendas (vendedor) multipartidárioPromoçãoChannelPartner

Solicitar amostras de corpo

Corpo da solicitação de exemplo pelo ISV para criar a oferta usando preços com desconto para personalizar os 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 da solicitação de amostra usando preços absolutos para personalizar preços apenas para o plano público existente

Se você estiver usando preços absolutos em vez de descontos baseados 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, editar os preços e usar 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 precificação absoluta

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

Inclua esse recurso como um objeto no módulo de precificaçã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 da solicitação de exemplo usando preços absolutos para personalizar preços, quantidades de medição e limites de usuário para oferta de SaaS

Use o método a seguir para criar um recurso de preço e disponibilidade absolutos 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 de 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 de 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
                }
            ]
        }
    }
}

Inclua esse recurso como um objeto no módulo de precificaçã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 da solicitação de exemplo usando preços absolutos para personalizar preços e quantidades específicas para ofertas de reserva de software de VM

Use o método a seguir para criar um recurso de preço absoluto e disponibilidade 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
            }
        }
    }       
}

Inclua esse recurso como um objeto no módulo de precificaçã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"
     }
  ]
}

Exemplo de solicitação do parceiro para concluir a criação da oferta

O parceiro de vendas deve usar a ID de oferta privada de vários participantes fornecida pelo ISV para configurar a % de ajuste do cliente (marcação), os contratos personalizados do parceiro de vendas, preparados por e os contatos do parceiro de vendas.

O exemplo a seguir é baseado no corpo da resposta retornado ao recuperar os detalhes da oferta usando a 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 vendas deve fornecer o atributo preparedBy .
  • Os termos e condições personalizados do ISV podem ser visualizados, mas não podem ser editados pelo parceiro de vendas, eles são capturados no originador do recursoTermsAndConditionsDocs.
  • O parceiro de vendas pode carregar seus próprios termos e condições personalizados no recurso termsAndConditionsDocs .
  • O parceiro de vendas pode adicionar seus próprios contatos para ser notificado sobre a oferta no recurso notificationContacts .
  • Os atributos Beneficiário e Parceiros podem ser visualizados, mas não podem ser editados pelo parceiro de vendas.
  • O recurso de precificação é exibido como originatorPricing, markupPercentage é obrigatório e deve ser fornecido pelo parceiro de vendas ao enviar, todos os outros atributos no recurso de precificação são somente leitura.

Resposta

A resposta contém o jobId que você pode usar posteriormente para sondar 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 do Erro

Código de status HTTP Descrição
401 Erro de autenticação: verifique se você está usando um token de acesso válido do Microsoft Entra.
400 Validação de esquema. Certifique-se de que o corpo da solicitação esteja seguindo o esquema correto e inclua todos os campos obrigatórios.