PageSourceSearch

https://docs.structurizr.com/dsl

html structurizr.com collected 2026-10-01 10:14:02 UTC 44,832 bytes, 1 lines download raw bytes

1<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> <link rel="stylesheet" href="/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet"> <style id="jtd-nav-activation"> .site-nav > ul.nav-list:first-child > li:not(:nth-child(11)) > a, .site-nav > ul.nav-list:first-child > li > ul > li a { background-image: none; } .site-nav > ul.nav-list:not(:first-child) a, .site-nav li.external a { background-image: none; } .site-nav > ul.nav-list:first-child > li:nth-child(11) > a { font-weight: 600; text-decoration: none; }.site-nav > ul.nav-list:first-child > li:nth-child(11) > button svg { transform: rotate(-90deg); }.site-nav > ul.nav-list:first-child > li.nav-list-item:nth-child(11) > ul.nav-list { display: block; } </style> 
1<script src="/assets/js/vendor/lunr.min.js"></script>
1 
1<script src="/assets/js/just-the-docs.js"></script>
1 <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" href="/images/favicon.png" type="image/x-icon"> <!-- Begin Jekyll SEO tag v2.9.0 --> <title>DSL | Structurizr</title> <meta name="generator" content="Jekyll v4.3.4" /> <meta property="og:title" content="DSL" /> <meta property="og:locale" content="en_US" /> <meta name="description" content="Documentation for the Structurizr tooling." /> <meta name="twitter:description" property="og:description" content="Documentation for the Structurizr tooling." /> <link rel="canonical" href="https://docs.structurizr.com/dsl" /> <meta property="og:url" content="https://docs.structurizr.com/dsl" /> <meta property="og:site_name" content="Structurizr" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="DSL" /> 
1<script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"Documentation for the Structurizr tooling.","headline":"DSL","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://docs.structurizr.com/images/structurizr-banner-light.png"}},"url":"https://docs.structurizr.com/dsl"}</script>
1 <!-- End Jekyll SEO tag --> </head> <body> <a class="skip-to-main" href="#main-content">Skip to main content</a> <svg xmlns="http://www.w3.org/2000/svg" class="d-none"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE --> <symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"> <title id="svg-external-link-title">(external link)</title> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md --> <symbol id="svg-copy" viewBox="0 0 16 16"> <title>Copy</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/> <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/> </svg> </symbol> <symbol id="svg-copied" viewBox="0 0 16 16"> <title>Copied</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16"> <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/> </svg> </symbol> </svg> <header class="side-bar"> <div class="site-header"> <a href="/" class="site-title lh-tight"> <div class="site-logo" role="img" aria-label="Structurizr"></div> </a> <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false"> <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg> </button> </div> <nav aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/quickstart" class="nav-list-link">Quickstart</a></li><li class="nav-list-item"><a href="/features" class="nav-list-link">Features</a></li><li class="nav-list-item"><a href="/as-code" class="nav-list-link">Why "as code"?</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Example submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/example" class="nav-list-link">Example</a><ul class="nav-list"><li class="nav-list-item"><a href="/example/system-context-diagram" class="nav-list-link">System context diagram</a></li><li class="nav-list-item"><a href="/example/container-diagram" class="nav-list-link">Container diagram</a></li><li class="nav-list-item"><a href="/example/component-diagram" class="nav-list-link">Component diagram</a></li><li class="nav-list-item"><a href="/example/code-diagram" class="nav-list-link">Code diagram</a></li><li class="nav-list-item"><a href="/example/system-landscape-diagram" class="nav-list-link">System landscape diagram</a></li><li class="nav-list-item"><a href="/example/dynamic-diagram" class="nav-list-link">Dynamic diagram</a></li><li class="nav-list-item"><a href="/example/deployment-diagram" class="nav-list-link">Deployment diagram</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="AI + MCP submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/ai" class="nav-list-link">AI + MCP</a><ul class="nav-list"><li class="nav-list-item"><a href="/ai/dsl-generation" class="nav-list-link">DSL generation</a></li><li class="nav-list-item"><a href="/ai/landscape-generation" class="nav-list-link">System landscape generation</a></li><li class="nav-list-item"><a href="/ai/mcp" class="nav-list-link">MCP server</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Getting started submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/getting-started" class="nav-list-link">Getting started</a><ul class="nav-list"><li class="nav-list-item"><a href="/getting-started/local-server" class="nav-list-link">1. Create with local, publish to server</a></li><li class="nav-list-item"><a href="/getting-started/local" class="nav-list-link">2. Create with local, view with local</a></li><li class="nav-list-item"><a href="/getting-started/local-export-static-site" class="nav-list-link">3. Create with local, export to static site</a></li><li class="nav-list-item"><a href="/getting-started/export-diagrams-as-code" class="nav-list-link">4. Create with DSL, export to PlantUML/Mermaid</a></li><li class="nav-list-item"><a href="/getting-started/server" class="nav-list-link">5. Create with server, view with server</a></li><li class="nav-list-item"><a href="/getting-started/other" class="nav-list-link">6. Other</a></li></ul></li><li class="nav-list-item"><a href="/building" class="nav-list-link">Building from source</a></li><li class="nav-list-item"><a href="/binaries" class="nav-list-link">
1Binaries - v2026.09.19</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Workspaces submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/workspaces" class="nav-list-link">Workspaces</a><ul class="nav-list"><li class="nav-list-item"><a href="/workspaces/recommendations" class="nav-list-link">Recommendations</a></li><li class="nav-list-item"><a href="/workspaces/file-types" class="nav-list-link">DSL vs JSON</a></li><li class="nav-list-item"><a href="/workspaces/scope" class="nav-list-link">Scope</a></li><li class="nav-list-item"><a href="/workspaces/enterprise" class="nav-list-link">Enterprise usage</a></li><li class="nav-list-item"><a href="/workspaces/inspections" class="nav-list-link">Inspections</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="DSL submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/dsl" class="nav-list-link">DSL</a><ul class="nav-list"><li class="nav-list-item"><a href="/dsl/example" class="nav-list-link">Example</a></li><li class="nav-list-item"><a href="/dsl/tutorial" class="nav-list-link">Tutorial</a></li><li class="nav-list-item"><a href="/dsl/basics" class="nav-list-link">Basics</a></li><li class="nav-list-item"><a href="/dsl/defaults" class="nav-list-link">Defaults</a></li><li class="nav-list-item"><a href="/dsl/identifiers" class="nav-list-link">Identifiers</a></li><li class="nav-list-item"><a href="/dsl/archetypes" class="nav-list-link">Archetypes</a></li><li class="nav-list-item"><a href="/dsl/implied-relationships" class="nav-list-link">Implied relationships</a></li><li class="nav-list-item"><a href="/dsl/expressions" class="nav-list-link">Expressions</a></li><li class="nav-list-item"><a href="/dsl/includes" class="nav-list-link">Includes</a></li><li class="nav-list-item"><a href="/dsl/workspace-extension" class="nav-list-link">Workspace extension</a></li><li class="nav-list-item"><a href="/dsl/docs" class="nav-list-link">Markdown/Asciidoc documentation</a></li><li class="nav-list-item"><a href="/dsl/adrs" class="nav-list-link">Architecture Decision Records (ADRs)</a></li><li class="nav-list-item"><a href="/dsl/scripts" class="nav-list-link">Scripts</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Plugins submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/dsl/plugins" class="nav-list-link">Plugins</a><ul class="nav-list"><li class="nav-list-item"><a href="/dsl/plugins/plantuml" class="nav-list-link">PlantUML</a></li><li class="nav-list-item"><a href="/dsl/plugins/mermaid" class="nav-list-link">Mermaid</a></li></ul></li><li class="nav-list-item"><a href="/dsl/language" class="nav-list-link">Language reference</a></li><li class="nav-list-item"><a href="/dsl/parser" class="nav-list-link">DSL Parser</a></li><li class="nav-list-item"><a href="/dsl/faq" class="nav-list-link">FAQ</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Cookbook submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/dsl/cookbook/" class="nav-list-link">Cookbook</a><ul class="nav-list"><li class="nav-list-item"><a href="/dsl/cookbook/amazon-web-services/" class="nav-list-link">Amazon Web Services</a></li><li class="nav-list-item"><a href="/dsl/cookbook/bulk-operations-elements" class="nav-list-link">Bulk operations - elements</a></li><li class="nav-list-item"><a href="/dsl/cookbook/component-view/" class="nav-list-link">Component view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/container-view/" class="nav-list-link">Container view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/container-view-multiple-software-systems/" class="nav-list-link">Container view (for multiple software systems)</a></li><li class="nav-list-item"><a href="/dsl/cookbook/custom-elements/" class="nav-list-link">Custom elements</a></li><li class="nav-list-item"><a href="/dsl/cookbook/custom-view/" class="nav-list-link">Custom view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/dsl-and-code/" class="nav-list-link">DSL and code</a></li><li class="nav-list-item"><a href="/dsl/cookbook/deployment-groups/" class="nav-list-link">Deployment groups</a></li><li class="nav-list-item"><a href="/dsl/cookbook/deployment-view/" class="nav-list-link">Deployment view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/dynamic-view/" class="nav-list-link">Dynamic view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/dynamic-view-parallel/" class="nav-list-link">Dynamic view (with parallel sequences)</a></li><li class="nav-list-item"><a href="/dsl/cookbook/element-styles/" class="nav-list-link">Element styles</a></li><li class="nav-list-item"><a href="/dsl/cookbook/filtered-view/" class="nav-list-link">Filtered view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/groups/" class="nav-list-link">Groups</a></li><li class="nav-list-item"><a href="/dsl/cookbook/image-view/" class="nav-list-link">Image view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/implied-relationships/" class="nav-list-link">
1Implied relationships</a></li><li class="nav-list-item"><a href="/dsl/cookbook/perspectives-dynamic/" class="nav-list-link">Perspectives (dynamic)</a></li><li class="nav-list-item"><a href="/dsl/cookbook/perspectives-static/" class="nav-list-link">Perspectives (static)</a></li><li class="nav-list-item"><a href="/dsl/cookbook/relationship-styles/" class="nav-list-link">Relationship styles</a></li><li class="nav-list-item"><a href="/dsl/cookbook/scripts/" class="nav-list-link">Scripts</a></li><li class="nav-list-item"><a href="/dsl/cookbook/shared-components/" class="nav-list-link">Shared components</a></li><li class="nav-list-item"><a href="/dsl/cookbook/system-context-view/" class="nav-list-link">System context view</a></li><li class="nav-list-item"><a href="/dsl/cookbook/themes/" class="nav-list-link">Themes</a></li><li class="nav-list-item"><a href="/dsl/cookbook/workspace/" class="nav-list-link">Workspace</a></li><li class="nav-list-item"><a href="/dsl/cookbook/workspace-extension/" class="nav-list-link">Workspace extension</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Pattern catalog submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/dsl/patterns/" class="nav-list-link">Pattern catalog</a><ul class="nav-list"><li class="nav-list-item"><a href="/dsl/patterns/api-gateway/" class="nav-list-link">API gateway</a></li><li class="nav-list-item"><a href="/dsl/patterns/aws-app-runner/" class="nav-list-link">AWS App Runner</a></li><li class="nav-list-item"><a href="/dsl/patterns/aws-eks/" class="nav-list-link">AWS Elastic Kubernetes Service</a></li><li class="nav-list-item"><a href="/dsl/patterns/aws-fargate/" class="nav-list-link">AWS Fargate</a></li><li class="nav-list-item"><a href="/dsl/patterns/aws-lambda/" class="nav-list-link">AWS Lambda</a></li><li class="nav-list-item"><a href="/dsl/patterns/docker/" class="nav-list-link">Docker</a></li><li class="nav-list-item"><a href="/dsl/patterns/firewall/" class="nav-list-link">Firewall</a></li><li class="nav-list-item"><a href="/dsl/patterns/hardware-system/" class="nav-list-link">Hardware system</a></li><li class="nav-list-item"><a href="/dsl/patterns/kubernetes/" class="nav-list-link">Kubernetes</a></li><li class="nav-list-item"><a href="/dsl/patterns/load-balancer/" class="nav-list-link">Load balancer</a></li><li class="nav-list-item"><a href="/dsl/patterns/microservice/" class="nav-list-link">Microservice</a></li></ul></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Commands submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/commands" class="nav-list-link">Commands</a><ul class="nav-list"><li class="nav-list-item"><a href="/playground" class="nav-list-link">playground</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="local submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/local" class="nav-list-link">local</a><ul class="nav-list"><li class="nav-list-item"><a href="/local/quickstart" class="nav-list-link">Quickstart</a></li><li class="nav-list-item"><a href="/local/workflow" class="nav-list-link">Workflow</a></li><li class="nav-list-item"><a href="/local/configuration" class="nav-list-link">Configuration</a></li><li class="nav-list-item"><a href="/local/diagrams" class="nav-list-link">Diagrams</a></li><li class="nav-list-item"><a href="/local/additional-visualisations" class="nav-list-link">Additional visualisations</a></li><li class="nav-list-item"><a href="/local/documentation" class="nav-list-link">Documentation</a></li><li class="nav-list-item"><a href="/local/decisions" class="nav-list-link">Decisions</a></li><li class="nav-list-item"><a href="/local/images" class="nav-list-link">Images</a></li><li class="nav-list-item"><a href="/local/troubleshooting" class="nav-list-link">Troubleshooting</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="server submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server" class="nav-list-link">server</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/pricing" class="nav-list-link">Pricing</a></li><li class="nav-list-item"><a href="/server/quickstart" class="nav-list-link">Quickstart</a></li><li class="nav-list-item"><a href="/server/workflow" class="nav-list-link">Workflow</a></li><li class="nav-list-item"><a href="/server/configuration" class="nav-list-link">Configuration</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Data storage submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/data-storage" class="nav-list-link">Data storage</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/data-storage/file-system" class="nav-list-link">File system</a></li><li class="nav-list-item"><a href="/server/data-storage/amazon-web-services-s3" class="nav-list-link">Amazon Web Services S3</a></li><li class="nav-list-item"><a href="/server/data-storage/microsoft-azure-blob-storage" class="nav-list-link">Microsoft Azure Blob Storage</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Caching submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/caching" class="nav-list-link">Caching</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/caching/local" class="nav-list-link">Local in-memory cache</a></li><li class="nav-list-item"><a href="/server/caching/redis" class="nav-list-link">Redis</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Search submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/search" class="nav-list-link">Search</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/search/lucene" class="nav-list-link">Apache Lucene</a></li><li class="nav-list-item"><a href="/server/search/elasticsearch" class="nav-list-link">Elasticsearch</a></li><li class="nav-list-item"><a href="/server/search/none" class="nav-list-link">None</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Authentication submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/authentication" class="nav-list-link">Authentication</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/authentication/none" class="nav-list-link">None</a></li><li class="nav-list-item"><a href="/server/authentication/fixed" class="nav-list-link">Fixed</a></li><li class="nav-list-item"><a href="/server/authentication/file" class="nav-list-link">File</a></li><li class="nav-list-item"><a href="/server/authentication/saml" class="nav-list-link">SAML</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="HTTP sessions submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/http-sessions" class="nav-list-link">HTTP sessions</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/http-sessions/local" class="nav-list-link">Local</a></li><li class="nav-list-item"><a href="/server/http-sessions/redis" class="nav-list-link">Redis</a></li></ul></li><li class="nav-list-item"><a href="/server/role-based-access" class="nav-list-link">Role-based access</a></li><li class="nav-list-item"><a href="/server/admin-users" class="nav-list-link">Admin users</a></li><li class="nav-list-item"><a href="/server/workspace-sharing" class="nav-list-link">Workspace sharing</a></li><li class="nav-list-item"><a href="/server/workspace-versions" class="nav-list-link">Workspace versions</a></li><li class="nav-list-item"><a href="/server/workspace-branches" class="nav-list-link">Workspace branches</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Diagrams submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/diagrams" class="nav-list-link">Diagrams</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/diagrams/viewer" class="nav-list-link">Diagram viewer</a></li><li class="nav-list-item"><a href="/server/diagrams/editor" class="nav-list-link">Diagram editor</a></li><li class="nav-list-item"><a href="/server/diagrams/notation" class="nav-list-link">Notation</a></li><li class="nav-list-item"><a href="/server/diagrams/themes" class="nav-list-link">Themes</a></li><li class="nav-list-item"><a href="/server/diagrams/perspectives" class="nav-list-link">Perspectives</a></li><li class="nav-list-item"><a href="/server/diagrams/customisation" class="nav-list-link">Customisation</a></li><li class="nav-list-item"><a href="/server/diagrams/iframe-embed" class="nav-list-link">iframe embed</a></li><li class="nav-list-item"><a href="/server/diagrams/image-embed" class="nav-list-link">Image embed</a></li><li class="nav-list-item"><a href="/server/diagrams/scripting" class="nav-list-link">Scripting</a></li></ul></li><li class="nav-list-item"><a href="/server/additional-visualisations" class="nav-list-link">Additional visualisations</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Documentation submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/server/documentation" class="nav-list-link">Documentation</a><ul class="nav-list"><li class="nav-list-item"><a href="/server/documentation/headings" class="nav-list-link">Headings and section numbers</a></li><li class="nav-list-item"><a href="/server/documentation/diagrams" class="nav-list-link">Diagrams</a></li><li class="nav-list-item"><a href="/server/documentation/images" class="nav-list-link">Images</a></li><li class="nav-list-item"><a href="/server/documentation/export" class="nav-list-link">Export</a></li><li class="nav-list-item"><a href="/server/documentation/scripting" class="nav-list-link">Scripting</a></li></ul></li><li class="nav-list-item"><a href="/server/decisions" class="nav-list-link">Decisions</a></li><li class="nav-list-item"><a href="/server/images" class="nav-list-link">Images</a></li><li class="nav-list-item"><a href="/server/workspace-api" class="nav-list-link">Workspace API</a></li><li class="nav-list-item"><a href="/server/admin-api" class="nav-list-link">Admin API</a></li><li class="nav-list-item"><a href="/server/customisation" class="nav-list-link">Customisation</a></li><li class="nav-list-item"><a href="/server/scripting" class="nav-list-link">Scripting</a></li><li class="nav-list-item"><a href="/server/faq" class="nav-list-link">FAQ</a></li><li class="nav-list-item"><a href="/server/troubleshooting" class="nav-list-link">Troubleshooting</a></li><li class="nav-list-item"><a href="/server/terms-and-conditions" class="nav-list-link">Terms and conditions</a></li><li class="nav-list-item"><a href="/server/privacy-policy" class="nav-list-link">Privacy policy</a></li><li class="nav-list-item"><a href="/server/eula" class="nav-list-link">EULA</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="export submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/export" class="nav-list-link">export</a><ul class="nav-list"><li class="nav-list-item"><a href="/export/plantuml" class="nav-list-link">PlantUML</a></li><li class="nav-list-item"><a href="/export/c4plantuml" class="nav-list-link">C4-PlantUML</a></li><li class="nav-list-item"><a href="/export/mermaid" class="nav-list-link">Mermaid</a></li><li class="nav-list-item"><a href="/export/websequencediagrams" class="nav-list-link">WebSequenceDiagrams</a></li><li class="nav-list-item"><a href="/export/static-site" class="nav-list-link">Static site</a></li><li class="nav-list-item"><a href="/export/png-and-svg" class="nav-list-link">PNG and SVG</a></li></ul></li><li class="nav-list-item"><a href="/push" class="nav-list-link">push</a></li><li class="nav-list-item"><a href="/pull" class="nav-list-link">pull</a></li><li class="nav-list-item"><a href="/branches" class="nav-list-link">branches</a></li><li class="nav-list-item"><a href="/create" class="nav-list-link">create</a></li><li class="nav-list-item"><a href="/delete" class="nav-list-link">delete</a></li><li class="nav-list-item"><a href="/lock" class="nav-list-link">lock</a></li><li class="nav-list-item"><a href="/unlock" class="nav-list-link">unlock</a></li><li class="nav-list-item"><a href="/merge" class="nav-list-link">merge</a></li><li class="nav-list-item">
1<a href="/validate" class="nav-list-link">validate</a></li><li class="nav-list-item"><a href="/inspect" class="nav-list-link">inspect</a></li><li class="nav-list-item"><a href="/list" class="nav-list-link">list</a></li><li class="nav-list-item"><a href="/generate" class="nav-list-link">generate</a></li><li class="nav-list-item"><a href="/regenerate-apikey" class="nav-list-link">regenerate-apikey</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Java submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/java" class="nav-list-link">Java</a><ul class="nav-list"><li class="nav-list-item"><a href="/java/getting-started" class="nav-list-link">Getting started</a></li><li class="nav-list-item"><a href="/java/workspace-api" class="nav-list-link">Workspace API client</a></li><li class="nav-list-item"><a href="/java/implied-relationships" class="nav-list-link">Implied relationships</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Component finder submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/java/component" class="nav-list-link">Component finder</a><ul class="nav-list"><li class="nav-list-item"><a href="/java/component/introduction" class="nav-list-link">Introduction</a></li></ul></li><li class="nav-list-item"><a href="/java/faq" class="nav-list-link">FAQ</a></li></ul></li><li class="nav-list-item"><a href="/openapi" class="nav-list-link">OpenAPI</a></li><li class="nav-list-item"><a href="/community" class="nav-list-link">Community tooling</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="End of life submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/eol" class="nav-list-link">End of life</a><ul class="nav-list"><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Structurizr Lite submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/lite" class="nav-list-link">Structurizr Lite</a><ul class="nav-list"><li class="nav-list-item"><a href="/lite/quickstart" class="nav-list-link">Quickstart</a></li><li class="nav-list-item"><a href="/lite/installation" class="nav-list-link">Installation</a></li><li class="nav-list-item"><a href="/lite/usage" class="nav-list-link">Usage</a></li><li class="nav-list-item"><a href="/lite/workflow" class="nav-list-link">Workflow</a></li><li class="nav-list-item"><a href="/lite/building" class="nav-list-link">Building from source</a></li><li class="nav-list-item"><a href="/lite/faq" class="nav-list-link">FAQ</a></li><li class="nav-list-item"><a href="/lite/troubleshooting" class="nav-list-link">Troubleshooting</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Structurizr on-premises submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/onpremises" class="nav-list-link">Structurizr on-premises</a><ul class="nav-list"><li class="nav-list-item"><a href="/onpremises/quickstart" class="nav-list-link">Quickstart</a></li><li class="nav-list-item"><a href="/onpremises/installation" class="nav-list-link">Installation</a></li><li class="nav-list-item"><a href="/onpremises/usage" class="nav-list-link">Usage</a></li><li class="nav-list-item"><a href="/onpremises/configuration" class="nav-list-link">Configuration</a></li><li class="nav-list-item"><a href="/onpremises/customisation" class="nav-list-link">Customisation</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Authentication submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/onpremises/authentication" class="nav-list-link">Authentication</a><ul class="nav-list"><li class="nav-list-item"><a href="/onpremises/authentication/file" class="nav-list-link">File</a></li><li class="nav-list-item"><a href="/onpremises/authentication/ldap" class="nav-list-link">LDAP</a></li><li class="nav-list-item"><a href="/onpremises/authentication/saml" class="nav-list-link">SAML</a></li></ul></li><li class="nav-list-item"><a href="/onpremises/role-based-access" class="nav-list-link">Role-based access</a></li><li class="nav-list-item"><a href="/onpremises/http-sessions" class="nav-list-link">HTTP sessions</a></li><li class="nav-list-item"><a href="/onpremises/data-storage" class="nav-list-link">Data storage</a></li><li class="nav-list-item"><a href="/onpremises/workspace-versioning" class="nav-list-link">Workspace versioning</a></li><li class="nav-list-item"><a href="/onpremises/workspace-branches" class="nav-list-link">Workspace branches</a></li><li class="nav-list-item"><a href="/onpremises/workspace-api" class="nav-list-link">Workspace API</a></li><li class="nav-list-item"><a href="/onpremises/admin-api" class="nav-list-link">Admin API</a></li><li class="nav-list-item"><a href="/onpremises/embed" class="nav-list-link">Embedding diagrams</a></li><li class="nav-list-item"><a href="/onpremises/diagram-review" class="nav-list-link">Diagram review</a></li><li class="nav-list-item"><a href="/onpremises/building" class="nav-list-link">Building from source</a></li><li class="nav-list-item"><a href="/onpremises/faq" class="nav-list-link">FAQ</a></li><li class="nav-list-item"><a href="/onpremises/troubleshooting" class="nav-list-link">Troubleshooting</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Structurizr cloud service submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/cloud" class="nav-list-link">Structurizr cloud service</a><ul class="nav-list"><li class="nav-list-item">
1<a href="/cloud/workspace-settings" class="nav-list-link">Workspace settings</a></li><li class="nav-list-item"><a href="/cloud/workspace-visibility" class="nav-list-link">Workspace visibility</a></li><li class="nav-list-item"><a href="/cloud/role-based-access" class="nav-list-link">Role-based access</a></li><li class="nav-list-item"><a href="/cloud/client-side-encryption" class="nav-list-link">Client-side encryption</a></li><li class="nav-list-item"><a href="/cloud/ip-address-restrictions" class="nav-list-link">IP address restrictions</a></li><li class="nav-list-item"><a href="/cloud/workspace-branches" class="nav-list-link">Workspace branches</a></li><li class="nav-list-item"><a href="/cloud/workspace-versioning" class="nav-list-link">Workspace versioning</a></li><li class="nav-list-item"><a href="/cloud/workspace-locking" class="nav-list-link">Workspace locking</a></li><li class="nav-list-item"><a href="/cloud/workspace-api" class="nav-list-link">Workspace API</a></li><li class="nav-list-item"><a href="/cloud/admin-api" class="nav-list-link">Admin API</a></li><li class="nav-list-item"><a href="/cloud/embed" class="nav-list-link">Embedding diagrams</a></li><li class="nav-list-item"><a href="/cloud/notion" class="nav-list-link">Notion</a></li><li class="nav-list-item"><a href="/cloud/slack" class="nav-list-link">Slack</a></li><li class="nav-list-item"><a href="/cloud/diagram-review" class="nav-list-link">Diagram review</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Structurizr CLI submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/cli" class="nav-list-link">Structurizr CLI</a><ul class="nav-list"><li class="nav-list-item"><a href="/cli/installation" class="nav-list-link">Installation</a></li><li class="nav-list-item"><a href="/cli/push" class="nav-list-link">push</a></li><li class="nav-list-item"><a href="/cli/pull" class="nav-list-link">pull</a></li><li class="nav-list-item"><a href="/cli/lock" class="nav-list-link">lock</a></li><li class="nav-list-item"><a href="/cli/unlock" class="nav-list-link">unlock</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="export submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/cli/export" class="nav-list-link">export</a><ul class="nav-list"><li class="nav-list-item"><a href="/export/plantuml" class="nav-list-link">PlantUML</a></li><li class="nav-list-item"><a href="/export/c4plantuml" class="nav-list-link">C4-PlantUML</a></li><li class="nav-list-item"><a href="/export/mermaid" class="nav-list-link">Mermaid</a></li><li class="nav-list-item"><a href="/export/websequencediagrams" class="nav-list-link">WebSequenceDiagrams</a></li><li class="nav-list-item"><a href="/export/static-site" class="nav-list-link">Static site</a></li><li class="nav-list-item"><a href="/export/png-and-svg" class="nav-list-link">PNG and SVG</a></li></ul></li><li class="nav-list-item"><a href="/cli/merge" class="nav-list-link">merge</a></li><li class="nav-list-item"><a href="/cli/list" class="nav-list-link">list</a></li><li class="nav-list-item"><a href="/cli/validate" class="nav-list-link">validate</a></li><li class="nav-list-item"><a href="/cli/inspect" class="nav-list-link">inspect</a></li><li class="nav-list-item"><a href="/cli/building" class="nav-list-link">Building from source</a></li></ul></li></ul></li></ul> <ul class="nav-list"><li class="nav-list-item external"> <a href="https://playground.structurizr.com" class="nav-list-link external" > playground.structurizr.com <svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg> </a> </li><li class="nav-list-item external"> <a href="https://github.com/structurizr/structurizr" class="nav-list-link external" > GitHub <svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg> </a> </li><li class="nav-list-item external">
1 <a href="https://github.com/structurizr/structurizr/issues" class="nav-list-link external" > Issue tracker <svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg> </a> </li><li class="nav-list-item external"> <a href="https://patreon.com/structurizr" class="nav-list-link external" > Patreon & Discord <svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg> </a> </li><li class="nav-list-item external"> <a href="https://join.slack.com/t/structurizr/shared_invite/enQtMzkyMjY1NzMwNTkzLTcyOGI1MTZmNDQwMDQ5YmZlMThiYmU1ZTM2ZWZiMzYwMjVhNmM0OWIwNjFlZTM1YmY3YzU0ZDY2MTA1YTk5Mjg" class="nav-list-link external" > Slack <svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg> </a> </li></ul> </nav> <div class="d-md-block d-xs-none"> <div class="site-footer"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </header> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search" role="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Structurizr" autocomplete="off"> <label for="search-input" class="search-label"> <span class="sr-only">Search Structurizr</span> <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg> </label> </div> <div id="search-results" class="search-results"></div> </div> </div> <div class="main-content-wrap"> <div id="main-content" class="main-content"> <main> <h1 id="dsl"> <a href="#dsl" class="anchor-heading" aria-labelledby="dsl"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> DSL </h1> <p><a href="https://search.maven.org/artifact/com.structurizr/structurizr-dsl"><img src="https://img.shields.io/maven-central/v/com.structurizr/structurizr-dsl.svg?label=Maven%20Central" alt="Maven Central" /></a></p> <p>The Structurizr DSL provides a way to define a software architecture model (based upon the <a href="https://c4model.com">C4 model</a>) using a text-based domain specific language (DSL).</p> <hr> <h2 class="text-delta">Table of contents</h2> <ul> <li> <a href="/dsl/example">Example</a> </li> <li> <a href="/dsl/tutorial">Tutorial</a> </li> <li> <a href="/dsl/basics">Basics</a> </li> <li> <a href="/dsl/defaults">Defaults</a> </li> <li> <a href="/dsl/identifiers">Identifiers</a> </li> <li> <a href="/dsl/archetypes">Archetypes</a> </li> <li> <a href="/dsl/implied-relationships">Implied relationships</a> </li> <li> <a href="/dsl/expressions">Expressions</a> </li> <li> <a href="/dsl/includes">Includes</a> </li> <li> <a href="/dsl/workspace-extension">Workspace extension</a> </li> <li> <a href="/dsl/docs">Markdown/Asciidoc documentation</a> </li> <li> <a href="/dsl/adrs">Architecture Decision Records (ADRs)</a> </li> <li> <a href="/dsl/scripts">Scripts</a> </li> <li> <a href="/dsl/plugins">Plugins</a> </li> <li> <a href="/dsl/language">Language reference</a> </li> <li> <a href="/dsl/parser">DSL Parser</a> </li> <li> <a href="/dsl/faq">FAQ</a> </li> <li> <a href="/dsl/cookbook/">Cookbook</a> </li> <li> <a href="/dsl/patterns/">Pattern catalog</a> </li> </ul> </main> <hr> <footer> <style> .endOfLifeNotice { background: darkred; color: white; font-size: 20px; padding: 10px; text-align: center; margin-bottom: 10px; border-radius: 5px; } .endOfLifeNotice a { color: white; } </style> 
1<script src="https://simonbrown.je/js/ad.js"></script>
1 
1<script> const path = window.location.pathname; if (path.indexOf('/lite') === 0 || path.indexOf('/cli') === 0 || path.indexOf('/onpremises') === 0 || path.indexOf('/cloud') === 0) { var html = ''; if (path.indexOf('/lite') === 0) { html += 'Structurizr Lite will not receive any further updates - please migrate to <a href="/local">local</a> for new features, bug fixes, and security updates.'; html += ' See <a href="https://www.patreon.com/posts/146923136" target="_blank">Introducing Structurizr vNext</a> for more details.'; } else if (path.indexOf('/cli') === 0) { html += 'Structurizr CLI will not receive any further updates - please migrate to the new <a href="/commands">commands</a> for new features, bug fixes, and security updates.'; html += ' See <a href="https://www.patreon.com/posts/146923136" target="_blank">Introducing Structurizr vNext</a> for more details.'; } else if (path.indexOf('/onpremises') === 0) { html += 'Structurizr on-premises will not receive any further updates - please migrate to <a href="/server">server</a> for new features, bug fixes, and security updates.'; html += ' See <a href="https://www.patreon.com/posts/146923136" target="_blank">Introducing Structurizr vNext</a> for more details.'; } else if (path.indexOf('/cloud') === 0) { html += 'The Structurizr cloud service will reach its End of Life (EOL) on 30 September 2026 - please see <a href="https://www.patreon.com/posts/142577083" target="_blank">Cloud service end of life announcement</a> for more details.'; } const div = document.createElement("div"); div.innerHTML = html; div.classList.add('endOfLifeNotice'); const content = document.getElementById('main-content'); if (content) { content.prepend(div); } } else { showAd('main-content', 'structurizr'); } </script>
1 <div class="d-xs-block d-md-none"> <div class="mt-4 fs-2"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </footer> </div> </div> <div class="search-overlay"></div> </div> </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.