{
  "id": "type-h08",
  "revision": "44729909989537d4d3fe6515d1c4444fb40215d7afbf705013a65fca9ec968ae",
  "regions": [
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    },
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "push",
      "label": "Server push notifications",
      "kind": "N15",
      "region": "mobile",
      "ports": [
        {
          "id": "item",
          "profile": "P04",
          "contract": "NotificationOccurrenceV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "local",
      "label": "Local reminder source",
      "kind": "N09",
      "region": "mobile",
      "ports": [
        {
          "id": "item",
          "profile": "P04",
          "contract": "NotificationOccurrenceV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "merge",
      "label": "Notification merge",
      "kind": "N07",
      "region": "common-logic",
      "ports": [
        {
          "id": "item",
          "profile": "P04",
          "contract": "NotificationOccurrenceV1",
          "polarity": "Require"
        },
        {
          "id": "append",
          "profile": "P09",
          "contract": "AppendNotificationIfAbsentV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "inbox",
      "label": "Inbox state",
      "kind": "N05",
      "region": "common-logic",
      "ports": [
        {
          "id": "append",
          "profile": "P09",
          "contract": "AppendNotificationIfAbsentV1",
          "polarity": "Offer"
        },
        {
          "id": "state",
          "profile": "P08",
          "contract": "InboxStateV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Inbox Surface",
      "kind": "N11",
      "region": "mobile",
      "ports": [
        {
          "id": "state",
          "profile": "P08",
          "contract": "InboxStateV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "merge",
      "kind": "H08",
      "incidences": [
        {
          "node": "push",
          "port": "item",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "local",
          "port": "item",
          "role": "source",
          "ordinal": 1
        },
        {
          "node": "merge",
          "port": "item",
          "role": "result",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "append",
      "kind": "H05",
      "incidences": [
        {
          "node": "merge",
          "port": "append",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "inbox",
          "port": "append",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "render",
      "kind": "H02",
      "incidences": [
        {
          "node": "inbox",
          "port": "state",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "state",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
