{
  "id": "type-n01",
  "revision": "1e9696f9a12fd96b41368f388c8b865f4eb6214b6d4ad93bfd5f4278d5816c9b",
  "regions": [
    {
      "id": "server",
      "label": "Server",
      "parent": null
    },
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "posts",
      "label": "Candidate posts",
      "kind": "N22",
      "region": "server",
      "ports": [
        {
          "id": "candidates",
          "profile": "P01",
          "contract": "PostCandidatesV2",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "preferences",
      "label": "Reader preferences",
      "kind": "N21",
      "region": "server",
      "ports": [
        {
          "id": "snapshot",
          "profile": "P01",
          "contract": "PreferenceSnapshotV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "rank",
      "label": "Kotlin feed scorer",
      "kind": "N01",
      "region": "common-logic",
      "ports": [
        {
          "id": "posts",
          "profile": "P01",
          "contract": "PostCandidatesV2",
          "polarity": "Require"
        },
        {
          "id": "preferences",
          "profile": "P01",
          "contract": "PreferenceSnapshotV1",
          "polarity": "Require"
        },
        {
          "id": "ranked",
          "profile": "P01",
          "contract": "RankedPostIdsV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "page",
      "label": "Feed pagination",
      "kind": "N04",
      "region": "common-logic",
      "ports": [
        {
          "id": "ranked",
          "profile": "P01",
          "contract": "RankedPostIdsV1",
          "polarity": "Require"
        },
        {
          "id": "page",
          "profile": "P01",
          "contract": "FeedPageV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "ui",
      "label": "Feed Surface",
      "kind": "N11",
      "region": "mobile",
      "ports": [
        {
          "id": "page",
          "profile": "P01",
          "contract": "FeedPageV1",
          "polarity": "Require"
        },
        {
          "id": "visible",
          "profile": "P04",
          "contract": "PostVisibleEventV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "impression",
      "label": "Impression recorder",
      "kind": "N02",
      "region": "server",
      "ports": [
        {
          "id": "visible",
          "profile": "P04",
          "contract": "PostVisibleEventV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "candidates",
      "kind": "H02",
      "incidences": [
        {
          "node": "posts",
          "port": "candidates",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "rank",
          "port": "posts",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "preferences",
      "kind": "H02",
      "incidences": [
        {
          "node": "preferences",
          "port": "snapshot",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "rank",
          "port": "preferences",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "ranked",
      "kind": "H02",
      "incidences": [
        {
          "node": "rank",
          "port": "ranked",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "page",
          "port": "ranked",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "page",
      "kind": "H02",
      "incidences": [
        {
          "node": "page",
          "port": "page",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "ui",
          "port": "page",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "seen",
      "kind": "H04",
      "incidences": [
        {
          "node": "ui",
          "port": "visible",
          "role": "publisher",
          "ordinal": 0
        },
        {
          "node": "impression",
          "port": "visible",
          "role": "subscriber",
          "ordinal": 0
        }
      ]
    }
  ]
}
