{
  "id": "type-n19",
  "revision": "ede6175468a9424d439c45caf5a581a338ff213fc559f7b11b9ae569575989c6",
  "regions": [
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "external",
      "label": "External",
      "parent": null
    },
    {
      "id": "operations",
      "label": "Operations",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "events",
      "label": "Committed product event",
      "kind": "N24",
      "region": "server",
      "ports": [
        {
          "id": "command",
          "profile": "P04",
          "contract": "NotificationCommandV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "adapter",
      "label": "Notification provider adapter",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "command",
          "profile": "P04",
          "contract": "NotificationCommandV1",
          "polarity": "Require"
        },
        {
          "id": "send",
          "profile": "P02",
          "contract": "ProviderNotificationReceiptV1",
          "polarity": "Require"
        },
        {
          "id": "retryAt",
          "profile": "P01",
          "contract": "NotificationRetryAtV1",
          "polarity": "Offer"
        },
        {
          "id": "retry",
          "profile": "P15",
          "contract": "RetryNotificationV1",
          "polarity": "Require"
        },
        {
          "id": "failed",
          "profile": "P04",
          "contract": "NotificationFailureV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "provider",
      "label": "External notification provider",
      "kind": "N30",
      "region": "external",
      "ports": [
        {
          "id": "send",
          "profile": "P02",
          "contract": "ProviderNotificationReceiptV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "retry",
      "label": "Bounded retry clock",
      "kind": "N09",
      "region": "server",
      "ports": [
        {
          "id": "schedule",
          "profile": "P01",
          "contract": "NotificationRetryAtV1",
          "polarity": "Require"
        },
        {
          "id": "tick",
          "profile": "P15",
          "contract": "RetryNotificationV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "failed",
      "label": "Permanent failure review",
      "kind": "N20",
      "region": "operations",
      "ports": [
        {
          "id": "review",
          "profile": "P04",
          "contract": "NotificationFailureV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "notify",
      "kind": "H04",
      "incidences": [
        {
          "node": "events",
          "port": "command",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "adapter",
          "port": "command",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "send",
      "kind": "H05",
      "incidences": [
        {
          "node": "adapter",
          "port": "send",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "provider",
          "port": "send",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "retry",
      "kind": "H02",
      "incidences": [
        {
          "node": "adapter",
          "port": "retryAt",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "retry",
          "port": "schedule",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "retry-tick",
      "kind": "H04",
      "incidences": [
        {
          "node": "retry",
          "port": "tick",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "adapter",
          "port": "retry",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "failed",
      "kind": "H04",
      "incidences": [
        {
          "node": "adapter",
          "port": "failed",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "failed",
          "port": "review",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    }
  ]
}
