{
  "id": "capability-services",
  "revision": "b4bd5132161b90f0191449ba3e53c883ddb5a7230646a82d03be964451d9ca6b",
  "regions": [
    {
      "id": "control",
      "label": "Control plane"
    },
    {
      "id": "data",
      "label": "Data plane"
    }
  ],
  "nodes": [
    {
      "id": "client",
      "label": "Typed client logic",
      "kind": "N02",
      "region": "control",
      "ports": [
        {
          "id": "primary",
          "profile": "P02",
          "contract": "SearchV1",
          "polarity": "Require"
        },
        {
          "id": "fallback",
          "profile": "P02",
          "contract": "SearchV1",
          "polarity": "Require"
        },
        {
          "id": "budget",
          "profile": "P08",
          "contract": "CallBudgetV1",
          "polarity": "Require"
        },
        {
          "id": "authority",
          "profile": "P20",
          "contract": "ServiceGrantV1",
          "polarity": "Require"
        },
        {
          "id": "selector",
          "profile": "P24",
          "contract": "SelectorRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "primary",
      "label": "Primary service",
      "kind": "N19",
      "region": "data",
      "ports": [
        {
          "id": "api",
          "profile": "P02",
          "contract": "SearchV1",
          "polarity": "Offer"
        },
        {
          "id": "profile",
          "profile": "P24",
          "contract": "ServiceProfileV1",
          "polarity": "Neutral"
        },
        {
          "id": "implementation",
          "profile": "P24",
          "contract": "ImplementationRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "fallback",
      "label": "Qualified fallback",
      "kind": "N19",
      "region": "data",
      "ports": [
        {
          "id": "api",
          "profile": "P02",
          "contract": "SearchV1",
          "polarity": "Offer"
        },
        {
          "id": "profile",
          "profile": "P24",
          "contract": "ServiceProfileV1",
          "polarity": "Neutral"
        },
        {
          "id": "implementation",
          "profile": "P24",
          "contract": "ImplementationRefV1",
          "polarity": "Neutral"
        }
      ]
    },
    {
      "id": "breaker",
      "label": "Circuit / budget state",
      "kind": "N05",
      "region": "control",
      "ports": [
        {
          "id": "budget",
          "profile": "P08",
          "contract": "CallBudgetV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "policy",
      "label": "Invocation policy",
      "kind": "N33",
      "region": "control",
      "ports": [
        {
          "id": "grant",
          "profile": "P20",
          "contract": "ServiceGrantV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "schema",
      "label": "Versioned service contract",
      "kind": "N31",
      "region": "control",
      "ports": [
        {
          "id": "contract",
          "profile": "P24",
          "contract": "ContractRefV1",
          "polarity": "Neutral"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "primary",
      "kind": "H05",
      "incidences": [
        {
          "node": "primary",
          "port": "api",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "client",
          "port": "primary",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "fallback",
      "kind": "H05",
      "incidences": [
        {
          "node": "fallback",
          "port": "api",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "client",
          "port": "fallback",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "budget",
      "kind": "H02",
      "incidences": [
        {
          "node": "breaker",
          "port": "budget",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "client",
          "port": "budget",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "grant",
      "kind": "H23",
      "incidences": [
        {
          "node": "policy",
          "port": "grant",
          "role": "provider",
          "ordinal": 0
        },
        {
          "node": "client",
          "port": "authority",
          "role": "consumer",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "preference",
      "kind": "H33",
      "incidences": [
        {
          "node": "primary",
          "port": "profile",
          "role": "preferred",
          "ordinal": 0
        },
        {
          "node": "fallback",
          "port": "profile",
          "role": "fallback",
          "ordinal": 1
        },
        {
          "node": "client",
          "port": "selector",
          "role": "selector",
          "ordinal": 2
        }
      ]
    },
    {
      "id": "contract",
      "kind": "H25",
      "incidences": [
        {
          "node": "schema",
          "port": "contract",
          "role": "contract",
          "ordinal": 0
        },
        {
          "node": "primary",
          "port": "implementation",
          "role": "implementation",
          "ordinal": 1
        },
        {
          "node": "fallback",
          "port": "implementation",
          "role": "implementation",
          "ordinal": 2
        }
      ]
    }
  ]
}
