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.
- ISV crea la oferta y envía para la visibilidad del asociado de venta
- 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
- 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 | Cadena | 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. |
valor customerContractRenewal | Descripción |
---|---|
true | La oferta privada es una renovación de un contrato de cliente existente. Se aplica una tarifa de agencia con descuento del 50 % a su oferta privada para las renovaciones de clientes |
false | La oferta privada no es una renovación de un contrato de cliente existente. Se aplica la tarifa estándar de la agencia. |
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/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"
}
]
}
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/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"
}
]
}
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/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"
}
]
}
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/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\"",
}
]
}
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. |