{
  "$id": "https://schema.workspec.io/v1alpha1/c4/container.schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "description": "The shared container/component/database/queue element shape.",
  "properties": {
    "description": {
      "description": "What this element does and why it exists.",
      "minLength": 1,
      "type": "string"
    },
    "links": {
      "description": "Cross-references to other artifacts or docs: exactly one {<linkType>: <pathRef>} pair per entry, plus an optional cardinality key ({from, to, label?}). Path refs must start with \"~/\" or \"@workspace/\".",
      "items": {
        "additionalProperties": {},
        "propertyNames": {
          "description": "The link type, e.g. \"adr\", \"runbook\" — or \"cardinality\" for the optional cardinality key.",
          "type": "string"
        },
        "type": "object"
      },
      "type": "array"
    },
    "source": {
      "description": "Freeform provenance note: how or where this artifact was sourced from.",
      "type": "string"
    },
    "tags": {
      "description": "Free-text labels for filtering and grouping.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "technology": {
      "description": "Implementation technology, e.g. \"PostgreSQL\", \"Node.js\".",
      "type": "string"
    },
    "title": {
      "description": "Human-readable name of the element.",
      "type": "string"
    },
    "type": {
      "description": "The element kind: \"container\", \"component\", \"database\", or \"queue\".",
      "type": "string"
    }
  },
  "required": [
    "type",
    "title",
    "description"
  ],
  "title": "WorkSpec C4 Container (v1alpha1)",
  "type": "object"
}
