Creación de una oferta privada de varias partes para un cliente

El ISV (originador) y el asociado colaborador (vendedor) deben usar el mismo conjunto de llamadas API para crear una oferta privada para un cliente. Este es el flujo esperado.

  1. ISV crea la oferta y envía para la visibilidad del asociado de venta
  2. ISV notifica al partner de venta (por correo electrónico u otros métodos) que la oferta ya está disponible para las ediciones de asociados de venta
  3. Ventas de revisiones de asociados y finalización de la configuración de la oferta privada y envío para la visibilidad del cliente final

Este es el método para llamar a la creación de la oferta.

Solicitar

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

Encabezado de solicitud

Encabezado Tipo Descripción
Autorización String Necesario. Token de acceso de Microsoft Entra con el formato Bearer <token>.

Opcional: clientID

Parámetros de solicitud

$version: obligatorio. Esta es la versión del esquema que se usa en la solicitud.

Cuerpo de la solicitud

Las siguientes opciones reflejan las opciones del Centro de partners al crear una oferta privada de varias partes para un cliente. Estas opciones se definen mediante los siguientes valores offerPricingType :

valor offerPricingType Equivalente a la opción de creación de ofertas privadas del Centro de partners
editExistingOfferPricingOnly Personalización de los precios de las ofertas y planes públicos existentes: use esta opción para crear una oferta privada para todos los tipos de ofertas transaccionables: SaaS, Azure Virtual Machines y App de Azure lications. Puede personalizar los precios de los asociados a través de precios absolutos o descuentos porcentuales.
saasNewCustomizedPlans Personalice los precios, las cantidades de medidores y los límites de usuario para la oferta de SaaS: use esta opción para crear una oferta privada para un plan saaS personalizando el precio absoluto del asociado, las cantidades de dimensiones de medición y los límites de usuario.
vmSoftwareReservations Personalice los precios y las cantidades específicas para las ofertas de reserva de software de máquina virtual: use esta opción para crear una oferta privada de varias partes para vender reservas de software de máquina virtual (1 o 3 años) y personalizar el precio absoluto del asociado, el tamaño de vCPU, las cantidades, la duración y la programación de pago.

Para las tres opciones de tipo de precios anteriores, los requisitos de recursos específicos del plan pueden variar. Para obtener más información, consulte la tabla siguiente:

Nombre del recurso editExistingOfferPricingOnly saasNewCustomizedPlans vmSoftwareReservations
Precios. Plan Establézcalo en el identificador de plan del plan público que se va a configurar en el cuerpo de la solicitud. No aplicable No aplicable
pricing.basePlan No aplicable Establézcalo en el identificador de plan del plan público que se va a configurar en el cuerpo de la solicitud. Establézcalo en el identificador de plan del plan público que se va a configurar en el cuerpo de la solicitud.
pricing.newPlanDetails.name No aplicable Establézcalo en el nombre del nuevo plan que se mostrará al cliente en el cuerpo de la solicitud. No es aplicable al cuerpo de la solicitud, se generará el sistema y estará disponible en la respuesta del trabajo cuando se complete.
pricing.newPlanDetails.description No aplicable Establézcalo en la descripción que se mostrará al cliente para el nuevo plan en el cuerpo de la solicitud. No es aplicable al cuerpo de la solicitud, se generará el sistema y estará disponible en la respuesta del trabajo cuando se complete.

El cuerpo de la solicitud varía en función del rol de llamador. Use privateOfferType para distinguir al autor de la llamada de ISV de la venta del autor de llamada del asociado.

Rol de llamador valor privateOfferType
ISV (originador) multipartyPromotionOriginator
Vendedor (vendedor) multipartyPromotionChannelPartner

Ejemplos del cuerpo de la solicitud

Cuerpo de solicitud de ejemplo por ISV para crear la oferta con precios de descuento para personalizar los precios solo para el plan público existente

El ISV (originador) es necesario para proporcionar todos los detalles fundamentales de la oferta. Debe incluir un nombre.

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

Cuerpo de solicitud de ejemplo con precios absolutos para personalizar los precios solo para el plan público existente

Si usa precios absolutos en lugar de descuento basado en porcentajes, puede crear un nuevo recurso encima del recurso de oferta privada de varias partes que define los precios absolutos, incluya ese recurso recién creado como otro objeto en la lista de recursos del esquema de configuración.

Use este método para obtener el recurso de precios del plan público existente, editar los precios y, a continuación, usar el recurso editado para la oferta.

GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15

Recurso de precios absoluto de ejemplo

{
    "$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 ese recurso como un objeto en el módulo de precios

[
    {
        "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"
        }
    }
]

Cuerpo de solicitud de ejemplo mediante precios absolutos para personalizar los precios, las cantidades de medición y los límites de usuario para la oferta de SaaS

Use el método siguiente para crear un recurso absoluto de precio y disponibilidad para la oferta privada.

GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15

Ejemplo de recurso de precios absoluto para una oferta saaS de tarifa plana que personaliza las cantidades de precios y medidores

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

Recurso de precios absoluto de ejemplo para una oferta de SaaS por usuario que personaliza los límites de precios y usuarios

{
    "$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 ese recurso como un objeto en el módulo de precios


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

Cuerpo de solicitud de ejemplo mediante precios absolutos para personalizar los precios y cantidades específicas para las ofertas de reserva de software de máquina virtual

Use el método siguiente para crear un recurso absoluto de precio y disponibilidad para la oferta.

GET https://graph.microsoft.com/rp/product-ingestion/price-and-availability-private-offer-plan/{productId}?plan={planId}&$version=2023-07-15

Recurso de precios absoluto de ejemplo para una oferta de máquina virtual que personaliza el precio y las cantidades

{
    "$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 ese recurso como un objeto en el módulo de precios

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

Solicitud de ejemplo por parte del asociado para completar la creación de la oferta

El asociado de venta debe usar el identificador de oferta privado de varias partes proporcionado por el ISV para configurar el porcentaje de ajuste del cliente (marcado), vender contratos personalizados de asociados, preparados por y vender contactos de asociados.

El ejemplo siguiente se basa en el cuerpo de la respuesta devuelto al recuperar los detalles de la oferta mediante el identificador de la 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\"",
    }
  ]
}

Llamadas de clave en el ejemplo anterior

  • El asociado de venta debe proporcionar el atributo preparedBy .
  • Los términos y condiciones personalizados de ISV son visibles, pero el asociado de venta no puede editarlos, sino que se capturan en el recurso originorTermsAndConditionsDocs.
  • El asociado de venta puede cargar su propio término y condición personalizados en el recurso termsAndConditionsDocs .
  • El partner de venta puede agregar sus propios contactos para recibir una notificación de la oferta en el recurso notificationContacts .
  • Los atributos beneficiarios y asociados son visibles, pero el partner vendedor no puede editarlo.
  • El recurso de precios se muestra como originorPricing, markupPercentage es necesario y el asociado de venta debe proporcionarlo al enviar, todos los demás atributos del recurso de precios son de solo lectura.

Respuesta

La respuesta contiene el jobId que puede usar más adelante para sondear el estado:

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

Código de estado HTTP Descripción
401 Error de autenticación: asegúrese de que usa un token de acceso válido de Microsoft Entra.
400 Validación de esquema. Asegúrese de que el cuerpo de la solicitud sigue el esquema correcto e incluye todos los campos obligatorios.

Pasos siguientes