Partilhar 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. ISV cria a oferta e envia para venda visibilidade do parceiro
  2. 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
  3. 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.

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/2023-07-15", 
"resourceName": "privateOffer",
       "name": "privateOffercustomer1705",
       "state": "live",
       "privateOfferType": "multipartyPromotionOriginator",
       "offerPricingType": "editExistingOfferPricingOnly",
       "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/2023-07-15", 
       "name": "privateOffercustomer1705",
       "state": "live",
       "privateOfferType": "multipartyPromotionOriginator",
       "offerPricingType": "newSimpleAbsolutePricing",
       "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/2023-07-15", 
       "name": "privateOffercustomer1705",
       "state": "live",
       "privateOfferType": "multipartyPromotionOriginator",
       "offerPricingType": "vmSoftwareReservations",
       "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/2023-07-15", 
"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.

Próximos passos