chartlet 0.20.0

Compile structured data into deterministic, accessible static charts
Documentation
{
  "schemaVersion": 1,
  "type": "sequence",
  "title": "Exporting a report in the background",
  "source": "Service handbook, export flow",
  "width": 1300,
  "height": 400,
  "sequence": {
    "orientation": "landscape",
    "participants": [
      { "id": "client", "label": "Browser", "kind": "actor" },
      { "id": "api", "label": "Export API" },
      { "id": "queue", "label": "Jobs", "kind": "queue" },
      { "id": "worker", "label": "Worker" },
      { "id": "files", "label": "File storage", "kind": "external" }
    ],
    "messages": [
      { "from": "client", "to": "api", "label": "POST /exports" },
      { "from": "api", "to": "queue", "label": "enqueue", "kind": "async" },
      { "from": "api", "to": "client", "label": "202, job id", "kind": "reply" },
      { "from": "worker", "to": "queue", "label": "take job" },
      { "from": "worker", "to": "files", "label": "write report" },
      { "from": "client", "to": "api", "label": "GET /exports/7" },
      { "from": "api", "to": "client", "label": "running", "kind": "reply" },
      { "from": "worker", "to": "api", "label": "done", "kind": "async" },
      { "from": "client", "to": "api", "label": "GET /exports/7" },
      { "from": "api", "to": "client", "label": "download link", "kind": "reply" }
    ],
    "fragments": [
      { "kind": "loop", "label": "every 5 s", "from": 5, "to": 6 }
    ]
  }
}