Skip to main content
Alpha: Document API is currently alpha and subject to breaking changes.

Summary

Dry-run a mutation plan, returning resolved targets without applying changes.
  • Operation ID: mutations.preview
  • API member path: editor.doc.mutations.preview(...)
  • Mutates document: no
  • Idempotency: idempotent
  • Supports tracked mode: no
  • Supports dry run: no
  • Deterministic target resolution: yes

Expected result

Returns a MutationsPreviewOutput with resolved targets and step details without applying changes.

Supported step operations

Use these values in steps[].op when authoring mutation plans.

Assert

Step op (steps[].op)DescriptionRelated API operation
assertAssert selector cardinality after mutation steps complete.

Text

Step op (steps[].op)DescriptionRelated API operation
text.rewriteRewrite matched text ranges with replacement content.replace
text.insertInsert text before or after a matched range.insert
text.deleteDelete matched text ranges.delete

Format

Step op (steps[].op)DescriptionRelated API operation
format.applyApply inline formatting patch changes to matched text ranges.format.apply

Create

Step op (steps[].op)DescriptionRelated API operation
create.paragraphCreate a paragraph adjacent to the matched block.create.paragraph
create.headingCreate a heading adjacent to the matched block.create.heading
create.tableCreate a table at the requested location.create.table

Tables

Step op (steps[].op)DescriptionRelated API operation
tables.deleteDelete the target table from the document.tables.delete
tables.clearContentsClear contents from a target table or cell range.tables.clearContents
tables.moveMove a table to a new position.tables.move
tables.splitSplit a table into two tables at a target row.tables.split
tables.convertFromTextConvert a text range into a table.tables.convertFromText
tables.convertToTextConvert a table to plain text.tables.convertToText
tables.setLayoutSet table layout mode.tables.setLayout
tables.insertRowInsert a row into the target table.tables.insertRow
tables.deleteRowDelete a row from the target table.tables.deleteRow
tables.setRowHeightSet row height in the target table.tables.setRowHeight
tables.distributeRowsDistribute row heights evenly.tables.distributeRows
tables.setRowOptionsSet row-level options (header repeat, page break, etc.).tables.setRowOptions
tables.insertColumnInsert a column into the target table.tables.insertColumn
tables.deleteColumnDelete a column from the target table.tables.deleteColumn
tables.setColumnWidthSet column width in the target table.tables.setColumnWidth
tables.distributeColumnsDistribute column widths evenly.tables.distributeColumns
tables.insertCellInsert a cell into a table row.tables.insertCell
tables.deleteCellDelete a cell from a table row.tables.deleteCell
tables.mergeCellsMerge a range of table cells.tables.mergeCells
tables.unmergeCellsUnmerge a merged table cell.tables.unmergeCells
tables.splitCellSplit a table cell into multiple cells.tables.splitCell
tables.setCellPropertiesSet properties on target table cells.tables.setCellProperties
tables.sortSort table rows by a column value.tables.sort
tables.setAltTextSet table alt text properties.tables.setAltText
tables.setStyleSet table style identifier.tables.setStyle
tables.clearStyleClear direct table style assignment.tables.clearStyle
tables.setStyleOptionSet table style option flags.tables.setStyleOption
tables.setBorderSet table border properties.tables.setBorder
tables.clearBorderClear table border properties.tables.clearBorder
tables.applyBorderPresetApply a border preset to a table.tables.applyBorderPreset
tables.setShadingSet table shading properties.tables.setShading
tables.clearShadingClear table shading properties.tables.clearShading
tables.setTablePaddingSet table-level cell padding.tables.setTablePadding
tables.setCellPaddingSet cell padding for target cells.tables.setCellPadding
tables.setCellSpacingSet table cell spacing.tables.setCellSpacing
tables.clearCellSpacingClear table cell spacing.tables.clearCellSpacing
The runtime capability snapshot also exposes this allowlist at planEngine.supportedStepOps.

Input fields

FieldTypeRequiredDescription
atomictrueyesConstant: true
changeModeenumyes"direct", "tracked"
expectedRevisionstringno
stepsobject[]yes

Example request

{
  "atomic": true,
  "changeMode": "direct",
  "expectedRevision": "rev-001",
  "steps": [
    {}
  ]
}

Output fields

FieldTypeRequiredDescription
evaluatedRevisionstringyes
failuresobject[]no
stepsobject[]yes
validbooleanyes

Example response

{
  "evaluatedRevision": "rev-001",
  "failures": [
    {}
  ],
  "steps": [
    {}
  ],
  "valid": true
}

Pre-apply throws

  • REVISION_MISMATCH
  • MATCH_NOT_FOUND
  • AMBIGUOUS_MATCH
  • STYLE_CONFLICT
  • PRECONDITION_FAILED
  • INVALID_INPUT
  • CROSS_BLOCK_MATCH
  • SPAN_FRAGMENTED
  • TARGET_MOVED
  • PLAN_CONFLICT_OVERLAP
  • INVALID_STEP_COMBINATION
  • REVISION_CHANGED_SINCE_COMPILE
  • INVALID_INSERTION_CONTEXT
  • DOCUMENT_IDENTITY_CONFLICT
  • CAPABILITY_UNAVAILABLE

Non-applied failure codes

  • None

Raw schemas

{
  "additionalProperties": false,
  "properties": {
    "atomic": {
      "const": true
    },
    "changeMode": {
      "enum": [
        "direct",
        "tracked"
      ]
    },
    "expectedRevision": {
      "type": "string"
    },
    "steps": {
      "items": {
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "atomic",
    "changeMode",
    "steps"
  ],
  "type": "object"
}
{
  "additionalProperties": false,
  "properties": {
    "evaluatedRevision": {
      "type": "string"
    },
    "failures": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "steps": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "valid": {
      "type": "boolean"
    }
  },
  "required": [
    "evaluatedRevision",
    "steps",
    "valid"
  ],
  "type": "object"
}