Files
ponomar-pwa/scripts/schemas/service-node.schema.json
2026-08-01 02:43:24 +03:00

132 lines
3.0 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Service Node",
"description": "A single node in a service template",
"type": "object",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"enum": [
"TITLE", "SUBTITLE", "GET", "CREATE", "TEXT", "GETID",
"BIBLE", "TIMES", "TONE", "SERVICES", "LANGUAGE"
],
"description": "Node type discriminator"
},
"cmd": {
"type": "string",
"description": "Boolean expression for conditional inclusion"
},
"who": {
"type": "string",
"description": "Speaker identifier (P=Riest, R=Reader, D=Deacon, C=Choir)"
},
"redfirst": {
"type": "boolean",
"description": "Render first letter in red"
},
"newline": {
"type": "boolean",
"description": "Add line break before text"
},
"header": {
"type": "boolean",
"description": "Generate section header"
},
"null": {
"type": "boolean",
"description": "Skip if content is empty"
},
"times": {
"type": "integer",
"minimum": 1,
"description": "Number of times to repeat"
},
"command": {
"type": "string",
"description": "Rubric text command name"
},
"commandB": {
"type": "string",
"description": "Prepend rubric text command name"
}
},
"oneOf": [
{
"properties": {
"type": { "const": "TITLE" },
"value": { "type": "string" },
"source": { "type": "string" },
"comment": { "type": "string" }
},
"required": ["value"]
},
{
"properties": {
"type": { "const": "SUBTITLE" },
"value": { "type": "string" },
"comment": { "type": "string" }
},
"required": ["value"]
},
{
"properties": {
"type": { "const": "GET" },
"file": { "type": "string" }
},
"required": ["file"]
},
{
"properties": {
"type": { "const": "CREATE" },
"what": { "type": "string" }
},
"required": ["what"]
},
{
"properties": {
"type": { "enum": ["TEXT", "text"] },
"what": { "type": "string" },
"value": { "type": "string" }
}
},
{
"properties": {
"type": { "const": "GETID" },
"id": { "type": "string" },
"what": { "type": "string" }
},
"required": ["id", "what"]
},
{
"properties": {
"type": { "const": "BIBLE" },
"verses": { "type": "string" },
"getreading": { "type": "boolean" },
"twostars": { "type": "boolean" }
}
},
{
"properties": {
"type": { "const": "TIMES" }
}
},
{
"properties": {
"type": { "const": "TONE" }
}
},
{
"properties": {
"type": { "const": "SERVICES" }
}
},
{
"properties": {
"type": { "const": "LANGUAGE" }
}
}
],
"additionalProperties": true
}