{
  "id": "type-p02",
  "revision": "3b7e095abbdb6b97167f03183f87d41a12fbb43cb3f8a86e57f7b1d8b7da56b6",
  "regions": [
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    },
    {
      "id": "boundary",
      "label": "Boundary",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "storage",
      "label": "Storage",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "ui",
      "label": "Chat send Surface",
      "kind": "N11",
      "region": "mobile",
      "ports": [
        {
          "id": "send",
          "profile": "P02",
          "contract": "SendMessageRequestResponseV1",
          "polarity": "Require"
        },
        {
          "id": "state",
          "profile": "P08",
          "contract": "SendCommittedRejectedUnknownV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "client",
      "label": "MessagingService client",
      "kind": "N19",
      "region": "mobile",
      "ports": [
        {
          "id": "send",
          "profile": "P02",
          "contract": "SendMessageRequestResponseV1",
          "polarity": "Offer"
        },
        {
          "id": "http",
          "profile": "P02",
          "contract": "SendMessageRequestResponseV1",
          "polarity": "Require"
        },
        {
          "id": "state",
          "profile": "P08",
          "contract": "SendCommittedRejectedUnknownV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "http",
      "label": "HTTP adapter",
      "kind": "N15",
      "region": "boundary",
      "ports": [
        {
          "id": "request",
          "profile": "P02",
          "contract": "SendMessageRequestResponseV1",
          "polarity": "Offer"
        },
        {
          "id": "handler",
          "profile": "P02",
          "contract": "SendMessageRequestResponseV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "server",
      "label": "Messaging handler",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "send",
          "profile": "P02",
          "contract": "SendMessageRequestResponseV1",
          "polarity": "Offer"
        },
        {
          "id": "grant",
          "profile": "P20",
          "contract": "ConversationSendGrantV1",
          "polarity": "Require"
        },
        {
          "id": "persist",
          "profile": "P02",
          "contract": "AppendMessageReceiptV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "auth",
      "label": "Conversation policy",
      "kind": "N33",
      "region": "server",
      "ports": [
        {
          "id": "grant",
          "profile": "P20",
          "contract": "ConversationSendGrantV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "store",
      "label": "Message authority",
      "kind": "N21",
      "region": "storage",
      "ports": [
        {
          "id": "append",
          "profile": "P02",
          "contract": "AppendMessageReceiptV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "send",
      "kind": "H05",
      "incidences": [
        {
          "node": "ui",
          "port": "send",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "client",
          "port": "send",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "transport",
      "kind": "H05",
      "incidences": [
        {
          "node": "client",
          "port": "http",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "http",
          "port": "request",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "handler",
      "kind": "H01",
      "incidences": [
        {
          "node": "server",
          "port": "send",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "http",
          "port": "handler",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "grant",
      "kind": "H23",
      "incidences": [
        {
          "node": "auth",
          "port": "grant",
          "role": "principal",
          "ordinal": 0
        },
        {
          "node": "server",
          "port": "grant",
          "role": "resource",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "persist",
      "kind": "H05",
      "incidences": [
        {
          "node": "server",
          "port": "persist",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "store",
          "port": "append",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "state",
      "kind": "H02",
      "incidences": [
        {
          "node": "client",
          "port": "state",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "state",
          "role": "target",
          "ordinal": 0
        }
      ]
    }
  ]
}
