export_takeoff
Export the takeoff canvas payload as JSON in the exact format OpenTakeoff autosaves, with optional file output.
Instructions
The full "opentakeoff.takeoff_canvas.v1" annotations payload — exactly what the app autosaves, importable by it. Returned inline; pass path to also write it to disk as JSON. Coordinates are image px at render scale 2.0: PDF pt × 2, origin top-left, y down (the browser canvas's native space). Sheet payloads carry dims in both px and pt.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | File path to write the payload to | |
| overwrite | No | Replace the file at path even when it is not an OpenTakeoff export. Off by default: re-exporting over a previous export of your own already overwrites without this, so you only need it to deliberately destroy an unrelated file. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| units | Yes | ||
| schema | Yes | ||
| shapes | Yes | ||
| sheets | Yes | ||
| markups | Yes | ||
| approvals | No | Approval-family records (#176) — the estimator's APPROVED seals and the agent's verdict marks {id, actor, ts, sheet_id, at:[nx,ny], shape_id?, text?}. Present only when any exist (the canvas payload's own convention), so a verdict-free export stays byte-identical | |
| conditions | Yes | ||
| last_group | Yes | ||
| sheet_tabs | Yes | ||
| sheet_group | Yes | ||
| project_name | Yes | ||
| sheet_levels | Yes |