{
  "id": "type-p01",
  "revision": "9907b42b7e9578590e7c277b7f7ce2ee2b61e2d65158c0da1ee37ac92b2846df",
  "regions": [
    {
      "id": "client",
      "label": "Client",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "web",
      "label": "Web",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "cart",
      "label": "Cart snapshot",
      "kind": "N21",
      "region": "client",
      "ports": [
        {
          "id": "input",
          "profile": "P01",
          "contract": "QuoteInputSnapshotV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "price",
      "label": "Price snapshot",
      "kind": "N22",
      "region": "server",
      "ports": [
        {
          "id": "input",
          "profile": "P01",
          "contract": "QuoteInputSnapshotV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "tax",
      "label": "Tax policy",
      "kind": "N31",
      "region": "server",
      "ports": [
        {
          "id": "input",
          "profile": "P01",
          "contract": "QuoteInputSnapshotV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "quote",
      "label": "Quote calculation",
      "kind": "N01",
      "region": "common-logic",
      "ports": [
        {
          "id": "input",
          "profile": "P01",
          "contract": "QuoteInputSnapshotV1",
          "polarity": "Require"
        },
        {
          "id": "preview",
          "profile": "P01",
          "contract": "RevisionBoundQuoteV1",
          "polarity": "Offer"
        },
        {
          "id": "submitted",
          "profile": "P01",
          "contract": "RevisionBoundQuoteV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Checkout preview",
      "kind": "N11",
      "region": "web",
      "ports": [
        {
          "id": "quote",
          "profile": "P01",
          "contract": "RevisionBoundQuoteV1",
          "polarity": "Require"
        },
        {
          "id": "submit",
          "profile": "P02",
          "contract": "SubmitQuoteReceiptV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "service",
      "label": "Checkout service",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "quote",
          "profile": "P01",
          "contract": "RevisionBoundQuoteV1",
          "polarity": "Require"
        },
        {
          "id": "submit",
          "profile": "P02",
          "contract": "SubmitQuoteReceiptV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "inputs",
      "kind": "H09",
      "incidences": [
        {
          "node": "cart",
          "port": "input",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "price",
          "port": "input",
          "role": "source",
          "ordinal": 1
        },
        {
          "node": "tax",
          "port": "input",
          "role": "source",
          "ordinal": 2
        },
        {
          "node": "quote",
          "port": "input",
          "role": "result",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "preview",
      "kind": "H02",
      "incidences": [
        {
          "node": "quote",
          "port": "preview",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "quote",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "quote",
      "kind": "H02",
      "incidences": [
        {
          "node": "quote",
          "port": "submitted",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "service",
          "port": "quote",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "submit",
      "kind": "H05",
      "incidences": [
        {
          "node": "ui",
          "port": "submit",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "service",
          "port": "submit",
          "role": "callee",
          "ordinal": 0
        }
      ]
    }
  ]
}
