Cancel a merge
Stops a merge that isn't changing the target: computing, draft, rehearsing (the worker deletes the rehearsal branch; until it is gone the target's reset, restore and delete answer branch_merge_busy with error.rehearsal_branch_id) or rehearsed. An applying merge can't be cancelled, and a merge failed in online is abandoned instead.
Authorization
bearer In: header
Path Parameters
Database id
uuidMerge id
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/databases/497f6eca-6276-4993-bfeb-53cbbbba6f08/merges/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel"{ "created_at": "2019-08-24T14:15:22Z", "created_by": "string", "database": "string", "direction": "into_parent", "error": "string", "failed_phase": "string", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "rebaselined": true, "source_branch_id": "345f76de-8f9d-4a8f-b08e-a28a3db17483", "status": "computing", "target_branch_id": "2a8880d3-8c08-4fef-81e0-ec9d6c6def29", "updated_at": "2019-08-24T14:15:22Z", "version": 0}Apply a rehearsed merge to its target POST
Refuses, in this order: a merge that isn't `rehearsed` (`merge_not_rehearsed`, or `merge_stale` for a stale one); a `version` that isn't the merge's (`merge_version_conflict`: a save of acknowledgements or the after-merge choice keeps a merge rehearsed, so send the version you last saw to apply what you saw); conflicts without a resolution (`merge_conflicts_open`); data-loss, security (BYPASSRLS, owner-level) or breaking (a role rename) steps without an acknowledgement (`merge_drops_unacknowledged`); a protected target without `confirm: true` (`merge_confirm_required`); another merge applying to the target, or failed half applied on it (`merge_busy`). The worker then runs the plan (`applying`, then `online` for the concurrent index and validation steps, then `finishing`). The request doesn't read the target: before the plan's transaction the worker compares the target with the schema the plan was computed from, and if it changed, ends the merge `stale` without applying the transaction.
Run the after-merge choice of a merge applied with drift POST
A merge whose target doesn't read back as merged ends `applied_with_drift` without running its after-merge choice (`result.after.skipped`). Once you've looked at the drift, this runs it: `keep` (the merge becomes the branch's base, if the source is still the schema that was merged; otherwise `result.after.base` is `not_advanced`), `reset` or `delete` of the source branch, with their usual refusals recorded in `result.after`. Only once per merge; an update from the parent only keeps. The merge stays `applied_with_drift`; `result.after` holds `requested: true` until the worker records the outcome.