Query
Notice that both dedupeFields
and searchableFields
are a little different from opportunities. dedupeFields
actually provides a compound key, where all three of externalOpportunityId
, leadId
, and role
are required. Both the opportunity and lead link by the id fields must exist in the destination instance, for record creation to succeed. For searchableFields
, marketoGUID
, leadId
, and externalOpportunityId
are all valid for queries on their own and use a pattern identical to Opportunities, but there is an additional option of using the compound key to query, which requires submitting a JSON object via POST, with the additional query parameter _method=GET
.
POST /rest/v1/opportunities/roles.json?_method=GET
{
"filterType": "dedupeFields",
"fields": [
"marketoGuid",
"externalOpportunityId",
"leadId",
"role"
],
"input": [
{
"externalOpportunityId": "Opportunity1",
"leadId": 1,
"role": "Captain"
},
{
"externalOpportunityId": "Opportunity2",
"leadId": 1872,
"role": "Commander"
},
{
"externalOpportunityId": "Opportunity3",
"leadId": 273891,
"role": "Lieutenant Commander"
}
]
}
This produces the same type of response as a standard GET query, it simply has a different interface for making the request.
Create and Update
Opportunity roles have the same interface for creating and updating records as opportunities.
POST /rest/v1/opportunities/roles.json
{
"action": "createOrUpdate",
"dedupeBy": "dedupeFields",
"input": [
{
"externalOpportunityId": "19UYA31581L000000",
"leadId": 456783,
"role": "Technical Buyer",
"isPrimary": false
},
{
"externalOpportunityId": "19UYA31581L000000",
"leadId": 456784,
"role": "Technical Buyer",
"isPrimary": false
}
]
}
{
"requestId": "e42b#14272d07d78",
"success": true,
"result":[
{
"seq": 0,
"status": "updated",
"marketoGUID": "dff23271-f996-47d7-984f-f2676861b5fb"
},
{
"seq": 1,
"status": "created",
"marketoGUID": "cff23271-f996-47d7-984f-f2676861b5fb"
}
]
}