{
  "id": "type-p04",
  "revision": "e7ad0e87d2e0c0a2eb885d59cfffea59f0233e26816e280ab73ab8b93e30dd33",
  "regions": [
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "storage",
      "label": "Storage",
      "parent": null
    },
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "edit",
      "label": "Profile save",
      "kind": "N02",
      "region": "server",
      "ports": [
        {
          "id": "save",
          "profile": "P09",
          "contract": "SaveProfileAtRevisionV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "profile",
      "label": "Profile authority",
      "kind": "N21",
      "region": "storage",
      "ports": [
        {
          "id": "save",
          "profile": "P09",
          "contract": "SaveProfileAtRevisionV1",
          "polarity": "Offer"
        },
        {
          "id": "changed",
          "profile": "P04",
          "contract": "ProfileChangedAtRevisionV1",
          "polarity": "Offer"
        },
        {
          "id": "read",
          "profile": "P02",
          "contract": "GetProfileAtLeastRevisionV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "header",
      "label": "Header state",
      "kind": "N05",
      "region": "mobile",
      "ports": [
        {
          "id": "changed",
          "profile": "P04",
          "contract": "ProfileChangedAtRevisionV1",
          "polarity": "Require"
        },
        {
          "id": "refresh",
          "profile": "P02",
          "contract": "GetProfileAtLeastRevisionV1",
          "polarity": "Require"
        },
        {
          "id": "state",
          "profile": "P08",
          "contract": "ProfileHeaderStateV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "activity",
      "label": "Activity projection",
      "kind": "N22",
      "region": "server",
      "ports": [
        {
          "id": "changed",
          "profile": "P04",
          "contract": "ProfileChangedAtRevisionV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Header Surface",
      "kind": "N11",
      "region": "mobile",
      "ports": [
        {
          "id": "state",
          "profile": "P08",
          "contract": "ProfileHeaderStateV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "save",
      "kind": "H05",
      "incidences": [
        {
          "node": "edit",
          "port": "save",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "profile",
          "port": "save",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "changed",
      "kind": "H07",
      "incidences": [
        {
          "node": "profile",
          "port": "changed",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "header",
          "port": "changed",
          "role": "subscriber",
          "ordinal": 0
        },
        {
          "node": "activity",
          "port": "changed",
          "role": "subscriber",
          "ordinal": 1
        }
      ]
    },
    {
      "id": "refresh",
      "kind": "H05",
      "incidences": [
        {
          "node": "header",
          "port": "refresh",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "profile",
          "port": "read",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "render",
      "kind": "H02",
      "incidences": [
        {
          "node": "header",
          "port": "state",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "state",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
