Create a referral
This article explains how to create a referral.
Prerequisites
- Credentials as described in Referrals API authentication. This scenario supports authentication with App+User credentials.
REST Request
Request syntax
Method | Request URI |
---|---|
POST | https://api.partner.microsoft.com/v1.0/engagements/referrals |
Request headers
- For more information, see Partner API REST headers.
Request body
This table describes the Referral properties in the request body for a brand new referral.
Property | Type | Description |
---|---|---|
Name | string | The name of the Referral. |
ExternalReferenceID | string | An external identifier for the referral. For example, your own Dynamics 365 lead or opportunity ID. |
Status | ReferralStatus | An Enum with values that indicate the referral status. |
Substatus | ReferralSubstatus | An Enum with values that indicate the referral substatus. |
StatusReason | string | A descriptive message about the status. For example, explain why the referral was lost. |
ReferralType | ReferralType | Represents the referral type. Required. |
Qualification | ReferralQualification | Represents the quality of the referral. |
CustomerProfile | CustomerProfile | Customer contact information. Required. |
Consent | Consent | Consent flags around sharing information with other organizations and allowing them to contact users.Required. |
Details | ReferralDetails | Customer details, notes, deal value, currency closing date. Required. |
Team | Member | Represents users in the organizations that are involved in the partner engagement. |
InviteContext | InviteContext | Represents more information a user can provide when inviting another organization into the partner engagement. |
Target | ReferralTarget | Represents more information a user can provide when inviting another organization into the partner engagement. |
Partner role | PartnerRole | Required for Services co-sell referrals only |
Solution Area | SolutionArea | The Solution area of the Customer need in the opportunity. Required for Services co-sell referrals only |
Solution Play | SolutionPlay | The Solution play of the Customer need in the opportunity. Required for Services co-sell referrals only |
Request example
Important
This sample request describes how to create a Private referral with minimal information required. Notice that the key parameter to make this referral a private deal is consentToShareReferralWithMicrosoftSellers.
POST https://api.partner.microsoft.com/v1.0/engagements/referrals HTTP/1.1
Authorization: Bearer <token>
Host: api.partner.microsoft.com
Content-Type: application/json
{
"name": "Contoso Test Deal - [Private]",
"qualification": "SalesQualified",
"type": "Independent",
"customerProfile": {
"name": "Contoso Customer Inc",
"address": {
"addressLine1": "One Microsoft Way",
"addressLine2": "34",
"city": "Redmond",
"state": "WA",
"postalCode": "98052",
"country": "US"
},
"size": "10to50employees",
"team": [
{
"firstName": "Sue",
"lastName": "Smith",
"phoneNumber": "1234567890",
"email": "sue.smith@contosocustomer.com"
}
]
},
"consent": {
"ConsentToToShareInfoWithOthers": true,
"ConsentToContact": true,
"ConsentToMicrosoftToContactSpecificPartners": true,
"consentToShareReferralWithMicrosoftSellers": false
},
"details": {
"notes": "Customer is looking to leverage Dynamics 365 to manage their supply chain. There's also a need to leverage a set of custom apps to enable their business processes.",
"dealValue": 50000,
"currency": "USD",
"closingDateTime": "2024-11-14T00:00:00Z",
"requirements": {
"solutions": [
{
"type": "Name",
"id": "SOL-15974-MQF",
"name": "Contoso-Ale_Test",
"publisherName": "Contoso_Test",
"solutionType": "3P"
}
],
"additionalRequirements": {
"iot": {},
"attributes": [
{
"id": "HaveNotDecided",
"type": "CustomerMarketplaceIntent"
}
]
}
}
},
"team": [
{
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "1231231234",
"email": "john.doe@contoso.com"
}
],
"target": [],
"mpnId": "<ENTER PARTNER_ID>"
}
REST Response
If successful, this method returns the populated Referral resource in the response body.
Response success and error codes
Each response comes with an HTTP status code that indicates success or failure and more debugging information. Use a network trace tool to read this code, error type, and other parameters. For the full list, see Error Codes.
Response example
{
"id": "4eb82669-ccf8-4856-86fc-b9ffe116376b",
"engagementId": "6d72b13d-8584-4bba-a642-6800b8e32330",
"name": "Contoso Test Deal - [Private]",
"organizationId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"organizationName": "Contoso Pvt Ltd",
"lastModifiedVia": "4990cffe-04e8-4e8b-808a-1175604b879f",
"target": [],
"createdDateTime": "2024-07-27T14:57:00.0952954Z",
"updatedDateTime": "2024-07-27T14:57:00.0952954Z",
"status": "Active",
"substatus": "Accepted",
"qualification": "SalesQualified",
"type": "Independent",
"customerProfile": {
"name": "Contoso Customer Inc",
"address": {
"addressLine1": "One Microsoft Way",
"addressLine2": "34",
"city": "Redmond",
"state": "WA",
"postalCode": "98052",
"country": "US"
},
"size": "10to50employees",
"team": [
{
"contactPreference": {
"locale": "en-us",
"disableNotifications": false
},
"firstName": "Sue",
"lastName": "Smith",
"phoneNumber": "1234567890",
"email": "sue.smith@contosocustomer.com",
"emailValidationStatus": "None",
"phoneValidationStatus": "None"
}
],
"ids": [],
"isMatchingComplete": false
},
"consent": {
"consentToToShareInfoWithOthers": true,
"consentToContact": true,
"ConsentToMicrosoftToContactSpecificPartners": true,
"consentToShareReferralWithMicrosoftSellers": false
},
"details": {
"notes": "Customer is looking to leverage Dynamics 365 to manage their supply chain. There's also a need to leverage a set of custom apps to enable their business processes.",
"dealValue": 50000.0,
"currency": "USD",
"closingDateTime": "2024-11-14T00:00:00Z",
"requirements": {
"industries": [],
"products": [],
"services": [],
"solutions": [
{
"name": "Contoso-Ale_Test",
"type": "Name",
"publisherName": "Contoso_Test",
"solutionType": "3P",
"id": "SOL-15974-MQF"
}
],
"additionalRequirements": {
"iot": {
"azureCertifiedDevice": false,
"attachServices": false
},
"attributes": [
{
"type": "CustomerMarketplaceIntent",
"id": "HaveNotDecided"
}
]
}
}
},
"team": [
{
"contactPreference": {
"locale": "en-us",
"disableNotifications": false
},
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "1231231234",
"email": "john.doe@contoso.com",
"emailValidationStatus": "None",
"phoneValidationStatus": "None"
}
],
"inviteContext": {
"invitedBy": {
"organizationId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"organizationName": "Contoso Pvt Ltd"
},
"assistanceRequestCode": "Unknown",
"invitedMpnId": "<PARTNER_ID>"
},
"favorite": false,
"trackingInfo": {},
"direction": "Outgoing",
"mpnId": "<PARTNER_ID>",
"dealSensitivity": "None",
"createdVia": "4990cffe-04e8-4e8b-808a-1175604b879f",
"acceptedDateTime": "2024-07-27T14:56:59.2938209Z",
"registrationStatus": "None",
"links": {
"relatedReferrals": {
"uri": "https://api.partner.microsoft.com/v1.0/engagments/referrals?$filter=engagementId eq '6d72b13d-8584-4bba-a642-6800b8e32330'",
"method": "GET"
},
"self": {
"uri": "https://api.partner.microsoft.com/v1.0/engagments/referrals/4eb82669-ccf8-4856-86fc-b9ffe116376b",
"method": "GET"
}
}
}
Create a Co-sell deal or a shared referral
There are two steps to create a Co-sell deal or referral of the Shared referral type:
- Create a Partner-led deal visible to Microsoft sellers
- Create a Microsoft referral using partner referral details
The following flowchart illustrates these two steps in creating a shared referral.
Step 1: Create a Partner-led deal visible to Microsoft sellers
First, create a Partner-led deal visible to Microsoft sellers using the following request payload.
Important
Note that to make a referral Partner-led, consentToShareReferralWithMicrosoftSellers is supplied as true. An active Private referral can be converted to Partner-led just by updating the referral for this field.
POST https://api.partner.microsoft.com/v1.0/engagements/referrals HTTP/1.1
Authorization: Bearer <token>
Host: api.partner.microsoft.com
Content-Type: application/json
{
"name": "Contoso Test Deal - [PartnerLed]",
"qualification": "SalesQualified",
"type": "Shared",
"customerProfile": {
"name": "Contoso Customer Inc",
"address": {
"addressLine1": "One Microsoft Way",
"addressLine2": "34",
"city": "Redmond",
"state": "WA",
"postalCode": "98052",
"country": "US"
},
"size": "10to50employees",
"team": [
{
"firstName": "Sue",
"lastName": "Smith",
"phoneNumber": "1234567890",
"email": "sue.smith@contosocustomer.com"
}
]
},
"consent": {
"ConsentToToShareInfoWithOthers": true,
"ConsentToContact": true,
"ConsentToMicrosoftToContactSpecificPartners": true,
"consentToShareReferralWithMicrosoftSellers": true
},
"details": {
"notes": "Customer is looking to leverage Dynamics 365 to manage their supply chain. There's also a need to leverage a set of custom apps to enable their business processes.",
"dealValue": 50000,
"currency": "USD",
"closingDateTime": "2024-11-14T00:00:00Z",
"requirements": {
"solutions": [
{
"type": "Name",
"id": "SOL-15974-MQF",
"name": "Contoso-Ale_Test",
"publisherName": "Contoso_Test",
"solutionType": "3P"
}
],
"additionalRequirements": {
"iot": {},
"attributes": [
{
"id": "HaveNotDecided",
"type": "CustomerMarketplaceIntent"
}
]
}
}
},
"team": [
{
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "1231231234",
"email": "john.doe@contoso.com"
}
],
"target": [],
"mpnId": "<ENTER PARTNER_ID>"
}
ReferralTarget represents additional information a partner can provide when inviting other organizations into the engagement. To specify 'target' in a referral for type SolutionProfile, here's a sample value for reference:
"target": [
{
"type": "SolutionProfile",
"id": "SOL-ABC-DEF"
}
]
Note
The field type provided as Independent or Shared in the request input is just an indicative value and it does not impact the deal type. The actual value in assigned within API based on other parameters like consent and inviteContext.
Step 2: Create a Microsoft referral using partner referral details
Then, create the Microsoft referral via another API call and link it to the Partner referral using the Engagement ID field returned from Step 1.
POST https://api.partner.microsoft.com/v1.0/engagements/referrals HTTP/1.1
Authorization: Bearer <token>
Host: api.partner.microsoft.com
Content-Type: application/json
{
"engagementId": "<ENGAGEMENT_ID (FROM PARTNER REFERRAL)>",
"organizationId": "msft",
"organizationName": "Microsoft",
"name": "Contoso Test Deal",
"type": "Shared",
"qualification": "SalesQualified",
"customerProfile": {
"name": "Contoso Customer Inc",
"address": {
"addressLine1": "One Microsoft Way",
"addressLine2": "34",
"city": "Redmond",
"state": "WA",
"postalCode": "98052",
"country": "US"
},
"size": "10to50employees",
"team": [
{
"firstName": "Sue",
"lastName": "Smith",
"phoneNumber": "1234567890",
"email": "sue.smith@contosocustomer.com",
"emailValidationStatus": "None",
"phoneValidationStatus": "None"
}
],
"isMatchingComplete": false
},
"consent": {
"consentToToShareInfoWithOthers": true,
"consentToContact": true,
"ConsentToMicrosoftToContactSpecificPartners": true,
"consentToShareReferralWithMicrosoftSellers": true
},
"details": {
"notes": "Test notes to Microsoft.",
"dealValue": 50000.0,
"currency": "USD",
"closingDateTime": "2024-11-14T00:00:00Z"
},
"team": [],
"inviteContext": {
"notes": "Proof of concept / Demo , Test notes to Microsoft.",
"invitedBy": {
"organizationId": "<ORGANIZATION_ID (FROM PARTNER REFERRAL)>",
"organizationName": "<ORGANIZATION_NAME (FROM PARTNER REFERRAL)>"
},
"assistanceRequestCode": "ProofOfConceptOrDemo"
},
"target": []
}
To specify ReferralTarget for a Microsoft referral, here's a sample value for reference:
"target": [
{
"type": "BusinessProfileLocation",
"id": "msft"
}
]
Create Services Co-sell opportunity
- To create a Services Co-sell opportunity, PartnerRole, SolutionArea, and SolutionPlay must be provided in details > requirements > additionalRequirements.
- Solution details are optional in Services Co-sell opportunities.
"details": {
"dealValue": 123456,
"currency": "USD",
"closingDateTime": "2025-01-21T18:30:00.000Z",
"notes": "Test Notes",
"requirements": {
"solutions": [],
"additionalRequirements": {
"attributes": [
{
"id": "Adoption and change management",
"type": "PartnerRole"
},
{
"id": "Data and AI",
"type": "SolutionArea"
},
{
"id": "Enable Unified Data Governance",
"type": "SolutionPlay"
}
]
}
}
}