accounts/config/cms.schema.json

159 lines
3.5 KiB
JSON

{
"$id": "https://xcontrol.dev/schemas/cms.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "XControl CMS Configuration",
"type": "object",
"required": [
"templates",
"theme",
"extensions",
"contentSources"
],
"additionalProperties": false,
"properties": {
"templates": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"name",
"entry"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"entry": {
"description": "The relative path to the template entry point.",
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"previewPath": {
"description": "Optional static preview asset path.",
"type": "string"
}
}
}
},
"theme": {
"type": "object",
"required": [
"name",
"version"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string",
"minLength": 1
},
"author": {
"type": "string"
},
"variables": {
"description": "Theme tokens exposed to templates.",
"type": "object",
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
}
}
},
"extensions": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"package"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"package": {
"description": "Resolvable package name or path.",
"type": "string",
"minLength": 1
},
"enabled": {
"type": "boolean",
"default": true
},
"config": {
"type": "object"
}
}
}
},
"contentSources": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"type",
"name",
"options"
],
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": [
"git",
"filesystem",
"api",
"database"
]
},
"name": {
"type": "string",
"minLength": 1
},
"options": {
"description": "Source specific configuration payload.",
"type": "object"
},
"readOnly": {
"type": "boolean",
"default": false
}
}
}
},
"deployment": {
"type": "object",
"additionalProperties": false,
"properties": {
"preview": {
"type": "boolean"
},
"defaultLocale": {
"type": "string"
}
}
},
"$schema": {
"type": "string",
"description": "Optional JSON Schema declaration for tooling support."
}
}
}