{
  "id": "web-content",
  "revision": "fd73fca88045ec746eb62d7e7fc93f25ca2aa0e690cc658cc2b300ec679e6cf5",
  "regions": [
    {
      "id": "browser",
      "label": "Browser"
    },
    {
      "id": "edge",
      "label": "Edge services"
    },
    {
      "id": "data",
      "label": "Data authorities"
    }
  ],
  "nodes": [
    {
      "id": "route",
      "label": "URL routes",
      "kind": "N12",
      "region": "browser",
      "ports": [
        {
          "id": "page",
          "profile": "P11",
          "contract": "PageRouteV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "reader",
      "label": "Page renderer",
      "kind": "N11",
      "region": "browser",
      "ports": [
        {
          "id": "route",
          "profile": "P11",
          "contract": "PageRouteV1",
          "polarity": "Require"
        },
        {
          "id": "fetch",
          "profile": "P02",
          "contract": "PageReadV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "edge",
      "label": "Edge page service",
      "kind": "N19",
      "region": "edge",
      "ports": [
        {
          "id": "read",
          "profile": "P02",
          "contract": "PageReadV1",
          "polarity": "Offer"
        },
        {
          "id": "cache",
          "profile": "P02",
          "contract": "VersionedPageV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "cache",
      "label": "Revision cache",
      "kind": "N25",
      "region": "edge",
      "ports": [
        {
          "id": "lookup",
          "profile": "P02",
          "contract": "VersionedPageV1",
          "polarity": "Offer"
        },
        {
          "id": "artifact",
          "profile": "P23",
          "contract": "PageArtifactV1",
          "polarity": "Require"
        },
        {
          "id": "served",
          "profile": "P24",
          "contract": "PublicationRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "cms",
      "label": "Content authority",
      "kind": "N21",
      "region": "data",
      "ports": [
        {
          "id": "content",
          "profile": "P01",
          "contract": "ContentRevisionV1",
          "polarity": "Offer"
        },
        {
          "id": "source",
          "profile": "P24",
          "contract": "RevisionRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "build",
      "label": "Page compiler",
      "kind": "N34",
      "region": "data",
      "ports": [
        {
          "id": "source",
          "profile": "P01",
          "contract": "ContentRevisionV1",
          "polarity": "Require"
        },
        {
          "id": "page",
          "profile": "P23",
          "contract": "PageArtifactV1",
          "polarity": "Offer"
        },
        {
          "id": "artifact",
          "profile": "P24",
          "contract": "ArtifactRefV1",
          "polarity": "Neutral"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "route",
      "kind": "H36",
      "incidences": [
        {
          "node": "route",
          "port": "page",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "reader",
          "port": "route",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "fetch",
      "kind": "H05",
      "incidences": [
        {
          "node": "edge",
          "port": "read",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "reader",
          "port": "fetch",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "cache",
      "kind": "H05",
      "incidences": [
        {
          "node": "cache",
          "port": "lookup",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "edge",
          "port": "cache",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "source",
      "kind": "H02",
      "incidences": [
        {
          "node": "cms",
          "port": "content",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "build",
          "port": "source",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "publish",
      "kind": "H26",
      "incidences": [
        {
          "node": "build",
          "port": "page",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "cache",
          "port": "artifact",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "provenance",
      "kind": "H27",
      "incidences": [
        {
          "node": "cms",
          "port": "source",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "build",
          "port": "artifact",
          "role": "artifact",
          "ordinal": 1
        },
        {
          "node": "cache",
          "port": "served",
          "role": "served",
          "ordinal": 2
        }
      ]
    }
  ]
}
