{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Ticket Layout", "description": "Dynamic elements for a PDF layout", "type": "array", "items": { "type": "object", "description": "Layout object", "oneOf": [ { "required": [ "type", "left", "bottom", "size" ], "properties": { "type": { "type": "string", "const": "barcodearea" }, "page": { "description": "Page number this will be shown on, defaults to 1.", "type": "number" }, "left": { "description": "Position of the element on the x axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "bottom": { "description": "Position of the element on the y axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "content": { "description": "Name of a variable to use. The available values depend on event configuration and installed plugins. Defaults to 'secret'.", "type": "string" }, "text": { "description": "Custom text. Only used when 'content' is set to 'other'.", "type": "string" }, "text_i18n": { "description": "Custom text in multiple languages. Only used when 'content' is set to 'other_i18n'.", "type": "object", "patternProperties": { "[a-zA-Z-]+": { "type": "string" } }, "additionalProperties": false }, "size": { "description": "Size of the barcode in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "nowhitespace": { "description": "Whether a barcode should be rendered without margins. Only used for type 'barcodearea'.", "type": "boolean" }, "color": { "description": "QR color as a tuple of three integers in the 0-255 range and one float in the 0-1 range. The last value (alpha) is ignored by the current implementation but might be used in the future.", "type": "array", "items": { "type": "number", "minimum": 0, "maximum": 255 }, "minItems": 3, "maxItems": 4 } }, "additionalProperties": false }, { "required": [ "type", "left", "bottom", "content", "width", "height" ], "properties": { "type": { "type": "string", "const": "imagearea" }, "page": { "description": "Page number this will be shown on, defaults to 1.", "type": "number" }, "left": { "description": "Position of the element on the x axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "bottom": { "description": "Position of the element on the y axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "content": { "description": "Name of a variable to use. The available values depend on event configuration and installed plugins.", "type": "string" }, "width": { "description": "Width of the element in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "height": { "description": "Height of the element in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] } }, "additionalProperties": false }, { "required": [ "type", "left", "bottom", "content", "width", "height", "fontsize", "fontfamily", "bold", "italic", "align", "verticalalign", "color" ], "properties": { "type": { "type": "string", "const": "textcontainer" }, "page": { "description": "Page number this will be shown on, defaults to 1.", "type": "number" }, "left": { "description": "Position of the element on the x axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "bottom": { "description": "Position of the element on the y axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "width": { "description": "Width of the element in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "height": { "description": "Width of the element in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "content": { "description": "Name of a variable to use. The available values depend on event configuration and installed plugins.", "type": "string" }, "text": { "description": "Custom text. Only used when 'content' is set to 'other'.", "type": "string" }, "text_i18n": { "description": "Custom text in multiple languages. Only used when 'content' is set to 'other_i18n'.", "type": "object", "patternProperties": { "[a-zA-Z-]+": { "type": "string" } }, "additionalProperties": false }, "locale": { "description": "Locale to render the text in.", "type": ["string", "null"], "pattern": "[a-zA-Z-]*" }, "fontsize": { "description": "Font size", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "lineheight": { "description": "Line height", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "fontfamily": { "description": "Font family. The available values depend on installed plugins.", "type": "string" }, "bold": { "description": "Use bold font variant.", "type": "boolean" }, "italic": { "description": "Use italic font variant.", "type": "boolean" }, "autoresize": { "description": "Auto-resize font to fit box.", "type": "boolean" }, "splitlongwords": { "description": "Indicator for the box fitting algorithm whether long words are allowed to be broken in parts.", "type": "boolean" }, "align": { "description": "Horizontal text alignment.", "type": "string", "enum": [ "left", "center", "right" ] }, "verticalalign": { "description": "Vertical text alignment.", "type": "string", "enum": [ "top", "middle", "bottom" ] }, "color": { "description": "Text color as a tuple of three integers in the 0-255 range and one float in the 0-1 range. The last value (alpha) is ignored by the current implementation but might be used in the future.", "type": "array", "items": { "type": "number", "minimum": 0, "maximum": 255 }, "minItems": 3, "maxItems": 4 }, "rotation": { "description": "Rotation in degrees.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] } }, "additionalProperties": false }, { "required": [ "type", "left", "bottom", "content", "width", "fontsize", "fontfamily", "bold", "italic", "align", "color" ], "properties": { "type": { "type": "string", "const": "textarea" }, "page": { "description": "Page number this will be shown on, defaults to 1.", "type": "number" }, "left": { "description": "Position of the element on the x axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "bottom": { "description": "Position of the element on the y axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "width": { "description": "Width of the element in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "content": { "description": "Name of a variable to use. The available values depend on event configuration and installed plugins.", "type": "string" }, "text": { "description": "Custom text. Only used when 'content' is set to 'other'.", "type": "string" }, "text_i18n": { "description": "Custom text in multiple languages. Only used when 'content' is set to 'other_i18n'.", "type": "object", "patternProperties": { "[a-zA-Z-]+": { "type": "string" } }, "additionalProperties": false }, "locale": { "description": "Locale to render the text in.", "type": ["string", "null"], "pattern": "[a-zA-Z-]*" }, "fontsize": { "description": "Font size", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "lineheight": { "description": "Line height", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "fontfamily": { "description": "Font family. The available values depend on installed plugins.", "type": "string" }, "bold": { "description": "Use bold font variant.", "type": "boolean" }, "italic": { "description": "Use italic font variant.", "type": "boolean" }, "align": { "description": "Text alignment.", "type": "string", "enum": [ "left", "center", "right" ] }, "color": { "description": "Text color as a tuple of three integers in the 0-255 range and one float in the 0-1 range. The last value (alpha) is ignored by the current implementation but might be used in the future.", "type": "array", "items": { "type": "number", "minimum": 0, "maximum": 255 }, "minItems": 3, "maxItems": 4 }, "downward": { "description": "Downward rendering of text (recommended for new layouts), but default is false for backwards-compatibility.", "type": "boolean" }, "rotation": { "description": "Rotation in degrees.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] } }, "additionalProperties": false }, { "required": [ "type", "left", "bottom", "content", "size" ], "properties": { "type": { "type": "string", "const": "poweredby" }, "page": { "description": "Page number this will be shown on, defaults to 1.", "type": "number" }, "left": { "description": "Position of the element on the x axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "bottom": { "description": "Position of the element on the y axis in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] }, "content": { "description": "Name of a style to use. The available values currently are 'dark' and 'white'.", "type": "string", "enum": [ "dark", "white" ] }, "size": { "description": "Size of the logo in millimeters.", "oneOf": [ { "type": "number" }, { "type": "string", "pattern": "^-?[0-9]+(\\.[0-9]+)?$" } ] } }, "additionalProperties": false } ] } }