{
  "id": "type-n12",
  "revision": "f081f5bb3cd1629620ab54e1a7c187b470ef19aea42753efc5f2abe7c473929b",
  "regions": [
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    },
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "link",
      "label": "Deep-link resolver",
      "kind": "N15",
      "region": "mobile",
      "ports": [
        {
          "id": "payload",
          "profile": "P01",
          "contract": "ConversationRoutePayloadV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "access",
      "label": "Conversation access decision",
      "kind": "N03",
      "region": "common-logic",
      "ports": [
        {
          "id": "payload",
          "profile": "P01",
          "contract": "ConversationRoutePayloadV1",
          "polarity": "Require"
        },
        {
          "id": "signIn",
          "profile": "P11",
          "contract": "SignInRoutePayloadV1",
          "polarity": "Offer"
        },
        {
          "id": "chat",
          "profile": "P11",
          "contract": "ConversationRoutePayloadV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "signin",
      "label": "Sign-in RouteNode",
      "kind": "N12",
      "region": "mobile",
      "ports": [
        {
          "id": "push",
          "profile": "P11",
          "contract": "SignInRoutePayloadV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "chat",
      "label": "Chat RouteNode",
      "kind": "N12",
      "region": "mobile",
      "ports": [
        {
          "id": "push",
          "profile": "P11",
          "contract": "ConversationRoutePayloadV1",
          "polarity": "Require"
        },
        {
          "id": "routeBinding",
          "profile": "P08",
          "contract": "RouteBindingConversationV1",
          "polarity": "Offer"
        },
        {
          "id": "attachment",
          "profile": "P11",
          "contract": "AttachmentPickerPayloadV1",
          "polarity": "Offer"
        },
        {
          "id": "attachmentResult",
          "profile": "P01",
          "contract": "SelectedAttachmentV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "compose",
      "label": "Compose chat binding",
      "kind": "N11",
      "region": "mobile",
      "ports": [
        {
          "id": "routeBinding",
          "profile": "P08",
          "contract": "RouteBindingConversationV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "picker",
      "label": "Attachment RouteNode",
      "kind": "N12",
      "region": "mobile",
      "ports": [
        {
          "id": "push",
          "profile": "P11",
          "contract": "AttachmentPickerPayloadV1",
          "polarity": "Require"
        },
        {
          "id": "return",
          "profile": "P01",
          "contract": "SelectedAttachmentV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "intent",
      "kind": "H02",
      "incidences": [
        {
          "node": "link",
          "port": "payload",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "access",
          "port": "payload",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "denied",
      "kind": "H36",
      "incidences": [
        {
          "node": "access",
          "port": "signIn",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "signin",
          "port": "push",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "allowed",
      "kind": "H36",
      "incidences": [
        {
          "node": "access",
          "port": "chat",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "chat",
          "port": "push",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "render",
      "kind": "H30",
      "incidences": [
        {
          "node": "chat",
          "port": "routeBinding",
          "role": "export",
          "ordinal": 0
        },
        {
          "node": "compose",
          "port": "routeBinding",
          "role": "import",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "attachment",
      "kind": "H36",
      "incidences": [
        {
          "node": "chat",
          "port": "attachment",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "picker",
          "port": "push",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "back-result",
      "kind": "H36",
      "incidences": [
        {
          "node": "picker",
          "port": "return",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "chat",
          "port": "attachmentResult",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
