export format
Ideallo documents can be exported as self-contained JSON files for backup, sharing, and interoperability.
File Format
- File extension:
.ideallo - Content type:
application/vnd.cloudillo.ideallo+json - Format version:
3.0.0 - Encoding: UTF-8 JSON
v3 generic export format
Since format version 3.0.0, Ideallo uses the generic exportYDoc() serializer from @cloudillo/crdt. All Yjs types carry inline @T type markers and data keys match the raw CRDT shared type names. See v3 Generic Export Format for the full specification.
Envelope Structure
{
"contentType": "application/vnd.cloudillo.ideallo+json",
"appVersion": "0.5.0",
"formatVersion": "3.0.0",
"exportedAt": "2026-01-15T14:30:00.000Z",
"data": {
"m": { "@T": "M", ... },
"o": { "@T": "M", ... },
"r": [ "@T:A", ... ],
"txt": { "@T": "M", ... },
"geo": { "@T": "M", ... },
"paths": { "@T": "M", ... }
}
}Envelope Fields
| Field | Type | Description |
|---|---|---|
contentType |
string |
Always "application/vnd.cloudillo.ideallo+json" |
appVersion |
string |
Ideallo version that created this export |
formatVersion |
string |
Export format version (currently "3.0.0") |
exportedAt |
string |
ISO 8601 timestamp of export |
Data Fields
| Key | @T |
Yjs Type | Description |
|---|---|---|---|
m |
M |
Y.Map |
Document metadata (name, background color, grid settings) |
o |
M |
Y.Map<StoredObject> |
All objects keyed by ObjectId, using compact field names |
r |
A |
Y.Array<string> |
Z-order array of ObjectId values (index 0 = backmost) |
txt |
M |
Y.Map<Y.Text> |
Text content keyed by ObjectId – Y.Text with text and delta fields |
geo |
M |
Y.Map<Y.Array<number>> |
Polygon vertices keyed by ObjectId – flat [x, y, x, y, ...] arrays |
paths |
M |
Y.Map<string> |
SVG path strings keyed by ObjectId |
Text content preserves formatting in v3
The txt entries are Y.Text instances serialized with @T: "T", containing both text (plain text) and delta (Quill Delta operations). This preserves rich text formatting. In pre-v3 exports, text was a plain string from Y.Text.toJSON().
Numeric Precision
All numeric values are rounded to 3 decimal places in the export to produce cleaner output. For example, a position of [100.123456, 200.789012] becomes [100.123, 200.789].
Complete Example
A minimal whiteboard with a rectangle, text label, sticky note, and freehand path:
{
"contentType": "application/vnd.cloudillo.ideallo+json",
"appVersion": "0.5.0",
"formatVersion": "3.0.0",
"exportedAt": "2026-02-20T10:00:00.000Z",
"data": {
"m": {
"@T": "M",
"initialized": true,
"name": "Project Planning",
"backgroundColor": "#f8f9fa"
},
"o": {
"@T": "M",
"aB3x_Qm7kL9p": {
"@T": "M",
"t": "R",
"xy": [200, 150],
"wh": [300, 200],
"fc": "#4a90d9",
"sc": "#2d5a87",
"cr": 8
},
"Xk2nR8vH_wYq": {
"@T": "M",
"t": "T",
"xy": [250, 180],
"wh": [200, 40],
"sc": "n0"
},
"m4Jf_L1pZq8w": {
"@T": "M",
"t": "S",
"xy": [550, 150],
"wh": [200, 200],
"fc": "#fff3cd"
},
"Hw5_qT2mLkJx": {
"@T": "M",
"t": "F",
"xy": [100, 400],
"wh": [180, 60],
"sw": 3
}
},
"r": [
"@T:A",
"aB3x_Qm7kL9p",
"Xk2nR8vH_wYq",
"m4Jf_L1pZq8w",
"Hw5_qT2mLkJx"
],
"txt": {
"@T": "M",
"Xk2nR8vH_wYq": {
"@T": "T",
"text": "Project Title",
"delta": [{ "insert": "Project Title" }]
},
"m4Jf_L1pZq8w": {
"@T": "T",
"text": "Remember to update the timeline",
"delta": [{ "insert": "Remember to update the timeline" }]
}
},
"geo": { "@T": "M" },
"paths": {
"@T": "M",
"Hw5_qT2mLkJx": "M 0 30 C 20 0 40 60 60 30 C 80 0 100 60 120 30 C 140 0 160 60 180 30"
}
}
}In this example:
- Rectangle (
aB3x_Qm7kL9p): Blue filled rectangle with rounded corners, custom stroke color - Text (
Xk2nR8vH_wYq): Text label positioned inside the rectangle, using default stroke color - Sticky (
m4Jf_L1pZq8w): Yellow sticky note with reminder text - Freehand (
Hw5_qT2mLkJx): Wavy freehand path with custom stroke width, SVG path data stored inpathsmap - The
rarray lists objects from back to front – the rectangle is behind everything, and the freehand path is on top - All
Y.Mapentries carry"@T": "M", the z-order array carries"@T:A", and text content uses"@T": "T"withtextanddeltafields