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:
2.0.0 - Encoding: UTF-8 JSON
Same compact field names
The export format uses the same compact CRDT field names as the live document (t, xy, wh, sc, etc.). No field name translation occurs – the export is a direct serialization of the CRDT state.
Envelope Structure
{
"contentType": "application/vnd.cloudillo.ideallo+json",
"appVersion": "0.5.0",
"formatVersion": "2.0.0",
"exportedAt": "2026-01-15T14:30:00.000Z",
"data": {
"meta": { ... },
"objects": { ... },
"order": [ ... ],
"texts": { ... },
"geometry": { ... },
"paths": { ... }
}
}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 "2.0.0") |
exportedAt |
string |
ISO 8601 timestamp of export |
Data Fields
| Field | Type | Description |
|---|---|---|
meta |
StoredMeta |
Document metadata (name, background color, grid settings) |
objects |
Record<string, StoredObject> |
All objects keyed by ObjectId, using compact field names |
order |
string[] |
Z-order array of ObjectId values (index 0 = backmost) |
texts |
Record<string, string> |
Text content keyed by ObjectId – plain text from Y.Text.toJSON() |
geometry |
Record<string, number[]> |
Polygon vertices keyed by ObjectId – flat [x, y, x, y, ...] arrays |
paths |
Record<string, string> |
SVG path strings keyed by ObjectId |
Text content is plain text in exports
The texts field contains plain text strings from Y.Text.toJSON(), not Quill Delta operations. Rich text formatting (bold, italic, etc.) is not preserved in the export. For full-fidelity backup, use the Yjs binary encoding instead.
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": "2.0.0",
"exportedAt": "2026-02-20T10:00:00.000Z",
"data": {
"meta": {
"initialized": true,
"name": "Project Planning",
"backgroundColor": "#f8f9fa"
},
"order": [
"aB3x_Qm7kL9p",
"Xk2nR8vH_wYq",
"m4Jf_L1pZq8w",
"Hw5_qT2mLkJx"
],
"objects": {
"aB3x_Qm7kL9p": {
"t": "R",
"xy": [200, 150],
"wh": [300, 200],
"fc": "#4a90d9",
"sc": "#2d5a87",
"cr": 8
},
"Xk2nR8vH_wYq": {
"t": "T",
"xy": [250, 180],
"wh": [200, 40],
"sc": "n0"
},
"m4Jf_L1pZq8w": {
"t": "S",
"xy": [550, 150],
"wh": [200, 200],
"fc": "#fff3cd"
},
"Hw5_qT2mLkJx": {
"t": "F",
"xy": [100, 400],
"wh": [180, 60],
"sw": 3
}
},
"texts": {
"Xk2nR8vH_wYq": "Project Title",
"m4Jf_L1pZq8w": "Remember to update the timeline"
},
"geometry": {},
"paths": {
"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
orderarray lists objects from back to front – the rectangle is behind everything, and the freehand path is on top