132 lines
3.0 KiB
JSON
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
|
|
}
|