{
  "id": "type-p03",
  "revision": "a791f9e31c9171f917629e3b1fb4ec0f764bcaff468718e7d951db9bbabd50b3",
  "regions": [
    {
      "id": "web",
      "label": "Web",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "broker",
      "label": "Broker",
      "parent": null
    },
    {
      "id": "storage",
      "label": "Storage",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "ui",
      "label": "Export Surface",
      "kind": "N11",
      "region": "web",
      "ports": [
        {
          "id": "submit",
          "profile": "P03",
          "contract": "ExportCommandStageReceiptV1",
          "polarity": "Require"
        },
        {
          "id": "status",
          "profile": "P02",
          "contract": "ExportStatusReadV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "jobs",
      "label": "Export job authority",
      "kind": "N21",
      "region": "server",
      "ports": [
        {
          "id": "submit",
          "profile": "P03",
          "contract": "ExportCommandStageReceiptV1",
          "polarity": "Offer"
        },
        {
          "id": "ready",
          "profile": "P04",
          "contract": "ExportJobReadyV1",
          "polarity": "Offer"
        },
        {
          "id": "complete",
          "profile": "P09",
          "contract": "CompleteExportAtVersionV1",
          "polarity": "Offer"
        },
        {
          "id": "status",
          "profile": "P02",
          "contract": "ExportStatusReadV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "queue",
      "label": "Export dispatch queue",
      "kind": "N24",
      "region": "broker",
      "ports": [
        {
          "id": "ready",
          "profile": "P04",
          "contract": "ExportJobReadyV1",
          "polarity": "Require"
        },
        {
          "id": "work",
          "profile": "P04",
          "contract": "ExportJobReadyV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "worker",
      "label": "Export worker",
      "kind": "N06",
      "region": "server",
      "ports": [
        {
          "id": "start",
          "profile": "P04",
          "contract": "ExportJobReadyV1",
          "polarity": "Require"
        },
        {
          "id": "write",
          "profile": "P02",
          "contract": "PutExportDigestReceiptV1",
          "polarity": "Require"
        },
        {
          "id": "complete",
          "profile": "P09",
          "contract": "CompleteExportAtVersionV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "objects",
      "label": "Export object store",
      "kind": "N26",
      "region": "storage",
      "ports": [
        {
          "id": "put",
          "profile": "P02",
          "contract": "PutExportDigestReceiptV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "submit",
      "kind": "H05",
      "incidences": [
        {
          "node": "ui",
          "port": "submit",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "jobs",
          "port": "submit",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "dispatch",
      "kind": "H04",
      "incidences": [
        {
          "node": "jobs",
          "port": "ready",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "queue",
          "port": "ready",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "work",
      "kind": "H04",
      "incidences": [
        {
          "node": "queue",
          "port": "work",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "worker",
          "port": "start",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "write",
      "kind": "H05",
      "incidences": [
        {
          "node": "worker",
          "port": "write",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "objects",
          "port": "put",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "complete",
      "kind": "H05",
      "incidences": [
        {
          "node": "worker",
          "port": "complete",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "jobs",
          "port": "complete",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "status",
      "kind": "H05",
      "incidences": [
        {
          "node": "ui",
          "port": "status",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "jobs",
          "port": "status",
          "role": "callee",
          "ordinal": 0
        }
      ]
    }
  ]
}
