{
  "$schema": "https://etalii.net/adp/fbl/schema/0.1/fbl.schema.json#/$defs/Document",
  "fbl": "0.13",
  "doc": "A Structurizr DSL workspace (definitions/diagrams/c4-*.dis, c4-container.md), read by the grammar structurizr.lark beside this document: FBL 0.11's grammar family (section 4.9), one binding shared by six readings. Every C4 specification names 'structurizr.fbl#workspace' as its binding, so a host opens one model and one history per .dsl file however many C4 views of it are open (section 9). Comments are owned and kept wherever they stand; a statement that does not parse is skipped to its line's end, inside blocks too, and a block that is never closed ends at the end of the body (recover). Elements, relationships and the declaration's positional arguments are read by name, quoted or bare, with their escapes; a tags argument holds the tags its text is cut into at its commas (FBL 0.13, split), as Structurizr reads it; an absent argument is written in its place, padded with empty ones. Each view kind is a view of the body, which a reading of any tool type shows (spec 067, FR-015), and the selected view's include, exclude, title and autoLayout statements, its scope and environment, which the tool types map onto the diagram's attributes, and its interactions are read for it alone. Which elements a view shows, and relationships lifted to the nearest drawn ancestor, are the viewpoint's and DISL's. !include, !script and other directives, styles and properties are unbound statements: kept byte for byte, never followed.",
  "bindings": {
    "workspace": {
      "title": "Structurizr DSL workspace",
      "claims": {
        "extensions": [
          ".dsl"
        ],
        "origins": [
          "c4/context",
          "c4/container",
          "c4/component",
          "c4/deployment",
          "c4/dynamic",
          "c4/system-landscape"
        ]
      },
      "body": {
        "kind": "file",
        "family": "grammar",
        "grammar": {
          "file": "structurizr.lark"
        },
        "recover": {
          "unit": "unit",
          "sync": [
            "_NL"
          ],
          "nested": {
            "open": "{",
            "close": "}"
          },
          "unclosed": {
            "BLOCK_COMMENT": "*/"
          }
        }
      },
      "reader": "declared",
      "text": {
        "newline": "lf",
        "indent": 4,
        "finalNewline": true
      },
      "registration": {
        "legacyLayout": "{base}.layout.json",
        "createOnFirstPlacement": true
      },
      "blocks": [
        {
          "name": "systemLandscapeView",
          "at": "/workspace/views/system_landscape_view",
          "view": {
            "node": "key",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/views",
            "emit": "systemLandscape \"{key}\" {\n    include *\n    autoLayout lr\n}"
          }
        },
        {
          "name": "systemLandscapeViewWithoutKey",
          "at": "/workspace/views/system_landscape_view_default",
          "view": {
            "value": "'landscape'"
          }
        },
        {
          "name": "systemContextView",
          "at": "/workspace/views/system_context_view",
          "view": {
            "node": "key",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/views",
            "emit": "systemContext {scope} \"{key}\" {\n    include *\n    autoLayout lr\n}"
          }
        },
        {
          "name": "systemContextViewWithoutKey",
          "at": "/workspace/views/system_context_view_default",
          "view": {
            "value": "'systemcontext'"
          }
        },
        {
          "name": "containerView",
          "at": "/workspace/views/container_view",
          "view": {
            "node": "key",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/views",
            "emit": "container {scope} \"{key}\" {\n    include *\n    autoLayout lr\n}"
          }
        },
        {
          "name": "containerViewWithoutKey",
          "at": "/workspace/views/container_view_default",
          "view": {
            "value": "'container'"
          }
        },
        {
          "name": "componentView",
          "at": "/workspace/views/component_view",
          "view": {
            "node": "key",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/views",
            "emit": "component {scope} \"{key}\" {\n    include *\n    autoLayout lr\n}"
          }
        },
        {
          "name": "componentViewWithoutKey",
          "at": "/workspace/views/component_view_default",
          "view": {
            "value": "'component'"
          }
        },
        {
          "name": "dynamicView",
          "at": "/workspace/views/dynamic_view",
          "view": {
            "node": "key",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/views",
            "emit": "dynamic {scope} \"{key}\" {\n    include *\n    autoLayout lr\n}"
          }
        },
        {
          "name": "dynamicViewWithoutKey",
          "at": "/workspace/views/dynamic_view_default",
          "view": {
            "value": "'dynamic'"
          }
        },
        {
          "name": "deploymentView",
          "at": "/workspace/views/deployment_view",
          "view": {
            "node": "key",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/views",
            "emit": "deployment {scope} \"{environment}\" \"{key}\" {\n    include *\n    autoLayout lr\n}"
          }
        },
        {
          "name": "deploymentViewWithoutKey",
          "at": "/workspace/views/deployment_view_default",
          "view": {
            "node": "environment",
            "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
            "escape": {
              "with": "\\",
              "quote": "\""
            }
          }
        }
      ],
      "elements": [
        {
          "name": "workspace",
          "type": "Workspace",
          "doc": "The workspace's name, which the tool types map onto the diagram's workspaceName.",
          "at": "/workspace",
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "person",
          "type": "Person",
          "at": "/workspace/model/**/person",
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep"
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "name"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/model",
            "emit": "{id} = person \"{name}\" \"{description}\""
          },
          "remove": {
            "cascade": [
              "relationship"
            ]
          }
        },
        {
          "name": "softwareSystem",
          "type": "SoftwareSystem",
          "at": "/workspace/model/**/software_system",
          "opens": {
            "open": " {",
            "close": "}"
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep"
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "name"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/model",
            "emit": "{id} = softwareSystem \"{name}\" \"{description}\""
          },
          "remove": {
            "cascade": [
              "container",
              "relationship"
            ]
          }
        },
        {
          "name": "container",
          "type": "Container",
          "at": "/workspace/model/**/container",
          "opens": {
            "open": " {",
            "close": "}"
          },
          "parent": {
            "rules": [
              "softwareSystem"
            ],
            "slot": "containers"
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep"
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "name"
                ],
                "pad": true
              }
            },
            "technology": {
              "node": "technology",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "description",
                  "name"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "insert": {
            "place": "last-child",
            "emit": "{id} = container \"{name}\" \"{description}\" \"{technology}\""
          },
          "remove": {
            "cascade": [
              "component",
              "relationship"
            ]
          }
        },
        {
          "name": "component",
          "type": "Component",
          "at": "/workspace/model/**/component",
          "opens": {
            "open": " {",
            "close": "}"
          },
          "parent": {
            "rules": [
              "container"
            ]
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep"
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "name"
                ],
                "pad": true
              }
            },
            "technology": {
              "node": "technology",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "description",
                  "name"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "insert": {
            "place": "last-child",
            "emit": "{id} = component \"{name}\" \"{description}\" \"{technology}\""
          },
          "remove": {
            "cascade": [
              "relationship"
            ]
          }
        },
        {
          "name": "deploymentNode",
          "type": "DeploymentNode",
          "at": "/workspace/model/**/deployment_node",
          "opens": {
            "open": " {",
            "close": "}"
          },
          "parent": {
            "rules": [
              "deploymentNode"
            ]
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep"
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "name"
                ],
                "pad": true
              }
            },
            "technology": {
              "node": "technology",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "description",
                  "name"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "remove": {
            "cascade": [
              "relationship"
            ]
          }
        },
        {
          "name": "infrastructureNode",
          "type": "InfrastructureNode",
          "at": "/workspace/model/**/infrastructure_node",
          "parent": {
            "rules": [
              "deploymentNode"
            ]
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "name": {
              "node": "name",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep"
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "name"
                ],
                "pad": true
              }
            },
            "technology": {
              "node": "technology",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "description",
                  "name"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "remove": {
            "cascade": [
              "relationship"
            ]
          }
        },
        {
          "name": "containerInstance",
          "type": "ContainerInstance",
          "at": "/workspace/model/**/container_instance",
          "parent": {
            "rules": [
              "deploymentNode"
            ]
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "container": {
              "node": "instance_of",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "reference": {
                "to": [
                  "container"
                ],
                "by": "id"
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "remove": {
            "cascade": [
              "relationship"
            ]
          }
        },
        {
          "name": "softwareSystemInstance",
          "type": "SoftwareSystemInstance",
          "at": "/workspace/model/**/software_system_instance",
          "parent": {
            "rules": [
              "deploymentNode"
            ]
          },
          "id": {
            "from": {
              "node": "identifier"
            }
          },
          "attributes": {
            "softwareSystem": {
              "node": "instance_of",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "reference": {
                "to": [
                  "softwareSystem"
                ],
                "by": "id"
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "remove": {
            "cascade": [
              "relationship"
            ]
          }
        },
        {
          "name": "relationship",
          "type": "Relationship",
          "doc": "A relationship is read as an entry with two reference attributes, which the tool types map onto a relation, so that an end that names nothing is kept with that end unset. A relationship written without a source inside an element's block has that element as its source.",
          "at": "/workspace/model/**/relationship",
          "attributes": {
            "from": {
              "node": "source",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "reference": {
                "to": [
                  "person",
                  "softwareSystem",
                  "container",
                  "component",
                  "deploymentNode",
                  "infrastructureNode",
                  "containerInstance",
                  "softwareSystemInstance"
                ],
                "by": "id"
              }
            },
            "to": {
              "node": "destination",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "reference": {
                "to": [
                  "person",
                  "softwareSystem",
                  "container",
                  "component",
                  "deploymentNode",
                  "infrastructureNode",
                  "containerInstance",
                  "softwareSystemInstance"
                ],
                "by": "id"
              }
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "to"
                ],
                "pad": true
              }
            },
            "technology": {
              "node": "technology",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "empty": "keep",
              "create": {
                "emit": " \"{value}\"",
                "after": [
                  "description",
                  "to"
                ],
                "pad": true
              }
            },
            "tags": {
              "node": "tags",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "split": ",",
              "gather": [
                {
                  "node": "tags_statement/tag",
                  "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
                  "escape": {
                    "with": "\\",
                    "quote": "\""
                  },
                  "split": ","
                }
              ],
              "readOnly": true
            }
          },
          "insert": {
            "place": "end",
            "container": "/workspace/model",
            "emit": "{from} -> {to} \"{description}\""
          },
          "remove": {}
        },
        {
          "name": "viewInclude",
          "type": "ViewInclude",
          "doc": "The selected view's include statements, which the tool types map onto the diagram's includes.",
          "at": "/workspace/views/*/include_statement",
          "selectedView": true,
          "attributes": {
            "members": {
              "node": "member",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "viewExclude",
          "type": "ViewInclude",
          "at": "/workspace/views/*/exclude_statement",
          "selectedView": true,
          "attributes": {
            "excludes": {
              "node": "member",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "viewTitle",
          "type": "ViewInclude",
          "at": "/workspace/views/*/title_statement",
          "selectedView": true,
          "attributes": {
            "title": {
              "node": "title",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "viewAutoLayout",
          "type": "ViewInclude",
          "doc": "autoLayout with no direction lays out top to bottom.",
          "at": "/workspace/views/*/auto_layout_statement",
          "selectedView": true,
          "attributes": {
            "autoLayout": {
              "node": "direction",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "default": "tb",
              "readOnly": true
            },
            "rankSeparation": {
              "node": "rank_separation",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            },
            "nodeSeparation": {
              "node": "node_separation",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "viewScope",
          "type": "ViewInclude",
          "at": "/workspace/views/*/scope",
          "selectedView": true,
          "attributes": {
            "scope": {
              "node": ".",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "viewEnvironment",
          "type": "ViewInclude",
          "at": "/workspace/views/*/environment",
          "selectedView": true,
          "attributes": {
            "environment": {
              "node": ".",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        },
        {
          "name": "interaction",
          "type": "Interaction",
          "doc": "A dynamic view's interactions, read for the selected view only.",
          "at": "/workspace/views/*/interaction",
          "selectedView": true,
          "attributes": {
            "from": {
              "node": "source",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "reference": {
                "to": [
                  "person",
                  "softwareSystem",
                  "container",
                  "component",
                  "deploymentNode",
                  "infrastructureNode",
                  "containerInstance",
                  "softwareSystemInstance"
                ],
                "by": "id"
              }
            },
            "to": {
              "node": "destination",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "reference": {
                "to": [
                  "person",
                  "softwareSystem",
                  "container",
                  "component",
                  "deploymentNode",
                  "infrastructureNode",
                  "containerInstance",
                  "softwareSystemInstance"
                ],
                "by": "id"
              }
            },
            "description": {
              "node": "description",
              "match": "\"?(?<value>(?:[^\"\\\\]|\\\\.)*)\"?",
              "escape": {
                "with": "\\",
                "quote": "\""
              },
              "readOnly": true
            }
          }
        }
      ],
      "template": {
        "text": "workspace \"{base}\" {\n    model {\n        {key} = softwareSystem \"{base}\" \"Describe {base}.\"\n    }\n    views {\n        container {key} \"containers\" {\n            include *\n            autoLayout lr\n        }\n    }\n}\n",
        "byOrigin": {
          "c4/context": "workspace \"{base}\" {\n    model {\n        {key} = softwareSystem \"{base}\" \"Describe {base}.\"\n    }\n    views {\n        systemContext {key} \"context\" {\n            include *\n            autoLayout lr\n        }\n    }\n}\n",
          "c4/system-landscape": "workspace \"{base}\" {\n    model {\n        {key} = softwareSystem \"{base}\" \"Describe {base}.\"\n    }\n    views {\n        systemLandscape \"landscape\" {\n            include *\n            autoLayout lr\n        }\n    }\n}\n"
        }
      }
    }
  }
}
