{
  "id": "type-h17",
  "revision": "c6cad3f8712c5a84d034ec300c7008c16af678a5435672ba8630175901789e7e",
  "regions": [
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "external",
      "label": "External",
      "parent": null
    },
    {
      "id": "storage",
      "label": "Storage",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "saga",
      "label": "Order fulfilment saga",
      "kind": "N06",
      "region": "server",
      "ports": [
        {
          "id": "charge",
          "profile": "P03",
          "contract": "PaymentChargeReceiptV1",
          "polarity": "Require"
        },
        {
          "id": "fulfil",
          "profile": "P03",
          "contract": "FulfilmentReceiptV1",
          "polarity": "Require"
        },
        {
          "id": "refund",
          "profile": "P03",
          "contract": "ChargeBoundRefundCommandV1",
          "polarity": "Neutral"
        },
        {
          "id": "record",
          "profile": "P09",
          "contract": "OrderEffectJournalWriteV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "charge",
      "label": "Payment charge adapter",
      "kind": "N19",
      "region": "external",
      "ports": [
        {
          "id": "charge",
          "profile": "P03",
          "contract": "PaymentChargeReceiptV1",
          "polarity": "Offer"
        },
        {
          "id": "receipt",
          "profile": "P03",
          "contract": "ChargeBoundRefundCommandV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "fulfil",
      "label": "Fulfilment adapter",
      "kind": "N19",
      "region": "external",
      "ports": [
        {
          "id": "fulfil",
          "profile": "P03",
          "contract": "FulfilmentReceiptV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "refund",
      "label": "Refund adapter",
      "kind": "N19",
      "region": "external",
      "ports": [
        {
          "id": "refund",
          "profile": "P03",
          "contract": "ChargeBoundRefundCommandV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "ledger",
      "label": "Order effect journal",
      "kind": "N21",
      "region": "storage",
      "ports": [
        {
          "id": "write",
          "profile": "P09",
          "contract": "OrderEffectJournalWriteV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "charge",
      "kind": "H05",
      "incidences": [
        {
          "node": "saga",
          "port": "charge",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "charge",
          "port": "charge",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "fulfil",
      "kind": "H05",
      "incidences": [
        {
          "node": "saga",
          "port": "fulfil",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "fulfil",
          "port": "fulfil",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "compensation",
      "kind": "H17",
      "incidences": [
        {
          "node": "charge",
          "port": "receipt",
          "role": "forward",
          "ordinal": 0
        },
        {
          "node": "refund",
          "port": "refund",
          "role": "compensation",
          "ordinal": 0
        },
        {
          "node": "saga",
          "port": "refund",
          "role": "coordinator",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "record",
      "kind": "H05",
      "incidences": [
        {
          "node": "saga",
          "port": "record",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "ledger",
          "port": "write",
          "role": "callee",
          "ordinal": 0
        }
      ]
    }
  ]
}
