{
  "id": "type-n24",
  "revision": "80137400be06eef7253ab4b1a5ee4fb8af79ea6db2a7021781d4be396602006a",
  "regions": [
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "broker",
      "label": "Broker",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "orders",
      "label": "Order publisher",
      "kind": "N02",
      "region": "server",
      "ports": [
        {
          "id": "publish",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "topic",
      "label": "Order Pub/Sub topic",
      "kind": "N24",
      "region": "broker",
      "ports": [
        {
          "id": "events",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Neutral"
        },
        {
          "id": "billing",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Offer"
        },
        {
          "id": "analytics",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "billing",
      "label": "Billing subscription",
      "kind": "N24",
      "region": "broker",
      "ports": [
        {
          "id": "events",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Neutral"
        },
        {
          "id": "ack",
          "profile": "P03",
          "contract": "BillingSubscriptionAckV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "analytics",
      "label": "Analytics subscription",
      "kind": "N24",
      "region": "broker",
      "ports": [
        {
          "id": "events",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Neutral"
        },
        {
          "id": "ack",
          "profile": "P03",
          "contract": "AnalyticsSubscriptionAckV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "invoice",
      "label": "Invoice worker",
      "kind": "N06",
      "region": "server",
      "ports": [
        {
          "id": "events",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Require"
        },
        {
          "id": "ack",
          "profile": "P03",
          "contract": "BillingSubscriptionAckV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "metrics",
      "label": "Analytics projection",
      "kind": "N22",
      "region": "server",
      "ports": [
        {
          "id": "events",
          "profile": "P04",
          "contract": "OrderPlacedEventV1",
          "polarity": "Require"
        },
        {
          "id": "ack",
          "profile": "P03",
          "contract": "AnalyticsSubscriptionAckV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "publish",
      "kind": "H04",
      "incidences": [
        {
          "node": "orders",
          "port": "publish",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "topic",
          "port": "events",
          "role": "broker",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "billing",
      "kind": "H04",
      "incidences": [
        {
          "node": "topic",
          "port": "billing",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "billing",
          "port": "events",
          "role": "subscription",
          "ordinal": 0
        },
        {
          "node": "invoice",
          "port": "events",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "analytics",
      "kind": "H04",
      "incidences": [
        {
          "node": "topic",
          "port": "analytics",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "analytics",
          "port": "events",
          "role": "subscription",
          "ordinal": 0
        },
        {
          "node": "metrics",
          "port": "events",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "bill-ack",
      "kind": "H05",
      "incidences": [
        {
          "node": "invoice",
          "port": "ack",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "billing",
          "port": "ack",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "analytics-ack",
      "kind": "H05",
      "incidences": [
        {
          "node": "metrics",
          "port": "ack",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "analytics",
          "port": "ack",
          "role": "callee",
          "ordinal": 0
        }
      ]
    }
  ]
}
