Execute a merge draft by applying explicit survivor/source decisions.
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://example.com/api/workspace/entity/example/record-merge/execute"), Headers = { { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"SurvivorInstanceId\": \"example\", \"SourceInstanceId\": \"example\", \"SurvivorRowVersion\": \"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0\", \"SourceRowVersion\": \"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0\", \"Surface\": 0, \"FieldDecisions\": [ { \"FieldKey\": \"example\", \"Decision\": 0 } ], \"TableDecisions\": [ { \"FieldKey\": \"example\", \"Mode\": 0, \"SelectedSourceRowIds\": [ \"example\" ] } ], \"OperationKey\": \"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0\", \"Reason\": \"example\" }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}const url = 'https://example.com/api/workspace/entity/example/record-merge/execute';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"SurvivorInstanceId":"example","SourceInstanceId":"example","SurvivorRowVersion":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","SourceRowVersion":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","Surface":0,"FieldDecisions":[{"FieldKey":"example","Decision":0}],"TableDecisions":[{"FieldKey":"example","Mode":0,"SelectedSourceRowIds":["example"]}],"OperationKey":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","Reason":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/workspace/entity/example/record-merge/execute \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "SurvivorInstanceId": "example", "SourceInstanceId": "example", "SurvivorRowVersion": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "SourceRowVersion": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "Surface": 0, "FieldDecisions": [ { "FieldKey": "example", "Decision": 0 } ], "TableDecisions": [ { "FieldKey": "example", "Mode": 0, "SelectedSourceRowIds": [ "example" ] } ], "OperationKey": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "Reason": "example" }'Requires Reason of 1–1000 characters after trimming. It is stored in the same transaction with the
archive of the source record and of any coalesced association rows, as their lifecycle audit evidence.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Query Parameters
Section titled “Query Parameters”Optional access token for clients that cannot set Authorization headers. Prefer Authorization: Bearer <token> when possible.
Request Body
Section titled “Request Body”Execute a prepared record merge with explicit survivor/source and field decisions.
object
Record that survives the merge.
Record merged into the survivor and archived.
Current survivor row version expected by the caller.
Current source row version expected by the caller.
Per-field survivor or source decisions; omitted fields keep the survivor value.
One scalar-field merge decision.
object
Per-table decisions for owned table rows.
One table-field merge decision.
object
Caller-generated UUID reused only for an exact retry of the same merge.
Required audit reason for the merge. Must contain 1–1000 characters after trimming leading and trailing whitespace; it is stored with the archive of the source record and of coalesced association rows.
Execute a prepared record merge with explicit survivor/source and field decisions.
object
Record that survives the merge.
Record merged into the survivor and archived.
Current survivor row version expected by the caller.
Current source row version expected by the caller.
Per-field survivor or source decisions; omitted fields keep the survivor value.
One scalar-field merge decision.
object
Per-table decisions for owned table rows.
One table-field merge decision.
object
Caller-generated UUID reused only for an exact retry of the same merge.
Required audit reason for the merge. Must contain 1–1000 characters after trimming leading and trailing whitespace; it is stored with the archive of the source record and of coalesced association rows.
Execute a prepared record merge with explicit survivor/source and field decisions.
object
Record that survives the merge.
Record merged into the survivor and archived.
Current survivor row version expected by the caller.
Current source row version expected by the caller.
Per-field survivor or source decisions; omitted fields keep the survivor value.
One scalar-field merge decision.
object
Per-table decisions for owned table rows.
One table-field merge decision.
object
Caller-generated UUID reused only for an exact retry of the same merge.
Required audit reason for the merge. Must contain 1–1000 characters after trimming leading and trailing whitespace; it is stored with the archive of the source record and of coalesced association rows.
Responses
Section titled “Responses”OK
object
Completed merge operation summary.
object
object
object
object
object
object
Example
{ "Data": null, "Errors": [ { "Type": 0, "Severity": 0 } ], "Warnings": [ { "Type": 0, "Severity": 0 } ]}Bad Request
object
Completed merge operation summary.
object
object
object
object
object
object
Example
{ "Data": null, "Errors": [ { "Type": 0, "Severity": 0 } ], "Warnings": [ { "Type": 0, "Severity": 0 } ]}Access refused, without a body; or recordMerge.replay.resultNotViewable with the envelope: a replayed merge whose survivor is not readable.
object
Completed merge operation summary.
object
object
object
object
object
object
Example
{ "Data": null, "Errors": [ { "Type": 0, "Severity": 0 } ], "Warnings": [ { "Type": 0, "Severity": 0 } ]}Not Found
object
Completed merge operation summary.
object
object
object
object
object
object
Example
{ "Data": null, "Errors": [ { "Type": 0, "Severity": 0 } ], "Warnings": [ { "Type": 0, "Severity": 0 } ]}Conflict
object
Completed merge operation summary.
object
object
object
object
object
object
Example
{ "Data": null, "Errors": [ { "Type": 0, "Severity": 0 } ], "Warnings": [ { "Type": 0, "Severity": 0 } ]}Service Unavailable
object
Completed merge operation summary.
object
object
object
object
object
object
Example
{ "Data": null, "Errors": [ { "Type": 0, "Severity": 0 } ], "Warnings": [ { "Type": 0, "Severity": 0 } ]}