Partager via


Créer une offre privée multipartie pour un client

L’ÉDITEUR de logiciels indépendants (originateur) et le partenaire de collaboration (vendeur) doivent utiliser le même ensemble d’appels d’API pour créer une offre privée pour un client. Voici le flux attendu.

  1. ISV crée l’offre et envoie pour vendre la visibilité des partenaires
  2. ISV informe le partenaire de vente (par e-mail ou d’autres méthodes) que l’offre est désormais disponible pour la vente de modifications de partenaire
  3. La vente de révisions de partenaires et termine la configuration de l’offre privée et des envois pour la visibilité des clients finaux

Voici la méthode à appeler pour la création de l’offre.

Requête

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

En-tête de requête

En-tête Type Description
Autorisation Chaîne Obligatoire. Jeton d’accès Microsoft Entra dans le formulaire Bearer <token>.

Facultatif : clientID

Paramètres de la demande

$version - obligatoire. Il s’agit de la version du schéma utilisé dans la requête.

Corps de la demande

Les options suivantes reflètent les options dans l’Espace partenaires lors de la création d’une offre privée multipartie pour un client. Ces options sont définies par les valeurs offerPricingType suivantes :

valeur offerPricingType Équivalent de l’option de création d’offre privée de l’Espace partenaires
editExistingOfferPricingOnly Personnaliser la tarification des offres publiques et des plans existants : utilisez cette option pour créer une offre privée pour tous les types d’offres transactionnelles : SaaS, Azure Machines Virtuelles et Applications Azure. Vous pouvez personnaliser la tarification de votre partenaire via des tarifs absolus ou des remises en pourcentage.
saasNew CustomPlans Personnaliser les tarifs, les quantités de compteurs et les limites utilisateur pour l’offre SaaS : utilisez cette option pour créer une offre privée pour un plan SaaS en personnalisant le prix absolu de votre partenaire, les quantités de dimension de mesure et les limites utilisateur.
vmSoftwareReservations Personnaliser les tarifs et les quantités spécifiques des offres de réservation de logiciels de machine virtuelle : utilisez cette option pour créer une offre privée multiparte pour vendre des réservations de logiciels de machine virtuelle (1 an ou 3 ans) et personnaliser le prix absolu du partenaire, la taille du processeur virtuel, les quantités, la durée et la planification de paiement.

Pour les trois options de type tarifaire précédentes, les besoins en ressources spécifiques à un plan peuvent varier. Pour plus d’informations, consultez le tableau suivant :

Nom de la ressource editExistingOfferPricingOnly saasNew CustomPlans vmSoftwareReservations
prisée. Plan Définissez cette valeur sur l’ID de plan du plan public à configurer dans le corps de la demande. Non applicable Non applicable
pricing.basePlan Non applicable Définissez cette valeur sur l’ID de plan du plan public à configurer dans le corps de la demande. Définissez cette valeur sur l’ID de plan du plan public à configurer dans le corps de la demande.
pricing.newPlanDetails.name Non applicable Définissez cette valeur sur le nom du nouveau plan qui sera affiché au client dans le corps de la demande. Non applicable au corps de la demande, sera généré par le système et disponible dans la réponse du travail une fois terminé.
pricing.newPlanDetails.description Non applicable Définissez cette valeur sur la description qui sera affichée au client pour le nouveau plan dans le corps de la demande. Non applicable au corps de la demande, sera généré par le système et disponible dans la réponse du travail une fois terminé.
valeur customerContractRenewal Description
true Une offre privée est un renouvellement d’un contrat client existant. Un tarif d’agence réduit de 50 % s’applique à votre offre privée pour les renouvellements des clients
false L’offre privée n’est pas un renouvellement d’un contrat client existant. Vos frais d’agence standard s’appliquent.

Le corps de la requête varie en fonction du rôle de l’appelant. Utilisez privateOfferType pour distinguer l’appelant ISV de la vente de l’appelant partenaire.

