content: {
    "$id": "https://raw.githubusercontent.com/finos-labs/architecture-as-code/main/calm/draft/2024-03/meta/core.json",
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "defs": {
      "authentication": {
        "enum": [
          "Basic",
          "OAuth2",
          "Kerberos",
          "SPNEGO",
          "Certificate"
        ]
      },
      "composed-of-type": {
        "properties": {
          "container": {
            "type": "string"
          },
          "nodes": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "container",
          "nodes"
        ],
        "type": "object"
      },
      "connects-type": {
        "properties": {
          "destination": {
            "type": "string"
          },
          "source": {
            "type": "string"
          }
        },
        "required": [
          "source",
          "destination"
        ],
        "type": "object"
      },
      "data-classification": {
        "enum": [
          "Public",
          "Confidential",
          "Highly Restricted",
          "MNPI",
          "PII"
        ]
      },
      "deployed-in-type": {
        "properties": {
          "container": {
            "type": "string"
          },
          "nodes": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "type": "object"
      },
      "interacts-type": {
        "properties": {
          "actor": {
            "type": "string"
          },
          "nodes": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "actor",
          "nodes"
        ],
        "type": "object"
      },
      "node": {
        "additionalProperties": true,
        "properties": {
          "data-classification": {
            "$ref": "#/defs/data-classification"
          },
          "description": {
            "type": "string"
          },
          "instance": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "node-type": {
            "$ref": "#/defs/node-type-definition"
          },
          "run-as": {
            "type": "string"
          },
          "unique-id": {
            "type": "string"
          }
        },
        "required": [
          "unique-id",
          "node-type",
          "name",
          "description"
        ],
        "type": "object"
      },
      "node-type-definition": {
        "enum": [
          "actor",
          "system",
          "service",
          "database",
          "internal-network",
          "ldap",
          "webclient"
        ]
      },
      "protocol": {
        "enum": [
          "HTTP",
          "HTTPS",
          "FTP",
          "SFTP",
          "JDBC",
          "WebSocket",
          "SocketIO",
          "LDAP",
          "AMQP",
          "TLS",
          "mTLS",
          "TCP"
        ]
      },
      "relationship": {
        "additionalProperties": true,
        "properties": {
          "authentication": {
            "$ref": "#/defs/authentication"
          },
          "description": {
            "type": "string"
          },
          "protocol": {
            "$ref": "#/defs/protocol"
          },
          "relationship-type": {
            "oneOf": [
              {
                "required": [
                  "deployed-in"
                ]
              },
              {
                "required": [
                  "composed-of"
                ]
              },
              {
                "required": [
                  "interacts"
                ]
              },
              {
                "required": [
                  "connects"
                ]
              }
            ],
            "properties": {
              "composed-of": {
                "$ref": "#/defs/composed-of-type"
              },
              "connects": {
                "$ref": "#/defs/connects-type"
              },
              "deployed-in": {
                "$ref": "#/defs/deployed-in-type"
              },
              "interacts": {
                "$ref": "#/defs/interacts-type"
              }
            },
            "type": "object"
          },
          "unique-id": {
            "type": "string"
          }
        },
        "required": [
          "unique-id",
          "relationship-type"
        ],
        "type": "object"
      }
    },
    "properties": {
      "nodes": {
        "items": {
          "$ref": "#/defs/node"
        },
        "type": "array"
      },
      "relationships": {
        "items": {
          "$ref": "#/defs/relationship"
        },
        "type": "array"
      }
    },
    "title": "Common Architecture Language Model (CALM) Vocab"
  }