{
  "schema_version": 1,
  "diagram_type": "sequence",
  "meta": {
    "title": "iSpeed.my — Forms, AGM Proxy & Documents Flow",
    "subtitle": "AGM proxy forms and statement/document delivery",
    "output": "ispeed-forms-agm-documents.html",
    "viewBox": [1080, 680],
    "column_fit": "spread",
    "animation": "trace",
    "quality_profile": "showcase",
    "views": [
      { "id": "forms", "label": "AGM Forms", "focus": ["user", "web", "web-api", "vbroker"], "note": "List, save, and pay proxy forms" },
      { "id": "documents", "label": "Documents", "focus": ["web", "web-api", "jasper"], "note": "Statement and document delivery" },
      { "id": "full-flow", "label": "Full Flow", "focus": ["user", "web", "web-api", "vbroker", "jasper"], "note": "Complete forms and documents lifecycle" }
    ]
  },
  "participants": [
    { "id": "user", "type": "external", "label": "Customer", "sublabel": "Web" },
    { "id": "web", "type": "frontend", "label": "Web App", "sublabel": "forms / statements" },
    { "id": "web-api", "type": "backend", "label": "Web API", "sublabel": "rt-mx-web-api" },
    { "id": "vbroker", "type": "backend", "label": "VBroker API", "sublabel": "/agm + /document" },
    { "id": "jasper", "type": "external", "label": "Jaspersoft", "sublabel": "PDF reports" }
  ],
  "segments": [
    { "from": 150, "to": 445, "label": "AGM Proxy Forms" },
    { "from": 455, "to": 625, "label": "Documents" }
  ],
  "messages": [
    { "id": "f1", "from": "user", "to": "web", "y": 160, "label": "Open AGM form", "variant": "default" },
    { "id": "f2", "from": "web", "to": "web-api", "y": 190, "label": "FormListService", "variant": "emphasis" },
    { "id": "f3", "from": "web-api", "to": "vbroker", "y": 220, "label": "/agm/list", "variant": "default" },
    { "id": "f4", "from": "vbroker", "to": "web-api", "y": 250, "label": "proxy form list", "variant": "return" },
    { "id": "f5", "from": "web", "to": "web-api", "y": 280, "label": "SaveForms", "variant": "emphasis" },
    { "id": "f6", "from": "web-api", "to": "vbroker", "y": 310, "label": "/agm/save", "variant": "default" },
    { "id": "f7", "from": "vbroker", "to": "web-api", "y": 340, "label": "referenceNo", "variant": "return" },
    { "id": "f8", "from": "web", "to": "web-api", "y": 370, "label": "PaymentForms", "variant": "emphasis" },
    { "id": "f9", "from": "web-api", "to": "vbroker", "y": 400, "label": "/agm/payment (PROXY fee)", "variant": "default" },
    { "id": "f10", "from": "vbroker", "to": "web-api", "y": 430, "label": "payment status", "variant": "return" },
    { "id": "f11", "from": "web-api", "to": "web", "y": 460, "label": "form saved", "variant": "return" },
    { "id": "f12", "from": "web", "to": "web-api", "y": 490, "label": "DownloadDocument", "variant": "default" },
    { "id": "f13", "from": "web-api", "to": "jasper", "y": 520, "label": "render statement PDF", "variant": "dashed" },
    { "id": "f14", "from": "jasper", "to": "web-api", "y": 550, "label": "PDF", "variant": "return" },
    { "id": "f15", "from": "web-api", "to": "web", "y": 580, "label": "document stream", "variant": "return" }
  ],
  "activations": [
    { "participant": "web", "from": 155, "to": 585, "type": "frontend" },
    { "participant": "web-api", "from": 185, "to": 585, "type": "backend" },
    { "participant": "vbroker", "from": 215, "to": 435, "type": "backend" },
    { "participant": "jasper", "from": 515, "to": 560, "type": "external" }
  ],
  "cards": [
    {
      "dot": "emerald",
      "title": "AGM Proxy",
      "items": [
        "Storage in vb_proxy_form_sub",
        "Processing fee charge code PROXY in vb_cash_tran",
        "Statuses Pending Review / Payment / Expired / Cancelled"
      ]
    },
    {
      "dot": "violet",
      "title": "Documents",
      "items": [
        "Statements from vb_document via /account/document/list",
        "DownloadFileService streams PDFs",
        "Jaspersoft renders statement/agreement PDFs"
      ]
    },
    {
      "dot": "cyan",
      "title": "Client Notes",
      "items": [
        "AGM proxy is web-only (no mobile RequestIDs)",
        "Statements tab is a stub in the RN app",
        "e-Invoice is a profile flag (RequestID 12421)"
      ]
    }
  ]
}
