{
  // Teil 5: Multi-View — C4-Muster mit drei Perspektiven
  "specification": {
    "elements": {
      "actor":     { "notation": "Actor" },
      "system":    { "notation": "Software System", "container": true },
      "container": { "notation": "Container",        "container": true },
      "component": { "notation": "Component",        "container": true },
      "database":  { "notation": "Database" }
    },
    "relationships": {
      "uses":  { "notation": "uses" },
      "reads": { "notation": "reads", "dashed": true }
    }
  },
  "model": {
    "customer": { "kind": "actor",  "title": "Customer" },
    "admin":    { "kind": "actor",  "title": "Admin" },
    "shop": {
      "kind": "system", "title": "Online Shop",
      "children": {
        "frontend": { "kind": "container", "title": "Web Frontend",  "technology": "React" },
        "api": {
          "kind": "container", "title": "REST API", "technology": "Go",
          "children": {
            "orderhandler":   { "kind": "component", "title": "Order Handler"   },
            "producthandler": { "kind": "component", "title": "Product Handler" },
            "authhandler":    { "kind": "component", "title": "Auth Handler"    }
          }
        },
        "db":    { "kind": "database", "title": "PostgreSQL", "technology": "PostgreSQL" },
        "cache": { "kind": "database", "title": "Redis Cache","technology": "Redis"      }
      }
    },
    "payment": { "kind": "system", "title": "Payment Provider (extern)" }
  },
  "relationships": [
    { "from": "customer",        "to": "shop",              "label": "kauft ein",      "kind": "uses"  },
    { "from": "admin",           "to": "shop",              "label": "verwaltet",      "kind": "uses"  },
    { "from": "shop.frontend",   "to": "shop.api",          "label": "REST calls",     "kind": "uses"  },
    { "from": "shop.api",        "to": "shop.db",           "label": "reads/writes",   "kind": "uses"  },
    { "from": "shop.api",        "to": "shop.cache",        "label": "cache lookup",   "kind": "reads" },
    { "from": "shop.api",        "to": "payment",           "label": "charge()",       "kind": "uses"  },
    { "from": "shop.api.orderhandler",   "to": "shop.db",   "label": "persist orders", "kind": "uses"  },
    { "from": "shop.api.producthandler", "to": "shop.db",   "label": "read products",  "kind": "reads" },
    { "from": "shop.api.authhandler",    "to": "shop.cache","label": "validate token", "kind": "reads" }
  ],
  "views": {
    "context": {
      "title":   "System Context",
      "include": ["customer", "admin", "shop", "payment"]
    },
    "containers": {
      "title":   "Container View",
      "scope":   "shop",
      "include": ["customer", "admin", "shop.*", "payment"]
    },
    "api-components": {
      "title":   "API Components",
      "scope":   "shop.api",
      "include": ["shop.api.*", "shop.db", "shop.cache"]
    }
  }
}
