VSON Markup Reference

VSON is SmartDraw's JSON markup for describing floor plans and diagrams. A VSON document describes the shapes in a drawing and how they connect (or, for floor plans, the walls and what's inside them), and SmartDraw's intelligent formatting engine renders it as a fully editable drawing. No coordinates to compute for diagrams, no manual layout.

This is the complete object and property reference. For guided examples, see the VSON Cookbook.

Document Structure

Every VSON document is a JSON object with the following structure:

{
  "Version": "<String>",
  "Template": "<String>",
  "McpGenerated": "<Boolean>",
  "KeepDocument": "<Boolean>",
  "Shape": "<Shape Object>",
  "Title": "<TitleShape Object>",
  "Returns": "<Array of Return Object>",
  "Colors": "<Array of ColorEntry Object>",
  "Symbols": "<Array of SymbolEntry Object>",
  "DataTable": "<Array of DataTableDefinition Object>"
}
Property Type Description
Version String The version of the VSON document. Use "1.0".
Template String The type of template SmartDraw will load. See the VSTemplates enum.
McpGenerated Boolean Internal use, indicates to SmartDraw the VSON was generated by the MCP server and sets special behaviors for import.
KeepDocument Boolean Internal use, indicates to SmartDraw whether or not to keep the templates existing document on import.
Shape Shape The root shape of the diagram.
Title TitleShape Optional. A title string centered over the diagram, 1/2" above it.
Returns Array of Return Optional. Segmented lines that link any two shapes together.
Colors Array of ColorEntry Optional. Mappings of color aliases to hex codes.
Symbols Array of SymbolEntry Optional. Mappings of symbol GUIDs to aliases.
DataTable Array of DataTableDefinition Optional. Definitions of data tables used in the diagram.

Floor plans use a different document structure. See Floor Plans.

