General Rules
- Line breaks are important.
- Lines are processed in order.
- Tokens must be separated by whitespace, but the quantity of whitespace/indentation isn't important.
- Keywords are case-insensitive (e.g. you can use
softwareSystem
orsoftwaresystem
). - Double quote characters (
"..."
) are optional when a property/expression contains no whitespace. - Opening curly brace symbols (
{
) must be on the same line (i.e. the last token of the statement, not on a line of their own). - Closing curly brace symbols (
}
) must be on a line of their own. - Opening/closing braces are only required when adding child content.
- Use
""
as a placeholder for an earlier optional property that you'd like to skip. - Tags are comma separated (e.g.
Tag 1,Tag 2,Tag 3
) - see Structurizr - Notation for details of how tags and styling works. - The Structurizr CLI will provide some default views and styles when they are not specified in your DSL - see Structurizr CLI - Defaults for details.
In addition, workspaces are subject to the following rules:
- Each view must have a unique "key" (this is autogenerated if not specified).
- Software and people names must be unique.
- Container names must be unique within the context of a software system.
- Component names must be unique within the context of a container.
- Deployment node names must be unique with their parent context.
- Infrastructure node names must be unique with their parent context.
- All relationships from a source element to a destination element must have a unique description.