Compartir a través de


Creación de un ISV directo a una oferta privada del cliente

Use este método para crear una oferta privada para un cliente directamente como ISV.

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

Proporcione los detalles de la oferta privada mediante el esquema de la oferta privada del ISV al cliente. Debe incluir un nombre.

Las siguientes opciones reflejan las opciones del Centro de partners al crear una oferta privada para un cliente. Las opciones se definen mediante los valores offerPricingType que se enumeran aquí:

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, consulte la tabla siguiente para obtener más información.

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.

Ejemplos del cuerpo de la solicitud

Cuerpo de solicitud de ejemplo mediante precios de descuento para personalizar los precios solo para el plan público existente

{
 "$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": "customerPromotion",
       "offerPricingType": "editExistingOfferPricingOnly",
       "customerContractRenewal": false,
       "variableStartDate": true,
       "end": "2022-01-31",
       "acceptBy": "2022-02-28",
       "preparedBy": "amy@contoso.com",
       "termsAndConditionsDocSasUrl": "https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4rFOA  ",
       "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/34771906-9711-4196-9f60-4af380fd5042", "plan":"plan/123456","discountType": "percentage", "discountPercentage": 5 }
       ]
    }
  ]
}

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 descuentos basados en porcentajes:

  1. Cree un nuevo recurso encima del recurso de oferta privada que defina los precios absolutos.
  2. 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 privada.

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",
    "offerPricingType": "editExistingOfferPricingOnly",
    "plan": "plan/987654",
    "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.

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": "customerPromotion",
       "offerPricingType": "saasNewCustomizedPlans",
       "customerContractRenewal": false, 
       "variableStartDate": true,
       "end": "2022-01-31",
       "acceptBy": "2022-02-28",
       "preparedBy": "amy@contoso.com",
       "termsAndConditionsDocSasUrl": "https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4rFOA",
       "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"
             }
        ]
     }
  ]
}

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": "customerPromotion",
       "offerPricingType": "vmSoftwareReservations",
       "customerContractRenewal": false,
       "variableStartDate": true,
       "end": "2022-01-31",
       "acceptBy": "2022-02-28",
       "preparedBy": "amy@contoso.com",
       "termsAndConditionsDocSasUrl": "https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE4rFOA",
       "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"
        ]
     }
  ]
}

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/2023-07-15",
    "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.