Association of Crosswalk With Proper Contributor
When overriding an existing entity, it is possible to associate crosswalks with an existing contributor.
The customers can POST
entities with more than one
"contributorProvider":true
property in case of a new entity. In case of
an existing entity, only one "contributorProvider":true
property can be
posted (override case).
If you want all crosswalks (new and already existing) to be moved to the specified contributor,
then you should specify "dataProvider":false
and
"globalContributorProvider":true
properties for a crosswalk from the
desired contributor.
"contributorProvider":true
or
"globalContributorProvider":true
can be used
only for non-
"dataProvider"
crosswalks, otherwise an error will occur. Also, an error
will occur if two non-
"dataProvider"
crosswalks from different contributors are marked
as the contributor provider.
If you specify both
"contributorProvider":true
and
"globalContributorProvider":true
in
the same crosswalk, then the
"globalContributorProvider"
logic will be applied.
Suppose there is an entity with the following crosswalk tree:
{
"merges":[
{
"time":1413408570877,
"user":"user",
"mergeReason":"Merge
by hand",
"mergeRules":"",
"losers":[
{
"crosswalks":[
{
"URI":"entities/fb.1/crosswalks/9ju9",
"type":"configuration/sources/FB",
"ownerType":"entity",
"value":"fb.1"
}
],
"URI":"entities/fb.1"
}
]
}
],
"crosswalks":[
{
"URI":"entities/lnkd.1/crosswalks/BZ3K",
"type":"configuration/sources/LNKD",
"ownerType":"entity",
"value":"lnkd.1"
}
],
"URI":"entities/lnkd.1"
}
It has two contributors ("fb.1" and "lnkd.1") and each contributor contains one crosswalk.
Assume that you are going to add some values with a new crosswalk: "fb.2". You want to associate this new crosswalk with the "fb.1" contributor. In this case you need to execute the following request:
POST{
TenantURL
}/entities
Headers:Authorization:Bearer 204938ca-2cf7-44b0-b11a-1b4c59984510,
Content-Type:application/json Body:[
{
"type":"configuration/entityTypes/Individual",
"attributes":{
"Name":[
{
"value":"New name"
}
],
...
},
"crosswalks":[
{
"type":"configuration/sources/FB",
"value":"fb.1",
"dataProvider":false,
"contributorProvider":true
},
{
"type":"configuration/sources/FB",
"value":"fb.2",
"dataProvider":true
}
]
}
]
dataProvider
" crosswalk "fb.1" with
the
"contributorProvider":true
property.
The crosswalk tree will appear as follows:
{
"merges":[
{
"time":1413408570877,
"user":"user",
"mergeReason":"Merge by hand",
"mergeRules":"",
"losers":[
{
"crosswalks":[
{
"URI":"entities/fb.1/crosswalks/9ju9",
"type":"configuration/sources/FB",
"ownerType":"entity",
"value":"fb.1"
},
{
"URI":"entities/fb.1/crosswalks/hk3f",
"type":"configuration/sources/FB",
"ownerType":"entity",
"value":"fb.2"
}
],
"URI":"entities/fb.1"
}
]
}
],
"crosswalks":[
{
"URI":"entities/lnkd.1/crosswalks/BZ3K",
"type":"configuration/sources/LNKD",
"ownerType":"entity",
"value":"lnkd.1"
}
],
"URI":"entities/lnkd.1"
}
If you post a new entity without the
"contributorProvider"
property
for the "fb.1" non-
"dataProvider"
crosswalk (default behavior), you
will get the following crosswalk tree:
{
"merges":[
{
"time":1413408570877,
"user":"user",
"mergeReason":"Merge by hand",
"mergeRules":"",
"losers":[
{
"crosswalks":[
{
"URI":"entities/0YjDHlq/crosswalks/9ju9",
"type":"configuration/sources/FB",
"ownerType":"entity",
"value":"fb.1"
}
],
"URI":"entities/0BFcxNd"
}
]
},
{
"time":1413409970877,
"user":"user",
"mergeReason":"Merge by crosswalks",
"mergeRules":"",
"losers":[
{
"crosswalks":[
{
"URI":"entities/0YjDHlq/crosswalks/hk3f",
"type":"configuration/sources/FB",
"ownerType":"entity",
"value":"fb.2"
}
],
"URI":"entities/0G2cxkL",
"phantomEntity":true
}
]
}
],
"crosswalks":[
{
"URI":"entities/0YjDHlq/crosswalks/BZ3K",
"type":"configuration/sources/LNKD",
"ownerType":"entity",
"value":"lnkd.1"
}
],
"URI":"entities/0YjDHlq"
}