{
  "id": "type-h19",
  "revision": "ec15b1aaf5f9698bf9f572d0e409877f637c42de245729467458c5b37a01a2a2",
  "regions": [
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    },
    {
      "id": "boundary",
      "label": "Boundary",
      "parent": null
    },
    {
      "id": "native",
      "label": "Native",
      "parent": null
    },
    {
      "id": "device-storage",
      "label": "Device storage",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "scope",
      "label": "Conversation lifetime owner",
      "kind": "N10",
      "region": "mobile",
      "ports": [
        {
          "id": "resources",
          "profile": "P21",
          "contract": "ConversationResourceOwnershipV1",
          "polarity": "Offer"
        },
        {
          "id": "drain",
          "profile": "P14",
          "contract": "ConversationExitV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "subscription",
      "label": "Message subscription",
      "kind": "N15",
      "region": "boundary",
      "ports": [
        {
          "id": "scope",
          "profile": "P21",
          "contract": "ConversationResourceOwnershipV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "decoder",
      "label": "Native decoder handle",
      "kind": "N16",
      "region": "native",
      "ports": [
        {
          "id": "scope",
          "profile": "P21",
          "contract": "ConversationResourceOwnershipV1",
          "polarity": "Require"
        },
        {
          "id": "view",
          "profile": "P17",
          "contract": "BorrowedAttachmentViewV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "attachment",
      "label": "Attachment read lease",
      "kind": "N26",
      "region": "device-storage",
      "ports": [
        {
          "id": "scope",
          "profile": "P21",
          "contract": "ConversationResourceOwnershipV1",
          "polarity": "Require"
        },
        {
          "id": "view",
          "profile": "P17",
          "contract": "BorrowedAttachmentViewV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "route",
      "label": "Conversation RouteNode",
      "kind": "N12",
      "region": "mobile",
      "ports": [
        {
          "id": "leave",
          "profile": "P14",
          "contract": "ConversationExitV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "ownership",
      "kind": "H19",
      "incidences": [
        {
          "node": "scope",
          "port": "resources",
          "role": "owner",
          "ordinal": 0
        },
        {
          "node": "subscription",
          "port": "scope",
          "role": "resource",
          "ordinal": 0
        },
        {
          "node": "decoder",
          "port": "scope",
          "role": "resource",
          "ordinal": 1
        },
        {
          "node": "attachment",
          "port": "scope",
          "role": "resource",
          "ordinal": 2
        }
      ]
    },
    {
      "id": "leave",
      "kind": "H03",
      "incidences": [
        {
          "node": "route",
          "port": "leave",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "scope",
          "port": "drain",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "bytes",
      "kind": "H02",
      "incidences": [
        {
          "node": "attachment",
          "port": "view",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "decoder",
          "port": "view",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