Rôle d’appelant valeur privateOfferType
ISV (Originator) multipartyPromotionOriginator
Partenaire vendeur (vendeur) multipartyPromotionChannelPartner

Exemples de corps de requête

Exemple de corps de demande par ISV pour créer l’offre à l’aide de la tarification de remise pour personnaliser la tarification du plan public existant uniquement

L’ÉDITEUR de logiciels indépendants (originateur) est requis pour fournir tous les détails fondamentaux de l’offre. Cela doit inclure un nom.

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

Exemple de corps de requête utilisant la tarification absolue pour personnaliser la tarification pour un plan public existant uniquement

Si vous utilisez des tarifs absolus au lieu d’une remise basée sur des pourcentages, vous pouvez créer une ressource au-dessus de la ressource d’offre privée multipartie qui définit la tarification absolue, puis inclure cette ressource nouvellement créée en tant qu’autre objet dans la liste des ressources du schéma de configuration.

Utilisez cette méthode pour obtenir la ressource de tarification de votre plan public existant, modifier les prix, puis utiliser la ressource modifiée pour votre offre.

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

Exemple de ressource de tarification absolue

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

Inclure cette ressource en tant qu’objet dans le module tarifaire

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

Exemple de corps de requête utilisant la tarification absolue pour personnaliser la tarification, la mesure des quantités et les limites utilisateur pour l’offre SaaS

Utilisez la méthode suivante pour créer une ressource de prix et de disponibilité absolue pour l’offre privée.

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

Exemple de ressource de tarification absolue pour une offre SaaS à taux fixe qui personnalise les quantités de prix et de compteur

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

Exemple de ressource de tarification absolue pour une offre SaaS par utilisateur qui personnalise les limites de prix et d’utilisateur

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

Inclure cette ressource en tant qu’objet dans le module tarifaire


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

Exemple de corps de requête utilisant des tarifs absolus pour personnaliser la tarification et des quantités spécifiques pour les offres de réservation de logiciels de machine virtuelle

Utilisez la méthode suivante pour créer une ressource de prix et de disponibilité absolue pour l’offre.

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

Exemple de ressource de tarification absolue pour une offre de machine virtuelle qui personnalise les prix et les quantités

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

Inclure cette ressource en tant qu’objet dans le module tarifaire

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

Exemple de demande par le partenaire pour terminer la création de l’offre

Le partenaire vendeur doit utiliser l’ID d’offre privée multiparte fourni par l’ÉDITEUR de logiciels indépendants pour configurer le pourcentage d’ajustement du client (balisage), la vente de contrats personnalisés partenaires, préparés par et les contacts partenaires de vente.

L’exemple suivant est basé sur le corps de la réponse retourné lors de la récupération des détails de l’offre à l’aide de l’ID d’offre.

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

Appels clés dans l’exemple précédent

  • Le partenaire vendeur doit fournir l’attribut prepareBy .
  • Les conditions générales personnalisées de l’ISV sont visibles, mais ne peuvent pas être modifiées par le partenaire vendeur, elles sont capturées dans l’originator ResourceTermsAndConditionsDocs.
  • Le partenaire vendeur peut charger son propre terme et condition personnalisé dans la ressource termsAndConditionsDocs .
  • Le partenaire vendeur peut ajouter ses propres contacts pour être informé de l’offre dans la ressource notificationContacts .
  • Les attributs bénéficiaire et partenaires sont visibles, mais ne peuvent pas être modifiés par le partenaire vendeur.
  • La ressource de tarification s’affiche en tant qu’originatorPricing, markupPercentage est requise et doit être fournie par le partenaire de vente lors de l’envoi, tous les autres attributs de la ressource de tarification sont en lecture seule.

Response

La réponse contient l’id de travail que vous pouvez utiliser ultérieurement pour interroger l’état :

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

Codes d’erreur

Code d’état HTTP Description
401 Erreur d’authentification : vérifiez que vous utilisez un jeton d’accès Microsoft Entra valide.
400 Validation de schéma. Vérifiez que le corps de votre demande suit le schéma correct et inclut tous les champs obligatoires.