digraph JiraVein { rankdir=LR; compound=true; fontname="Helvetica"; node [fontname="Helvetica", fontsize=11, shape=box, style="rounded,filled"]; edge [fontname="Helvetica", fontsize=10]; labelloc="t"; label="Jira Vein - API Flow"; fontsize=16; // Client subgraph cluster_client { label="Soleprint"; style=filled; color="#E8F5E9"; fillcolor="#E8F5E9"; app [label="Application", fillcolor="#C8E6C9"]; vein [label="Jira Vein\n(artery/veins/jira)", fillcolor="#A5D6A7"]; } // Auth subgraph cluster_auth { label="Authentication"; style=filled; color="#FFF8E1"; fillcolor="#FFF8E1"; token [label="API Token\n(Basic Auth)", fillcolor="#FFECB3"]; } // Jira API subgraph cluster_jira { label="Jira Cloud API"; style=filled; color="#E3F2FD"; fillcolor="#E3F2FD"; issues [label="/rest/api/3/issue", fillcolor="#BBDEFB"]; search [label="/rest/api/3/search", fillcolor="#BBDEFB"]; projects [label="/rest/api/3/project", fillcolor="#BBDEFB"]; transitions [label="/rest/api/3/issue/{id}/transitions", fillcolor="#BBDEFB"]; } // Flow app -> vein [label="get_issue()"]; vein -> token [label="auth"]; token -> issues [label="GET/POST"]; token -> search [label="JQL"]; token -> projects [label="list"]; token -> transitions [label="update status"]; }