{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://spec.soustack.org/defs/common.schema.json",
  "title": "Common definitions for Soustack",
  "type": "object",
  "properties": {
    "stackId": {
      "type": "string",
      "anyOf": [
        {
          "enum": [
            "quantified@1",
            "structured@1",
            "timed@1",
            "referenced@1",
            "compute@1",
            "storage@1",
            "dietary@1",
            "substitutions@1",
            "techniques@1",
            "illustrated@1",
            "scaling@1",
            "nutrition@1"
          ]
        },
        {
          "pattern": "^x-[A-Za-z0-9_-]+@[0-9]+$",
          "description": "Extension stacks must use x- prefix and include a major version"
        }
      ]
    },
    "extensionLane": {
      "type": "string",
      "pattern": "^x-[A-Za-z0-9_-]+$"
    },
    "extensionLaneValue": {
      "description": "Accept any JSON value for extension lanes while keeping the top-level property name constrained.",
      "type": ["object", "array", "string", "number", "boolean", "null"]
    },
    "uri": {
      "type": "string",
      "format": "uri"
    }
  },
  "additionalProperties": false
}
