{
  "id": "web-multitenant",
  "revision": "d818d03b64431dcd22809056e58e4e456ba90b6e7b2afdcbddce938cf6d7f0ef",
  "regions": [
    {
      "id": "browser",
      "label": "Browser"
    },
    {
      "id": "edge",
      "label": "Edge services"
    },
    {
      "id": "data",
      "label": "Data authorities"
    }
  ],
  "nodes": [
    {
      "id": "route",
      "label": "Workspace route",
      "kind": "N12",
      "region": "browser",
      "ports": [
        {
          "id": "workspace",
          "profile": "P11",
          "contract": "WorkspaceRouteV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "surface",
      "label": "Dashboard Surface",
      "kind": "N11",
      "region": "browser",
      "ports": [
        {
          "id": "route",
          "profile": "P11",
          "contract": "WorkspaceRouteV1",
          "polarity": "Require"
        },
        {
          "id": "read",
          "profile": "P02",
          "contract": "DashboardReadV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "verify",
      "label": "Principal verifier",
      "kind": "N33",
      "region": "edge",
      "ports": [
        {
          "id": "context",
          "profile": "P20",
          "contract": "VerifiedContextV1",
          "polarity": "Offer"
        },
        {
          "id": "principalRef",
          "profile": "P24",
          "contract": "PrincipalRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "service",
      "label": "Dashboard service",
      "kind": "N19",
      "region": "edge",
      "ports": [
        {
          "id": "principal",
          "profile": "P20",
          "contract": "VerifiedContextV1",
          "polarity": "Require"
        },
        {
          "id": "dashboard",
          "profile": "P02",
          "contract": "DashboardReadV1",
          "polarity": "Offer"
        },
        {
          "id": "policy",
          "profile": "P20",
          "contract": "DataGrantV1",
          "polarity": "Require"
        },
        {
          "id": "storage",
          "profile": "P02",
          "contract": "ScopedQueryV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "policy",
      "label": "Row / resource policy",
      "kind": "N33",
      "region": "data",
      "ports": [
        {
          "id": "grant",
          "profile": "P20",
          "contract": "DataGrantV1",
          "polarity": "Offer"
        },
        {
          "id": "policyRef",
          "profile": "P24",
          "contract": "PolicyRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "db",
      "label": "Workspace authority",
      "kind": "N21",
      "region": "data",
      "ports": [
        {
          "id": "query",
          "profile": "P02",
          "contract": "ScopedQueryV1",
          "polarity": "Offer"
        },
        {
          "id": "authorityRef",
          "profile": "P24",
          "contract": "AuthorityRefV1",
          "polarity": "Neutral"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "route",
      "kind": "H36",
      "incidences": [
        {
          "node": "route",
          "port": "workspace",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "surface",
          "port": "route",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "grant",
      "kind": "H23",
      "incidences": [
        {
          "node": "verify",
          "port": "context",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "service",
          "port": "principal",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "read",
      "kind": "H05",
      "incidences": [
        {
          "node": "service",
          "port": "dashboard",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "surface",
          "port": "read",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "policy",
      "kind": "H23",
      "incidences": [
        {
          "node": "policy",
          "port": "grant",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "service",
          "port": "policy",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "query",
      "kind": "H05",
      "incidences": [
        {
          "node": "db",
          "port": "query",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "service",
          "port": "storage",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "scope",
      "kind": "H34",
      "incidences": [
        {
          "node": "verify",
          "port": "principalRef",
          "role": "principal",
          "ordinal": 0
        },
        {
          "node": "policy",
          "port": "policyRef",
          "role": "policy",
          "ordinal": 1
        },
        {
          "node": "db",
          "port": "authorityRef",
          "role": "authority",
          "ordinal": 2
        }
      ]
    }
  ]
}