Units and Formats

  • All measurements are in 1/100 inches unless otherwise specified. A 2-inch-wide shape has "MinWidth": 200.
  • Text sizes are in points.
  • Colors are hex RGB values (#FFFFFF or #FFFFFFAA) or aliases from the Colors array.
  • Dates use YYYY-MM-DD format. Times use HH-MM-SS format.
  • Array indices for tables are 1-based (the first row or column is 1).
  • Floor plans use architectural notation strings ("12'", "5' 6\\""), never decimals. See Floor Plans.

Defaults

  • Shape: MinWidth 180, MinHeight 80 (1.8" x 0.8").
  • Text: TextSize 12, TextFont Arial, TextAlignH "center", TextAlignV "middle".
  • Shape IDs: Unique positive integers starting at 1, assigned sequentially.
  • ShapeContainer spacing: 50 (0.5") between shapes and around the container border.
  • Cell shape margin: 20 (0.2").
  • Floor plan wall thickness: "4\\""

BACK TO TOP

Floor Plans

Floor plans use the "Floorplan" template and a different document structure than diagrams. They do not use Shape.ID, Shape.Label, ShapeList, Returns, or Colors. Instead, they describe rooms as outlines (closed polygons of walls), features on walls (doors, windows, gaps), and furniture inside or outside of rooms and the outline.

Floor Plan Document Structure

{
  "Version": "1.0",
  "Template": "Floorplan",
  "FloorplanSettings": {
    "scaletype": "Architectural",
    "thickness": "4\""
  },
  "Symbols": [],
  "Shape": {
    "Hide": true,
    "Outline": []
  }
}
  • Shape.Hide is always true on floor plans.
  • FloorplanSettings.scaleType is "Architectural" for imperial, "Metric" for metric.
  • FloorplanSettings.thickness is the default

Measurements

Floor plans use architectural notation strings when in architectural scale, and decimal or pixels when in metric or pixel scaletype.

Format Example
Feet "12'"
Inches "6\\""
Feet and inches "5' 6\\""
Inches with fractions "2' 7 1/2\\""
Zero "0'"
Negative (alcoves, off-origin outlines) "-4'"

If scaletype is set to architectural then decimal input will be converted before use: 16.9' becomes 16' 11" (fractional foot X 12, rounded).

Outline Object

One outline per room (or per building footprint). The document's shape Shape.Outline array holds all outlines.

{
  "origin": { "x": "8'", "y": "4'" },
  "thickness": "4\"",
  "segments": [],
  "furniture": []
}
Property Description
origin Absolute coordinates of the starting corner, relative to the document's top-left. +x is right, +y is down
thickness Wall thickness for this outline. May differ from the document default. If no thickness is provided, default will be used.
segments The walls, traced sequentially. See below.
furniture Items placed inside the outline. See below.

Segment Object

Each segment runs from the previous segment's endpoint (or the origin, for the first segment) to its own endPoint. Endpoints are relative to the outline origin, not absolute. A segment is defined entirely by its endpoint coordinates — there is no required tracing direction (clockwise and counter-clockwise are equally valid), and diagonal walls (endpoints that change both x and y) are supported.

{
  "endPoint": { "x": "12'", "y": "0'" },
  "features": [
    { "start": "4'", "length": "4'", "GUID": "532349ab-8678-4a49-b6b4-ea613e895678" }
  ]
}

Closure is optional. An outline whose last endpoint returns to {"x": "0'", "y": "0'"} in local coordinates forms a closed room. Outlines may also remain open: a one or two-segment run is a half-wall or a wall stub, and an open multi-segment run is a partition. When generating a room, close the outline (at least 3 segments, ending at the local origin, with ∑+x = ∑-x and ∑+y = ∑-y; when representing partial walls, leave it open.

Negative endpoint coordinates are valid and expected when the outline's origin sits on a corner other than the top-left.

Feature Object

Doors, windows, and gaps placed along a wall segment.

{
  "start": "2' 7 1/2\"",
  "length": "4' 6\"",
  "GUID": "532349ab-8678-4a49-b6b4-ea613e895678",
  "name": "Window"
}
Property Required Description
start Yes Distance along the wall from this segment's start.
length Yes Extent of the feature.
GUID If name is not provided The GUID of the SmartDraw symbol to use. Any symbol GUID is valid (copy one via right-click → "Copy Symbol ID" in the SmartDraw editor); common floor-plan GUIDs are tabled below.
name If GUID is not provided A symbol reference resolved through the document's top-level Symbols array. Valid only when a Name → ID mapping for it exists.

Every feature must resolve one of two ways: an inline GUID, or a name that is mapped in the Symbols array. If both are provided, the GUID wins. Never provide "GUID":null or "GUID":"".

Constraint: start + length must not exceed the segment length.

Furniture Object

Furniture defined with an outline. Items are usually placed inside the outline, but placement outside it is valid too — useful for exterior features like patio plants or outdoor lighting.

{
  "position": { "x": "8' 6\"", "y": "4' 10\"" },
  "dimensions": { "width": "4'", "height": "5' 6\"" },
  "rotation": 0,
  "GUID": "c3861822-49a3-442a-8be4-e614a61046d2",
  "name": "Bed"
}
Property Required Description
position Yes Position of the item's top-left corner (prior to rotation), relative to the parent outline's origin: x is the distance from the origin's x-coordinate to the item's left edge, y from the origin's y-coordinate to its top edge.
dimensions Yes Width and height in the document's units.
rotation No Degrees, applied after position and dimension, rotating the item in place around its center. Any number, including negative
GUID If name is not provided The GUID of the SmartDraw symbol to use. Any symbol GUID is valid; common ones are tabled below.
name If GUID is not provided A symbol reference resolved through the document's Symbols array. Valid only when a Name → ID mapping for it exists there.

Resolution works exactly as for features: inline GUID, or name mapped in Symbols; GUID wins when both are present.

Standard GUID Symbols

The top-level Symbols array is a mapping between names and symbol GUIDs, declared as { "Name":..., "ID":<GUID> }. Its purpose is to avoid repeating GUIDs throughout the document: once a mapping is declared, features and furniture may reference the symbol by name alone. Inline GUID references are always valid, with or without a corresponding Symbols entry. Every Symbols entry must carry a valid ID — an entry without a GUID maps nothing.

Common floor plan symbol GUIDs (any of SmartDraw's symbols may be used; copy other GUIDs from the editor via right-click → "Copy Symbol ID"):

Name GUID Typical Use
Window 532349ab-8678-4a49-b6b4-ea613e895678 Exterior walls
Door a653e73a-ba92-43a1-9030-21b86b23b888 Standard door
LeftDoor 6aeb77b4-7305-4e0c-a0a2-0272db0b5c35 Left-hinge doors
DoubleDoor 4101d749-3693-4d3d-9154-40fca6265cd4 Wide entrances
PocketDoor cd66bc9c-1add-4fe5-af08-709fd90b2e0e Space-saving doors
SlidingGlassDoor 5d9541bf-6790-46cc-8f8a-b913f7c40a09 Patios, exteriors
GardenWindow f305437c-cbe9-4a37-8d9a-87a32adb4ca4 Garden-facing walls
BayWindow 4bfbcb42-6f00-425b-8796-9ec71b434406 Protruding windows
Gap 6f8f8fce-dc39-40ec-8b44-3bc91897ca2b Open passages
Chair 67fd6e22-6e73-485f-8bbb-ad25b07a863f Seating
OvenRange f158b211-ccfc-4311-8246-b966c370eb21 Kitchens
Bed c3861822-49a3-442a-8be4-e614a61046d2 Bedrooms
CeilingFan 34181f31-a1a4-4133-8ba2-7f53075a50b1 Large rooms

Shared Walls

When two rooms share a wall, the matching segments of the two outlines must coincide exactly in document coordinates: same length, same orientation. SmartDraw renders the shared segment as one wall when the coordinates match. Plan each room's absolute position first, then set its origin, so adjacent rooms line up along the common wall.

Floor Plan Validation Checklist

Format requirements (violations make a document invalid):

  • JSON parses without errors.
  • Template is "Floorplan" and FloorplanSettings has scaletype and thickness.
  • Every feature and furniture item resolves to a symbol: an inline GUID, or a name mapped in the Symbols array. No "GUID": null or "GUID": "".
  • Every Symbols entry has a valid ID.
  • start + length ≤ segment length for every feature.
  • All measurements use the units set by scaletype.

Recommended for generated room plans (ok to break these rules, but usually causes a defect in a generated floor plan):

  • Room outlines close: final endpoint , , , at least 3 segments. (Open outlines are legal — they are half-walls or partitions, not rooms.)
  • Features on each segment listed in ascending start order.
  • Furniture intended for a room stays inside that room's walls. (Furniture outside outlines is legal for exterior items.)
  • Shared walls coincide exactly between adjacent outlines — never two parallel walls a few inches apart.
  • At least one exterior door exists.

Complete Floor Plan Example

{
  "Version": "1.0",
  "Template": "Floorplan",
  "FloorplanSettings": {
    "scaletype": "Architectural",
    "thickness": "4\""
  },
  "Symbols": [
    { "Name": "Window", "ID": "532349ab-8678-4a49-b6b4-ea613e895678" },
    { "Name": "Door",   "ID": "a653e73a-ba92-43a1-9030-21b86b23b888" },
    { "Name": "Bed",    "ID": "c3861822-49a3-442a-8be4-e614a61046d2" }
  ],
  "Shape": {
    "Hide": true,
    "Outline": [{
      "origin": { "x": "8'", "y": "4'" },
      "thickness": "4\"",
      "segments": [
        {
          "endPoint": { "x": "12'", "y": "0'" },
          "features": [
            { "start": "4'", "length": "4'", "GUID": "532349ab-8678-4a49-b6b4-ea613e895678" }
          ]
        },
        { "endPoint": { "x": "12'", "y": "14'" } },
        {
          "endPoint": { "x": "0'", "y": "14'" },
          "features": [
            { "start": "4' 6\"", "length": "3'", "GUID": "a653e73a-ba92-43a1-9030-21b86b23b888" }
          ]
        },
        { "endPoint": { "x": "0'", "y": "0'" } }
      ],
      "furniture": [
        {
          "position": { "x": "2' 9\"", "y": "2' 6\"" },
          "dimensions": { "width": "6' 6\"", "height": "7'" },
          "rotation": 0,
          "GUID": "c3861822-49a3-442a-8be4-e614a61046d2"
        }
      ]
    }]
  }
}

A 12' x 14' bedroom with a window on the top wall, a door on the bottom wall, and a king bed against the back wall. Note the bed's position is in absolute document coordinates (outline origin 8' plus a 2' 9" room-relative offset).

SmartDraw Floor Plan Notation, the field-friendly text format for capturing measurements, converts directly to this structure. See the SmartDraw Floor Plan Notation Reference.

BACK TO TOP

Shape Object

The building block of every diagram. A shape carries a label, formatting, the connectors that attach its children, and optional features like tables, images, timelines, and shape data.

{
  "ID": "<Number>",
  "Label": "<String>",
  "ShapeType": "<String>",
  "TextBold": "<Boolean>",
  "TextItalic": "<Boolean>",
  "TextUnderline": "<Boolean>",
  "TextSize": "<Number>",
  "TextFont": "<String>",
  "TextMargin": "<Number>",
  "TextColor": "<String>",
  "FillColor": "<String>",
  "TextAlignH": "<String>",
  "TextAlignV": "<String>",
  "TextGrow": "<String>",
  "MinWidth": "<Number>",
  "MinHeight": "<Number>",
  "LineThick": "<Number>",
  "LineColor": "<String>",
  "LineLabel": "<String>",
  "LinePattern": "<String>",
  "Hide": "<Boolean>",
  "Truncate": "<Number>",
  "ShapeConnectorType": "<String>",
  "Note": "<String>",
  "NoteIcon": "<String>",
  "ShapeList": "<Array of ShapeConnector Objects>",
  "Hyperlink": "<Hyperlink Object>",
  "TextHyperlink": "<Hyperlink Object>",
  "Table": "<Table Object>",
  "Image": "<Image Object>",
  "ShapeContainer": "<ShapeContainer Object>",
  "Data": "<DataTableShapeEntry Object>",
  "Timeline": "<Timeline Object>",
  "Gantt": "<Gantt Object>",
  "Gauge": "<Gauge Object>",
  "ExpandedView": "<Document Object>"
}
Property Type Description
ID Number Unique identifier, greater than zero. Numeric, never repeated. required for Return references.
Label String The text label inside the shape. Use \\n for line breaks.
ShapeType String The outline of the shape, from the ShapeTypes enum or a Symbols alias. Defaults to a rectangle.
TextBold / TextItalic / TextUnderline Boolean Text styling. Omit to use the document default.
TextSize Number Point size of text in a shape.
TextFont String Font name. Falls back to the document default.
TextMargin Number Space between text and shape edge, in 1/100".
TextColor String Label color. Hex RGB or color alias.
FillColor String Fill color. Hex RGB or color alias.
TextAlignH String Horizontal alignment: "left", "center", "right".
TextAlignV String Vertical alignment: "top", "middle", "bottom".
TextGrow String How the shape grows with text. See TextGrow.
MinWidth / MinHeight Number Initial dimensions in 1/100".
LineThick Number Border thickness in 1/100".
LineColor String Border color.
LineLabel String Text on the connector line segment arriving at this shape.
LinePattern String Border pattern: "Solid", "Dotted", "Dashed".
Hide Boolean Hides the shape after layout. Used for invisible containers.
Truncate Number Character limit for the label. -1 disables truncation.
ShapeConnectorType String Default connector type for this shape's children. See ShapeConnectorTypes.
Note String A note attached to the shape, shown as a tooltip.
NoteIcon String Icon used for the note.
ShapeList Array of ShapeConnector The connectors that attach child shapes to this shape. See below.
Hyperlink Hyperlink Places a hyperlink icon in the shape.
TextHyperlink Hyperlink Makes the text label a clickable hyperlink.
Table Table Divides the shape into rows and columns.
Image Image Displays an image inside the shape.
ShapeContainer ShapeContainer Nests child shapes visually inside this shape (no connecting lines).
Data DataTableShapeEntry Attaches a data table row to the shape.
Timeline Timeline Renders a timeline inside the shape.
Gantt Gantt Renders a Gantt chart inside the shape.
Gauge Gauge Renders a gauge inside the shape.
ExpandedView Document A new document whose image will be shown as a tooltip on this shape.

A shape may contain at most one of Table, Timeline, Gantt, or Gauge.

ShapeConnector Object

Defines an automatic connector with child shapes. Each entry in a shape's ShapeList array is a shape connector. A connector can attach one or more child shapes to a parent; a parent can have multiple entries in its ShapeList (typically one per direction), and each connector's Shapes array can contain many shapes that all flow in that direction.

{
  "Collapse": "<Boolean>",
  "Direction": "<String>",
  "FillColor": "<String>",
  "LineThick": "<Number>",
  "LineColor": "<String>",
  "LinePattern": "<String>",
  "Arrangement": "<String>",
  "Shapes": "<Array of Shape Object>",
  "ShapeConnectorType": "<String>",
  "StartArrow": "<Number>",
  "EndArrow": "<Number>",
  "TextBold": "<Boolean>",
  "TextItalic": "<Boolean>",
  "TextUnderline": "<Boolean>",
  "TextSize": "<Number>",
  "TextFont": "<String>",
  "LineLabel": "<String>",
  "DefaultShape": "<Shape Object>"
}
Property Type Description
Collapse Boolean If true, the branch starts collapsed. Trees only.
Direction String Direction children appear relative to the parent. See Directions. Default "Right" for flowcharts, "Bottom" for org charts.
FillColor String Background color for text labels on the connector.
LineThick / LineColor / LinePattern Line styling. Inherited by child connectors.
Arrangement String Layout of the child shapes for org charts. See ShapeConnectorArrangement.
Shapes Array of Shape The child shapes attached to this connector, in order.
ShapeConnectorType String The connector behavior. See .
StartArrow / EndArrow Number Arrowhead styles. See Arrowheads. Numeric, never quoted.
TextBold / TextItalic / TextUnderline / TextSize / TextFont Text styling for labels on the connector lines.
LineLabel String Label for the branch line, used on multi-branch connectors (for example, labeling each branch of a decision).
DefaultShape Shape Default properties applied to every child shape in this connector.

Connector Behavior by Diagram Type

  • Flowcharts. Any shape can have multiple ShapeList entries in any direction. Two or more entries in the same direction render as a split path. All shapes flowing in the same direction belong in a single connector's Shapes array.
  • Org charts. Each shape may have one ShapeList entry. The direction of the root shape's connector sets the direction of the whole tree (default "Bottom"); direction on non-root shapes is ignored.
  • Mind maps. The root shape may have two ShapeList entries, one "Left" and one "Right".
  • Trees, hierarchies, decision trees. One ShapeList entry per shape. Multiple entries on a tree shape are consolidated into one.

BACK TO TOP

ShapeContainer Object

Places child shapes inside a parent shape with no connecting lines. Containers are recursive: shapes in a container can themselves contain containers, connectors, or tables.

{
  "Shapes": "<Array of Shape Object>",
  "Arrangement": "<String>",
  "Wrap": "<Number>",
  "VerticalSpacing": "<Number>",
  "HorizontalSpacing": "<Number>",
  "ShapesAlignH": "<String>",
  "ShapesAlignV": "<String>",
  "Hide": "<Boolean>",
  "DefaultShape": "<Shape Object>"
  
}
Property Type Description
Arrangement String "Row", "Column", or "Square" (a balanced grid). See ShapeContainerArrangement.
Wrap Number For Row, the maximum shapes per row before wrapping; for Column, the maximum per column.
VerticalSpacing / HorizontalSpacing Number Gap between shapes, in 1/100". Default is 50 (0.5"). Inherited by child containers.
ShapesAlignH String "left", "center", "right". Default "center".
ShapesAlignV String "top", "middle", "bottom". Default "top".
Hide Boolean If true, the parent frame is removed after layout.
DefaultShape Shape Default properties for every child.
Shapes Array of Shape The contained shapes.

The parent shape sizes itself to fit its children. Parents of a ShapeContainer are transparent by default unless FillColor is set.

BACK TO TOP

Return Object

A segmented line connecting any two shapes by ID: cross-links, back-edges, loop-backs, dotted-line relationships. Returns live in the document root's Returns array.

{
  "StartID": "<Number>",
  "EndID": "<Number>",
  "StartDirection": "<String>",
  "EndDirection": "<String>",
  "LinePattern": "<String>",
  "Label": "<String>",
  "StartArrow": "<Number>",
  "EndArrow": "<Number>",
  "LineThick": "<Number>",
  "LineColor": "<String>",
  "Curved": "<Boolean>",
  "LineType": "<String>",
  "BehindID": "<Number>"
}
Property Type Description
StartID Number Required. ID of the starting shape.
EndID Number Required. ID of the ending shape. The arrowhead lands here.
StartDirection / EndDirection String Which face of each shape the line attaches to: "Top", "Bottom", "Left", "Right". Default "Bottom".
LinePattern String "Solid", "Dotted", "Dashed".
Label String Text rendered along the line.
StartArrow / EndArrow Number Arrowhead styles. See Arrowheads.
LineThick / LineColor Line styling. The thickness of the line in 1/100". Otherwise the thickness is the default for the document.
Curved Boolean true renders a curved line.
LineType String "Straight" draws a direct line between the shapes.
BehindID Number Renders the return behind the shape with this ID in z-order.

BACK TO TOP

Table Object

Inserts a table object into a shape. Cells behave like shapes: they can hold labels, colors, images, hyperlinks, and even complete nested shapes.

{
  "Rows": "<Number>",
  "Columns": "<Number>",
  "ColumnWidth": "<Number>",
  "RowHeight": "<Number>",
  "Cell": "<Array of Cell Object>",
  "AlternateRows": "<TableAlternateRowsColors Object>",
  "Join": "<Array of Join Object>",
  "ColumnProperties": "<Array of ColumnProperties Object>",
  "RowProperties": "<Array of RowProperties Object>",
  "ShapeMarginH": "<Number>",
  "ShapeMarginV": "<Number>"
}
Property Type Description
Rows / Columns Number At least one is required; the other defaults to 1.
ColumnWidth / RowHeight Number Minimum size for all columns or rows, in 1/100".
Cell Array of Cell Cells with specific content and formatting.
AlternateRows TableAlternateRowsColors Two-color row striping.
Join Array of Join Merges adjacent cells.
ColumnProperties / RowProperties Array Per-column and per-row styling and dimensions.
ShapeMarginH / ShapeMarginV Number Padding between a shape inside a cell and the cell edges. Default 20 (0.2").

Cell Object

{
  "Column": "<Number>",
  "Row": "<Number>",
  "Label": "<String>",
  "TextSize": "<Number>",
  "TextBold": "<Boolean>",
  "TextItalic": "<Boolean>",
  "TextUnderline": "<Boolean>",
  "TextFont": "<String>",
  "TextColor": "<String>",
  "FillColor": "<String>",
  "TextAlignH": "<String>",
  "TextAlignV": "<String>",
  "Truncate": "<Number>",
  "Note": "<String>",
  "NoteIcon": "<String>",
  "Hyperlink": "<Hyperlink Object>",
  "TextHyperlink": "<Hyperlink Object>",
  "Image": "<Image Object>",
  "Shape": "<Shape Object>",
  "ExpandedView": "<Document>",
  "UseTextRectAsFrame": "<Boolean>"
}

Row and Column are required and 1-indexed. A cell can hold one Shape, which may itself be the root of an entire nested structure (container, connector tree, or another table); the cell grows to fit. UseTextRectAsFrame: true constrains an image to the cell's inset text rectangle.

Join Object

{ "Row": 1, "Column": 1, "N": 3, "Down": false }

Merges N cells starting at the 1-indexed anchor cell. Down: true joins downward; the default joins rightward.

ColumnProperties and RowProperties

{ "Index": 1, "LineThick": "<Number>", "LineColor": "<String>", "LinePattern": "<String>", "Width": "<Number>", "FixedWidth": false }
{ "Index": 1, "LineThick": "<Number>", "LineColor": "<String>", "LinePattern": "<String>", "Height": "<Number>", "FixedHeight": false }

Index is 1-based. Line settings style the grid lines of that column or row; Width and Height set minimum dimensions in 1/100". Cell-level properties may also be applied to a whole row or column. RowProperties are applied before ColumnProperties; individual Cell settings override both.

TableAlternateRowsColors

{ "Color1": "<String>", "Color2": "<String>" }

BACK TO TOP

TitleShape Object

A title centered 1/2" above the diagram.

{
  "Label": "<String>",
  "TextBold": false,
  "TextItalic": false,
  "TextUnderline": false,
  "TextSize": 16,
  "TextFont": "<String>",
  "TextColor": "<String>"
}

BACK TO TOP

Timeline Object

Renders a timeline inside a shape. A shape with a Timeline cannot also contain a Table.

{
  "Arrangement": "<String>",
  "Auto": "<Boolean>",
  "HideGridLabelColumn": "<Boolean>",
  "Start": "<String>",
  "Starttime": "<String>",
  "Length": "<Number>",
  "EventType": "<String>",
  "Position": "<String>",
  "LineLength": "<Number>",
  "DefaultShape": "<Shape Object>",
  "Rows": "<Array of Row objects>",
  "Events": "<Array of Event objects>"
}
Property Type Description
Arrangement String Timeline layout: row (bubble) timelines, grid timelines, and grid variants (block, swimlane).
Auto Boolean If true, the date range is derived from the events.
HideGridLabelColumn Boolean Hides the row label column on grid timelines.
Start String Starting date, "YYYY-MM-DD".
Starttime String Starting time, "HH-MM-SS".
Length Number Length in days. Decimals allowed.
EventType String Default event style (bubble variants, bars, bullets, blocks).
Position String Default event position for bubble timelines, or a row number for grid timelines.
LineLength Number Default bubble line length, in 1/100".
DefaultShape Shape Default formatting for events.
Rows Array of Row Rows for grid timelines.
Events Array of Event The events on the timeline.

Timeline Row

{ "Label": "<String>", "RowType": "<String>" }

A RowType of label-row spans the full timeline as a section title; normal rows carry events.

Event Object

An event object inherits all Shape properties (label, colors, fonts, tables) plus:

Property Type Description
Start String Event date, "YYYY-MM-DD". Defaults to today.
Starttime String Event time, "HH-MM-SS".
Duration Number Length in days. Decimals allowed. Shown by bar length on grid timelines.
EventType String Style override for this event.
Position String Bubble position override, or the 1-indexed row number on a grid timeline.
LineLength Number Bubble line length override.

BACK TO TOP

Gantt Object

Renders a Gantt chart inside a shape. A shape with a Gantt cannot also contain a Table, Gauge, or Timeline.

{
  "Projectname": "<String>",
  "UseDataTable": "<DataTable Object>",
  "GanttColumns": "<Array of GanttColumn objects>",
  "GanttOptions": "<GanttOptions object>"
}

Gantt Tasks

Each row of UseDataTable.Rows is one task, expressed as a Fields array of {Name, Value} pairs. Valid field names (from GanttChartColumnNames):

Field Description
Row 1-indexed position of the task in the chart.
Task Task title.
Start Start date, "YYYY-MM-DD". Defaults to the previous task's start.
Starttime Optional start time, "HH-MM-SS".
Length Duration in working days. Decimals allowed.
End Computed end date.
Parent Row of a parent task, for grouped subtasks.
Master Row of a dependency. The task begins when its master ends.
Person Assigned person. Adds the "Assigned To" column.
PercentComplete 0 to 100. Adds the completion column.
Department Department name.
Cost Task cost.
Custom Free-form custom fields.

GanttColumn

{ "Name": "<String>", "Settings": { "Title": "<String>", "Width": "<Number>" } }

Controls which columns appear, their titles, and widths. Renameable columns: Task, Person, Department, Cost, Custom.

GanttOptions

{ "AllWorkingDays": false, "Holidays": "<String>" }

AllWorkingDays: true counts every day; otherwise weekends are skipped. Holidays is one of the following: "None", "USA", "UK", "Australia", "Canada".

The Gantt chart inherits the fill color, line properties, and text properties of its containing shape.

BACK TO TOP

Gauge Object

Renders a gauge inside a shape. Gauges show a value between a minimum and maximum. A shape with a Gauge cannot also contain a Table, Timeline, or Gantt. The minimum gauge size is 2x2 inches.

{
  "GaugeType": "<String>",
  "Settings": "<Array of value objects>",
  "ShowDataTable": "<Boolean>"
}

Settings is an array of {"Name": "<String>", "Value": "<String>"} pairs whose valid names depend on the GaugeType. For the fully documented RadialDetail:

Name Description
min Minimum value. Default 0.
max Maximum value. Default 100.
val The value to display. Default 50.
minAngle / maxAngle Angles (degrees) of the minimum and maximum ticks.
minTickMax Minor ticks between major ticks.
majTickMax Number of major ticks.
unitLabel Unit label rendered on the gauge (for example "%").

The gauge will inherit the fill color, line properties, and text color of its containing shape. ShowDataTable: true renders an accompanying shape data table in the SmartDraw editor.

BACK TO TOP

Shape Data Objects

Shape data attaches structured records to shapes, displayed as a tooltip on an "i" icon.

DataTableDefinition

Declared in the document root's DataTable array.

{
  "ID": "<String>",
  "TableName": "<String>",
  "Columns": "<Array of DataTableColumn Object>",
  "Rows": "<Array of DataTableRow Object>"
}

DataTableColumn

{ "Name": "<String>", "Type": "<String>" }

Type is one of the following: "String", "Int", "Float", "Bool", "Date".

DataTableRow and DataTableField

{ "RowID": 1, "Fields": [ { "Name": "<String>", "Value": "<String>" } ] }

DataTableShapeEntry

Attached to a shape via Shape.Data. References a table by TableID and a row by RowID; if TableID is omitted, the document's first table is used. Values may also be supplied inline via Fields.

{
  "RowID": 1,
  "TableID": "<String>",
  "Fields": "<Array of DataTableField Object>"
}

BACK TO TOP

Supporting Objects

{ "url": "<String>" }

On Shape.Hyperlink or Cell.Hyperlink, places a hyperlink icon in the bottom right. On TextHyperlink, makes the label itself a clickable link with blue underline styling.

Image

{ "url": "<String>" }

Displays the image inside the shape or cell, scaled to preserve aspect ratio.

ColorEntry

{ "Name": "<String>", "Value": "<String>" }

Value is #RRGGBB or #RRGGBBAA. The Name can then be used anywhere a color string is accepted.

SymbolEntry

{ "Name": "<String>", "ID": "<String>" }

Assigns an alias to a SmartDraw symbol GUID. The alias can then be used as a ShapeType value. Any of the 34,000+ SmartDraw symbols can be used; the symbol's GUID is available from the right-click menu in the SmartDraw interface. For floor plans, Symbols entries must always carry a valid GUID (See Floor Plans).

ExpandedView

A complete VSON Document object attached to a Shape, Cell, task, or event. Rendered as a drill-down tooltip on the parent. Expanded views nest recursively.

BACK TO TOP

Enumerations

VSTemplates

Value Loads
"Flowchart" Flowchart template.
"Mindmap" Mind map template.
"Orgchart" Org chart template.
"Decisiontree" Decision tree template.
"Hierarchy" Hierarchy template.
"Floorplan" Floor plan template. Uses the floor plan document structure.

ShapeTypes

Value Shape
"RRect" Rounded rectangle.
"Rect" Rectangle (the default).
"Oval" Oval.
"Circle" Circle.
"Square" Square.
"Diamond" Diamond.

Symbol aliases defined in the Symbols array are also valid ShapeType values.

ShapeConnectorTypes

Value Behavior
"Flowchart" Evenly-spaced horizontal or vertical connector. Multiple connectors per shape allowed.
"Orgchart" Horizontal or vertical tree from a parent. One connector per shape.
"Hierarchy" Horizontal tree from a parent.
"Decisiontree" Peers in a horizontal or vertical arrangement.
"Mindmap" Peers left and right of a central root.

ShapeConnectorArrangement

Value Layout
"Row" Children in a horizontal row.
"Column" Children in a vertical column to the right.
"LeftColumn" Children in a vertical column to the left.
"TwoColumn" Children split on both sides of the parent.
"Stagger" Children at staggered distances from the parent.

ShapeContainerArrangement

Value Layout
"Square" Balanced grid.
"Row" Horizontal row, wrapping per Wrap.
"Column" Vertical column, wrapping per Wrap.

Directions

"Left", "Right", "Top", "Bottom".

LinePatterns

"Solid", "Dotted", "Dashed".

HorizontalAlignments

"left", "center", "right".

VerticalAlignments

"top", "middle", "bottom".

TextGrow

Value Behavior
"Proportional" Width and height grow together.
"Vertical" Width fixed, height grows. The default.
"Horizontal" Height fixed, width grows.

Arrowheads

Value Style Value Style
0 None 20 Double
1 Filled triangle 21 Dimension filled
2 Line arrow (unfilled) 22 Dimension plain
3 Fancy 23 Dimension line
4 Filled circle 24 Arc down
5 Empty circle 25 Arc up
6 Filled square 26 Half up
7 Empty square 27 Half down
8 Crow's foot 28 Center cross
9 Backslash 29 Half line up
10 Filled crow's foot 30 Half line down
11 Diamond 31 Forward slash
12 Zero to many 32 Open filled
13 One to many 33 Open crow's foot
14 Zero to one 34 Zero to one
15 One to one 35 Cross
16 One to zero 36 Indicator down
17 Center filled 37 Indicator up
18 Center line arrow 38 Round end

TimelineArrangements

Value Layout
"Row-1" Row (bubble) timeline. A date band with bubble events attached above and below.
"Grid-1" Grid timeline. A date band with rows below it; events lie on the rows as bars or bullets.
"Grid-Block1" Block timeline. A grid variant using block events with a table format by default.
"Grid-Swimlane1" Swimlane timeline. A grid variant using swimlane events as backdrops for other events.

TimelineEventTypes

Value Style
"Bubble" A shape connected to the timeline by a line. The default for row timelines.
"Bubble-Vertical" A bubble with vertical text orientation.
"TextOnly" A text-only bubble with no shape.
"Grid-Bullet" A bullet marker on a grid row.
"Grid-Bar" A bar on a grid row whose length shows the event's duration. The default for grid timelines.
"Grid-Block" A block event. The default for block timelines.
"Grid-Swimlane" A swimlane backdrop event. The default for swimlane timelines.

Value Placement
"above" Above the timeline, connecting at its top edge.
"above-center" Above the timeline, connecting at its center line.
"below" Below the timeline, connecting at its bottom edge.
"below-center" Below the timeline, connecting at its center line.
"alternate" Alternating above and below, connecting at the edges.
"alternate-center" Alternating above and below, connecting at the center line. The default.

GanttChartColumnNames

"Row", "Task", "Start", "Length", "End", "Parent", "Master", "Person", "PercentComplete", "Department", "Cost", "Custom".

GanttChartHolidays

"None", "USA", "UK", "Australia", "Canada".

DataTableDataTypes

"String", "Int", "Float", "Bool", "Date".

BACK TO TOP