{
  // Teil 27: Custom Notations — Eigene Elementtypen mit benutzerdefinierten Shapes
  "specification": {
    "elements": {
      "actor":     { "notation": "Actor" },
      "frontend":  { "notation": "Browser",         "description": "Web-Frontend",      "container": true },
      "api":       { "notation": "Hexagon",          "description": "REST/GraphQL API",  "container": true },
      "worker":    { "notation": "Gear",             "description": "Hintergrundservice","container": true },
      "queue":     { "notation": "Parallelogram",    "description": "Message Queue"                      },
      "cache":     { "notation": "Cylinder (Cache)", "description": "In-Memory Cache"                    },
      "store":     { "notation": "Cylinder",         "description": "Persistenz",        "container": true },
      "external":  { "notation": "Cloud",            "description": "Externes System"                    }
    },
    "relationships": {
      "rest":      { "notation": "REST"    },
      "graphql":   { "notation": "GraphQL" },
      "publish":   { "notation": "publish", "dashed": true },
      "consume":   { "notation": "consume", "dashed": true },
      "cache-hit": { "notation": "cache",   "dashed": true }
    }
  },
  "model": {
    "customer": { "kind": "actor",    "title": "Customer" },
    "stripe":   { "kind": "external", "title": "Stripe" },
    "platform": {
      "kind": "frontend", "title": "Platform",
      "children": {
        "webapp":    { "kind": "frontend", "title": "Web App",          "technology": "React"      },
        "shopapi":   { "kind": "api",      "title": "Shop API",          "technology": "Go"         },
        "emailworker":{"kind": "worker",   "title": "Email Worker",      "technology": "Go"         },
        "eventbus":  { "kind": "queue",    "title": "Event Bus",         "technology": "Kafka"      },
        "redis":     { "kind": "cache",    "title": "Redis",             "technology": "Redis"      },
        "db":        { "kind": "store",    "title": "PostgreSQL",        "technology": "PostgreSQL" }
      }
    }
  },
  "relationships": [
    { "from": "customer",             "to": "platform",              "label": "kauft ein",       "kind": "rest"     },
    { "from": "platform.webapp",      "to": "platform.shopapi",      "label": "REST calls",      "kind": "rest"     },
    { "from": "platform.shopapi",     "to": "platform.redis",        "label": "cache lookup",    "kind": "cache-hit"},
    { "from": "platform.shopapi",     "to": "platform.db",           "label": "reads/writes",    "kind": "rest"     },
    { "from": "platform.shopapi",     "to": "platform.eventbus",     "label": "order.created",   "kind": "publish"  },
    { "from": "platform.shopapi",     "to": "stripe",                "label": "charge()",         "kind": "rest"     },
    { "from": "platform.emailworker", "to": "platform.eventbus",     "label": "subscribe",       "kind": "consume"  }
  ],
  "views": {
    "context":    { "title": "System Context",   "include": ["customer", "platform", "stripe"] },
    "containers": { "title": "Custom Shapes View","scope": "platform", "include": ["platform.*", "stripe"] }
  }
}
