Merge concurrent edits of a building model
cao_fusionner_versionsWHEN two people or agents changed the same house design in parallel, starting from the same version, and both changes must be kept (like synchronising with a Revit central model). Three-way merge, element by element and field by field: a change made on one side goes through; the same field changed differently on both sides, or an element deleted on one side and modified on the other, is returned as a conflict, never silently overwritten. An opening stays on its own wall even if the other side deleted a wall before it. Pass resolutions {conflict id: central | local} to settle conflicts. Elements keep a persistent identity (ifc_guid, equal to their IFC GlobalId, or your own external_id). Pass empreinte_base (SHA-256 of the base you loaded) to refuse a merge on another base; the answer gives the SHA-256 of the three versions and of the result.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | The version both sides started from. | |
| locale | Yes | Your changed copy, started from `base`. | |
| central | Yes | The shared version as it is now (changed by others). | |
| resolutions | No | Optional: for each conflict id returned by a first call, "central" or "local". | |
| empreinte_base | No | Optional: sha256 of the base as you loaded it (sorted JSON, compact separators) — a different base is refused (409). |