{
  // Teil 15: Templates — Spezifikation mit benutzerdefinierten Element-Typen und Notationen
  "specification": {
    "elements": {
      "actor":      { "notation": "Actor" },
      "frontend":   { "notation": "Browser",     "description": "Web-Frontend",       "container": true },
      "service":    { "notation": "Hexagon",      "description": "Backend-Service",    "container": true },
      "database":   { "notation": "Cylinder",     "description": "Persistenz"                           },
      "queue":      { "notation": "Parallelogram","description": "Message Queue"                        },
      "external":   { "notation": "Cloud",        "description": "Externes System"                      }
    },
    "relationships": {
      "uses":       { "notation": "uses"    },
      "publishes":  { "notation": "publish", "dashed": true },
      "subscribes": { "notation": "consume", "dashed": true }
    }
  },
  "model": {
    "customer":  { "kind": "actor",    "title": "Customer" },
    "payment":   { "kind": "external", "title": "Stripe (Payment)" },
    "shop": {
      "kind": "service", "title": "Shop Platform",
      "children": {
        "web":     { "kind": "frontend",  "title": "Web App",         "technology": "React"      },
        "api":     { "kind": "service",   "title": "Order Service",   "technology": "Go"         },
        "events":  { "kind": "queue",     "title": "Event Bus",       "technology": "Kafka"      },
        "db":      { "kind": "database",  "title": "Order DB",        "technology": "PostgreSQL" }
      }
    }
  },
  "relationships": [
    { "from": "customer",  "to": "shop",         "label": "kauft ein",        "kind": "uses"       },
    { "from": "shop.web",  "to": "shop.api",     "label": "REST calls",       "kind": "uses"       },
    { "from": "shop.api",  "to": "shop.db",      "label": "persist",          "kind": "uses"       },
    { "from": "shop.api",  "to": "shop.events",  "label": "order.created",    "kind": "publishes"  },
    { "from": "shop.api",  "to": "payment",      "label": "charge()",         "kind": "uses"       }
  ],
  "views": {
    "context":    { "title": "System Context",   "include": ["customer", "shop", "payment"] },
    "containers": { "title": "Container View",   "scope": "shop", "include": ["shop.*", "payment"] }
  }
}
