{
  "id": "type-n14",
  "revision": "e39deb4c95f8e34ec9f9de1cae3a37fce6994e96c0f8bf80db0b073acb8b4e1d",
  "regions": [
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "web",
      "label": "Web",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "form",
      "label": "Signup form region",
      "kind": "N14",
      "region": "common-logic",
      "ports": [
        {
          "id": "email",
          "profile": "P01",
          "contract": "EmailCandidateV1",
          "polarity": "Offer"
        },
        {
          "id": "password",
          "profile": "P01",
          "contract": "PasswordCandidateV1",
          "polarity": "Offer"
        },
        {
          "id": "validated",
          "profile": "P01",
          "contract": "SignupFieldValidationV1",
          "polarity": "Require"
        },
        {
          "id": "submit",
          "profile": "P02",
          "contract": "CreateAccountRequestResponseV1",
          "polarity": "Require"
        },
        {
          "id": "state",
          "profile": "P08",
          "contract": "SignupFormStateV1",
          "polarity": "Offer"
        },
        {
          "id": "edit",
          "profile": "P04",
          "contract": "SignupFieldEditV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "email",
      "label": "Email validator",
      "kind": "N01",
      "region": "common-logic",
      "ports": [
        {
          "id": "input",
          "profile": "P01",
          "contract": "EmailCandidateV1",
          "polarity": "Require"
        },
        {
          "id": "validated",
          "profile": "P01",
          "contract": "SignupFieldValidationV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "password",
      "label": "Password validator",
      "kind": "N01",
      "region": "common-logic",
      "ports": [
        {
          "id": "input",
          "profile": "P01",
          "contract": "PasswordCandidateV1",
          "polarity": "Require"
        },
        {
          "id": "validated",
          "profile": "P01",
          "contract": "SignupFieldValidationV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "create",
      "label": "Account creation service",
      "kind": "N19",
      "region": "server",
      "ports": [
        {
          "id": "create",
          "profile": "P02",
          "contract": "CreateAccountRequestResponseV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Signup Surface",
      "kind": "N11",
      "region": "web",
      "ports": [
        {
          "id": "state",
          "profile": "P08",
          "contract": "SignupFormStateV1",
          "polarity": "Require"
        },
        {
          "id": "edit",
          "profile": "P04",
          "contract": "SignupFieldEditV1",
          "polarity": "Offer"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "email",
      "kind": "H02",
      "incidences": [
        {
          "node": "form",
          "port": "email",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "email",
          "port": "input",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "password",
      "kind": "H02",
      "incidences": [
        {
          "node": "form",
          "port": "password",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "password",
          "port": "input",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "valid",
      "kind": "H09",
      "incidences": [
        {
          "node": "email",
          "port": "validated",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "password",
          "port": "validated",
          "role": "source",
          "ordinal": 1
        },
        {
          "node": "form",
          "port": "validated",
          "role": "result",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "submit",
      "kind": "H05",
      "incidences": [
        {
          "node": "form",
          "port": "submit",
          "role": "caller",
          "ordinal": 0
        },
        {
          "node": "create",
          "port": "create",
          "role": "callee",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "errors",
      "kind": "H02",
      "incidences": [
        {
          "node": "form",
          "port": "state",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "state",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "edit",
      "kind": "H04",
      "incidences": [
        {
          "node": "ui",
          "port": "edit",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "form",
          "port": "edit",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    }
  ]
}
