{
  "id": "type-n08",
  "revision": "c572066d939948c0759d04497186a5ac4214052eeca8676d0deba9b889069403",
  "regions": [
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "web",
      "label": "Web",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "load",
      "label": "Dashboard scheduler",
      "kind": "N08",
      "region": "common-logic",
      "ports": [
        {
          "id": "account",
          "profile": "P02",
          "contract": "AccountReadV1",
          "polarity": "Require"
        },
        {
          "id": "activity",
          "profile": "P02",
          "contract": "ActivityReadV1",
          "polarity": "Require"
        },
        {
          "id": "recommend",
          "profile": "P02",
          "contract": "RecommendationReadV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "account",
      "label": "Account API",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "read",
          "profile": "P02",
          "contract": "AccountReadV1",
          "polarity": "Offer"
        },
        {
          "id": "done",
          "profile": "P13",
          "contract": "DashboardRequiredPartsV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "activity",
      "label": "Activity API",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "read",
          "profile": "P02",
          "contract": "ActivityReadV1",
          "polarity": "Offer"
        },
        {
          "id": "done",
          "profile": "P13",
          "contract": "DashboardRequiredPartsV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "recommend",
      "label": "Recommendations API",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "read",
          "profile": "P02",
          "contract": "RecommendationReadV1",
          "polarity": "Offer"
        },
        {
          "id": "panel",
          "profile": "P08",
          "contract": "RecommendationPanelStateV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "ready",
      "label": "Required-data join",
      "kind": "N01",
      "region": "common-logic",
      "ports": [
        {
          "id": "parts",
          "profile": "P13",
          "contract": "DashboardRequiredPartsV1",
          "polarity": "Require"
        },
        {
          "id": "state",
          "profile": "P08",
          "contract": "DashboardReadyStateV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Dashboard Surface",
      "kind": "N11",
      "region": "web",
      "ports": [
        {
          "id": "required",
          "profile": "P08",
          "contract": "DashboardReadyStateV1",
          "polarity": "Require"
        },
        {
          "id": "optional",
          "profile": "P08",
          "contract": "RecommendationPanelStateV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "account",
      "kind": "H05",
      "incidences": [
        {
          "node": "load",
          "port": "account",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "account",
          "port": "read",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "activity",
      "kind": "H05",
      "incidences": [
        {
          "node": "load",
          "port": "activity",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "activity",
          "port": "read",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "recommend",
      "kind": "H05",
      "incidences": [
        {
          "node": "load",
          "port": "recommend",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "recommend",
          "port": "read",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "ready",
      "kind": "H09",
      "incidences": [
        {
          "node": "account",
          "port": "done",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "activity",
          "port": "done",
          "role": "source",
          "ordinal": 1
        },
        {
          "node": "ready",
          "port": "parts",
          "role": "result",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "display",
      "kind": "H02",
      "incidences": [
        {
          "node": "ready",
          "port": "state",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "required",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "optional",
      "kind": "H02",
      "incidences": [
        {
          "node": "recommend",
          "port": "panel",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "optional",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
