changedInput schema / properties / design / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "barcode": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "marginRightYMm": {
- "default": 100,
- "maximum": 270,
- "minimum": 92,
- "type": "number"
- },
- "payloadTemplate": {
- "maxLength": 512,
- "minLength": 1,
- "type": "string"
- },
- "placement": {
- "default": "infoblock",
- "enum": [
- "infoblock",
- "footer-right",
- "margin-right"
- ],
- "type": "string"
- },
- "sizeMm": {
- "default": 22,
- "maximum": 40,
- "minimum": 12,
- "type": "number"
- },
- "type": {
- "default": "qr",
- "enum": [
- "qr",
- "code128"
- ],
- "type": "string"
- },
- "widthMm": {
- "default": 50,
- "maximum": 90,
- "minimum": 20,
- "type": "number"
- }
- },
- "type": "object"
- },
- "chrome": {
- "additionalProperties": false,
- "properties": {
- "dateLine": {
- "type": "boolean"
- },
- "recipientBlock": {
- "type": "boolean"
- },
- "subjectLine": {
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "continuation": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "headerLine": {
- "default": true,
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "documentMode": {
- "enum": [
- "letter",
- "form"
- ],
- "type": "string"
- },
- "falzmarken": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "falz": {
- "default": true,
- "type": "boolean"
- },
- "lochmarke": {
- "default": true,
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "footer": {
- "additionalProperties": false,
- "properties": {
- "columns": {
- "items": {
- "items": {
- "maxLength": 120,
- "type": "string"
- },
- "maxItems": 8,
- "minItems": 1,
- "type": "array"
- },
- "maxItems": 4,
- "minItems": 1,
- "type": "array"
- },
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "fontSizePt": {
- "default": 7,
- "maximum": 9,
- "minimum": 6,
- "type": "number"
- },
- "scope": {
- "default": "first-page",
- "enum": [
- "first-page",
- "all-letter-pages"
- ],
- "type": "string"
- },
- "topMm": {
- "default": 272,
- "maximum": 285,
- "minimum": 250,
- "type": "number"
- }
- },
- "required": [
- "columns"
- ],
- "type": "object"
- },
- "header": {
- "additionalProperties": false,
- "properties": {
- "heightMm": {
- "maximum": 120,
- "minimum": 5,
- "type": "number"
- },
- "letterheadId": {
- "anyOf": [
- {
- "format": "uuid",
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 170,
- "minimum": 0,
- "type": "number"
- },
- "offsetYMm": {
- "default": 8,
- "maximum": 40,
- "minimum": 0,
- "type": "number"
- },
- "placement": {
- "default": "top",
- "enum": [
- "top",
- "logo-right",
- "full"
- ],
- "type": "string"
- },
- "replaceSenderBlock": {
- "default": false,
- "type": "boolean"
- },
- "widthMm": {
- "default": 165,
- "maximum": 210,
- "minimum": 10,
- "type": "number"
- }
- },
- "type": "object"
- },
- "infoblock": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "fontSizePt": {
- "default": 8,
- "maximum": 10,
- "minimum": 7,
- "type": "number"
- },
- "labelWidthMm": {
- "default": 28,
- "maximum": 40,
- "minimum": 15,
- "type": "number"
- },
- "rows": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "key": {
- "pattern": "^[a-z][a-z0-9_]{0,30}$",
- "type": "string"
- },
- "label": {
- "maxLength": 120,
- "minLength": 1,
- "type": "string"
- },
- "staticValue": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "key",
- "label"
- ],
- "type": "object"
- },
- "maxItems": 12,
- "minItems": 1,
- "type": "array"
- },
- "topMm": {
- "default": 45,
- "maximum": 90,
- "minimum": 32,
- "type": "number"
- },
- "valueWidthMm": {
- "default": 37,
- "maximum": 55,
- "minimum": 20,
- "type": "number"
- },
- "xMm": {
- "default": 125,
- "maximum": 170,
- "minimum": 118,
- "type": "number"
- }
- },
- "required": [
- "rows"
- ],
- "type": "object"
- },
- "marginText": {
- "additionalProperties": false,
- "properties": {
- "fontSizePt": {
- "default": 6,
- "maximum": 9,
- "minimum": 5,
- "type": "number"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 90
- },
- "side": {
- "default": "left",
- "enum": [
- "left",
- "right"
- ],
- "type": "string"
- },
- "text": {
- "maxLength": 160,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "schemaVersion": {
- "const": 1,
- "type": "number"
- }
- },
- "required": [
- "schemaVersion"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Native v2 authoring schema. Standard JSON Schema covers shape, defaults, native enums, asset and box dependencies. Runtime Zod validation remains authoritative for template grammar, duplicate element ids, and arithmetic A4 placement.",
- "properties": {
- "body": {
- "additionalProperties": false,
- "properties": {
- "font": {
- "anyOf": [
- {
- "enum": [
- "serif",
- "humanist-sans",
- "grotesk",
- "mono"
- ],
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "const": "brand.font",
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ]
- },
- "lineHeightPt": {
- "maximum": 30,
- "minimum": 7,
- "type": "number"
- },
- "senderBlockStyle": {
- "default": "inherit",
- "enum": [
- "inherit",
- "compact",
- "hidden"
- ],
- "type": "string"
- },
- "sizePt": {
- "maximum": 18,
- "minimum": 6,
- "type": "number"
- }
- },
- "required": [
- "font",
- "sizePt",
- "lineHeightPt"
- ],
- "type": "object"
- },
- "furniture": {
- "additionalProperties": false,
- "properties": {
- "barcode": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "marginRightYMm": {
- "default": 100,
- "maximum": 270,
- "minimum": 92,
- "type": "number"
- },
- "payloadTemplate": {
- "maxLength": 512,
- "minLength": 1,
- "type": "string"
- },
- "placement": {
- "default": "infoblock",
- "enum": [
- "infoblock",
- "footer-right",
- "margin-right"
- ],
- "type": "string"
- },
- "sizeMm": {
- "default": 22,
- "maximum": 40,
- "minimum": 12,
- "type": "number"
- },
- "type": {
- "default": "qr",
- "enum": [
- "qr",
- "code128"
- ],
- "type": "string"
- },
- "widthMm": {
- "default": 50,
- "maximum": 90,
- "minimum": 20,
- "type": "number"
- }
- },
- "type": "object"
- },
- "chrome": {
- "additionalProperties": false,
- "properties": {
- "dateLine": {
- "type": "boolean"
- },
- "recipientBlock": {
- "type": "boolean"
- },
- "subjectLine": {
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "continuation": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "headerLine": {
- "default": true,
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "documentMode": {
- "enum": [
- "letter",
- "form"
- ],
- "type": "string"
- },
- "falzmarken": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "falz": {
- "default": true,
- "type": "boolean"
- },
- "lochmarke": {
- "default": true,
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "infoblock": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "default": false,
- "type": "boolean"
- },
- "fontSizePt": {
- "default": 8,
- "maximum": 10,
- "minimum": 7,
- "type": "number"
- },
- "labelWidthMm": {
- "default": 28,
- "maximum": 40,
- "minimum": 15,
- "type": "number"
- },
- "rows": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "key": {
- "pattern": "^[a-z][a-z0-9_]{0,30}$",
- "type": "string"
- },
- "label": {
- "maxLength": 120,
- "minLength": 1,
- "type": "string"
- },
- "staticValue": {
- "anyOf": [
- {
- "maxLength": 200,
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "key",
- "label"
- ],
- "type": "object"
- },
- "maxItems": 12,
- "minItems": 1,
- "type": "array"
- },
- "topMm": {
- "default": 45,
- "maximum": 90,
- "minimum": 32,
- "type": "number"
- },
- "valueWidthMm": {
- "default": 37,
- "maximum": 55,
- "minimum": 20,
- "type": "number"
- },
- "xMm": {
- "default": 125,
- "maximum": 170,
- "minimum": 118,
- "type": "number"
- }
- },
- "required": [
- "rows"
- ],
- "type": "object"
- }
- },
- "type": "object"
- },
- "schemaVersion": {
- "const": 2,
- "type": "number"
- },
- "zones": {
- "additionalProperties": false,
- "properties": {
- "continuationHeader": {
- "$ref": "#/$defs/letterDesignV2Zone"
- },
- "footer": {
- "$ref": "#/$defs/letterDesignV2Zone"
- },
- "header": {
- "additionalProperties": false,
- "properties": {
- "elements": {
- "default": [],
- "items": {
- "oneOf": [
- {
- "additionalProperties": false,
- "allOf": [
- {
- "if": {
- "properties": {
- "source": {
- "const": "asset"
- }
- },
- "required": [
- "source"
- ]
- },
- "then": {
- "properties": {
- "assetId": {
- "format": "uuid",
- "type": "string"
- }
- },
- "required": [
- "assetId"
- ]
- }
- }
- ],
- "properties": {
- "anchor": {
- "default": "top-left",
- "enum": [
- "top-left",
- "top-center",
- "top-right",
- "center-left",
- "center",
- "center-right",
- "bottom-left",
- "bottom-center",
- "bottom-right"
- ],
- "type": "string"
- },
- "assetId": {
- "anyOf": [
- {
- "format": "uuid",
- "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "fit": {
- "default": "contain",
- "enum": [
- "contain",
- "cover",
- "stretch"
- ],
- "type": "string"
- },
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "id": {
- "pattern": "^[a-z][a-z0-9_-]{0,63}$",
- "type": "string"
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 210,
- "minimum": -210,
- "type": "number"
- },
- "offsetYMm": {
- "default": 0,
- "maximum": 297,
- "minimum": -297,
- "type": "number"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 0,
- "type": "number"
- },
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 180,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 0
- },
- "source": {
- "enum": [
- "asset",
- "brand.logo",
- "brand.logoDark"
- ],
- "type": "string"
- },
- "type": {
- "const": "image",
- "type": "string"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "zOrder": {
- "default": 0,
- "maximum": 100,
- "minimum": -100,
- "type": "integer"
- }
- },
- "required": [
- "id",
- "widthMm",
- "heightMm",
- "type",
- "source"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "anchor": {
- "default": "top-left",
- "enum": [
- "top-left",
- "top-center",
- "top-right",
- "center-left",
- "center",
- "center-right",
- "bottom-left",
- "bottom-center",
- "bottom-right"
- ],
- "type": "string"
- },
- "contentMode": {
- "default": "template",
- "enum": [
- "template"
- ],
- "type": "string"
- },
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "id": {
- "pattern": "^[a-z][a-z0-9_-]{0,63}$",
- "type": "string"
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 210,
- "minimum": -210,
- "type": "number"
- },
- "offsetYMm": {
- "default": 0,
- "maximum": 297,
- "minimum": -297,
- "type": "number"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 0,
- "type": "number"
- },
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 180,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 0
- },
- "style": {
- "additionalProperties": false,
- "properties": {
- "align": {
- "default": "left",
- "enum": [
- "left",
- "center",
- "right"
- ],
- "type": "string"
- },
- "case": {
- "default": "none",
- "enum": [
- "none",
- "upper",
- "lower",
- "title"
- ],
- "type": "string"
- },
- "color": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "b": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "g": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "r": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "r",
- "g",
- "b"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "enum": [
- "brand.primary",
- "brand.accent",
- "brand.text"
- ],
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ]
- },
- "family": {
- "anyOf": [
- {
- "enum": [
- "serif",
- "humanist-sans",
- "grotesk",
- "mono"
- ],
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "const": "brand.font",
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ]
- },
- "letterSpacing": {
- "default": 0,
- "maximum": 10,
- "minimum": -2,
- "type": "number"
- },
- "lineHeightPt": {
- "maximum": 100,
- "minimum": 5,
- "type": "number"
- },
- "sizePt": {
- "maximum": 72,
- "minimum": 5,
- "type": "number"
- },
- "weight": {
- "default": "regular",
- "enum": [
- "regular",
- "medium",
- "semibold",
- "bold"
- ],
- "type": "string"
- }
- },
- "required": [
- "family",
- "sizePt",
- "lineHeightPt",
- "color"
- ],
- "type": "object"
- },
- "text": {
- "maxLength": 4000,
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "const": "text",
- "type": "string"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "zOrder": {
- "default": 0,
- "maximum": 100,
- "minimum": -100,
- "type": "integer"
- }
- },
- "required": [
- "id",
- "widthMm",
- "heightMm",
- "type",
- "text",
- "style"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "anchor": {
- "default": "top-left",
- "enum": [
- "top-left",
- "top-center",
- "top-right",
- "center-left",
- "center",
- "center-right",
- "bottom-left",
- "bottom-center",
- "bottom-right"
- ],
- "type": "string"
- },
- "color": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "b": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "g": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "r": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "r",
- "g",
- "b"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "enum": [
- "brand.primary",
- "brand.accent",
- "brand.text"
- ],
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ]
- },
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "id": {
- "pattern": "^[a-z][a-z0-9_-]{0,63}$",
- "type": "string"
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 210,
- "minimum": -210,
- "type": "number"
- },
- "offsetYMm": {
- "default": 0,
- "maximum": 297,
- "minimum": -297,
- "type": "number"
- },
- "orientation": {
- "enum": [
- "horizontal",
- "vertical"
- ],
- "type": "string"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 0,
- "type": "number"
- },
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 180,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 0
- },
- "thicknessMm": {
- "maximum": 10,
- "minimum": 0.1,
- "type": "number"
- },
- "type": {
- "const": "rule",
- "type": "string"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "zOrder": {
- "default": 0,
- "maximum": 100,
- "minimum": -100,
- "type": "integer"
- }
- },
- "required": [
- "id",
- "widthMm",
- "heightMm",
- "type",
- "orientation",
- "thicknessMm",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "anyOf": [
- {
- "required": [
- "fillColor"
- ]
- },
- {
- "required": [
- "strokeColor"
- ]
- }
- ],
- "dependentRequired": {
- "strokeWidthMm": [
- "strokeColor"
- ]
- },
- "properties": {
- "anchor": {
- "default": "top-left",
- "enum": [
- "top-left",
- "top-center",
- "top-right",
- "center-left",
- "center",
- "center-right",
- "bottom-left",
- "bottom-center",
- "bottom-right"
- ],
- "type": "string"
- },
- "cornerRadiusMm": {
- "default": 0,
- "maximum": 50,
- "minimum": 0,
- "type": "number"
- },
- "fillColor": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "b": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "g": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "r": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "r",
- "g",
- "b"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "enum": [
- "brand.primary",
- "brand.accent",
- "brand.text"
- ],
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ]
- },
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "id": {
- "pattern": "^[a-z][a-z0-9_-]{0,63}$",
- "type": "string"
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 210,
- "minimum": -210,
- "type": "number"
- },
- "offsetYMm": {
- "default": 0,
- "maximum": 297,
- "minimum": -297,
- "type": "number"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 0,
- "type": "number"
- },
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 180,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 0
- },
- "strokeColor": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "b": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "g": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "r": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "r",
- "g",
- "b"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "enum": [
- "brand.primary",
- "brand.accent",
- "brand.text"
- ],
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ]
- },
- "strokeWidthMm": {
- "maximum": 10,
- "minimum": 0.1,
- "type": "number"
- },
- "type": {
- "const": "box",
- "type": "string"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "zOrder": {
- "default": 0,
- "maximum": 100,
- "minimum": -100,
- "type": "integer"
- }
- },
- "required": [
- "id",
- "widthMm",
- "heightMm",
- "type"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "anchor": {
- "default": "top-left",
- "enum": [
- "top-left",
- "top-center",
- "top-right",
- "center-left",
- "center",
- "center-right",
- "bottom-left",
- "bottom-center",
- "bottom-right"
- ],
- "type": "string"
- },
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "id": {
- "pattern": "^[a-z][a-z0-9_-]{0,63}$",
- "type": "string"
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 210,
- "minimum": -210,
- "type": "number"
- },
- "offsetYMm": {
- "default": 0,
- "maximum": 297,
- "minimum": -297,
- "type": "number"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 0,
- "type": "number"
- },
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 180,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 0
- },
- "type": {
- "const": "spacer",
- "type": "string"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "zOrder": {
- "default": 0,
- "maximum": 100,
- "minimum": -100,
- "type": "integer"
- }
- },
- "required": [
- "id",
- "widthMm",
- "heightMm",
- "type"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "anchor": {
- "default": "top-left",
- "enum": [
- "top-left",
- "top-center",
- "top-right",
- "center-left",
- "center",
- "center-right",
- "bottom-left",
- "bottom-center",
- "bottom-right"
- ],
- "type": "string"
- },
- "backgroundColor": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "b": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "g": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "r": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "r",
- "g",
- "b"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "enum": [
- "brand.primary",
- "brand.accent",
- "brand.text"
- ],
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ],
- "default": {
- "b": 1,
- "g": 1,
- "r": 1
- }
- },
- "foregroundColor": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "b": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "g": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "r": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "r",
- "g",
- "b"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "token": {
- "enum": [
- "brand.primary",
- "brand.accent",
- "brand.text"
- ],
- "type": "string"
- }
- },
- "required": [
- "token"
- ],
- "type": "object"
- }
- ],
- "default": {
- "b": 0,
- "g": 0,
- "r": 0
- }
- },
- "format": {
- "enum": [
- "qr",
- "code128"
- ],
- "type": "string"
- },
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "id": {
- "pattern": "^[a-z][a-z0-9_-]{0,63}$",
- "type": "string"
- },
- "offsetXMm": {
- "default": 0,
- "maximum": 210,
- "minimum": -210,
- "type": "number"
- },
- "offsetYMm": {
- "default": 0,
- "maximum": 297,
- "minimum": -297,
- "type": "number"
- },
- "payloadTemplate": {
- "maxLength": 512,
- "minLength": 1,
- "type": "string"
- },
- "rotationDeg": {
- "anyOf": [
- {
- "const": 0,
- "type": "number"
- },
- {
- "const": 90,
- "type": "number"
- },
- {
- "const": 180,
- "type": "number"
- },
- {
- "const": 270,
- "type": "number"
- }
- ],
- "default": 0
- },
- "type": {
- "const": "barcode",
- "type": "string"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "zOrder": {
- "default": 0,
- "maximum": 100,
- "minimum": -100,
- "type": "integer"
- }
- },
- "required": [
- "id",
- "widthMm",
- "heightMm",
- "type",
- "format",
- "payloadTemplate"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 64,
- "type": "array"
- },
- "reservedBox": {
- "additionalProperties": false,
- "properties": {
- "heightMm": {
- "exclusiveMinimum": 0,
- "maximum": 297,
- "type": "number"
- },
- "widthMm": {
- "exclusiveMinimum": 0,
- "maximum": 210,
- "type": "number"
- },
- "xMm": {
- "maximum": 210,
- "minimum": 0,
- "type": "number"
- },
- "yMm": {
- "maximum": 297,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "xMm",
- "yMm",
- "widthMm",
- "heightMm"
- ],
- "type": "object"
- }
- },
- "required": [
- "reservedBox"
- ],
- "type": "object"
- },
- "sidebar": {
- "$ref": "#/$defs/letterDesignV2Zone"
- },
- "watermark": {
- "$ref": "#/$defs/letterDesignV2Zone"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "schemaVersion",
- "zones",
- "body"
- ],
- "semanticValidation": {
- "authority": "designV2Schema (Zod runtime)",
- "runtimeOnly": [
- "template placeholder grammar",
- "element ids unique across zones",
- "reservedBox xMm + widthMm <= 210 and yMm + heightMm <= 297",
- "anchored element rectangle remains within 210 x 297 mm A4",
- "v1 compatibility payloads are internal migration output and are rejected by native authoring"
- ]
- },
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "barcode": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "marginRightYMm": {
+ "default": 100,
+ "maximum": 270,
+ "minimum": 92,
+ "type": "number"
+ },
+ "payloadTemplate": {
+ "maxLength": 512,
+ "minLength": 1,
+ "type": "string"
+ },
+ "placement": {
+ "default": "infoblock",
+ "enum": [
+ "infoblock",
+ "footer-right",
+ "margin-right"
+ ],
+ "type": "string"
+ },
+ "sizeMm": {
+ "default": 22,
+ "maximum": 40,
+ "minimum": 12,
+ "type": "number"
+ },
+ "type": {
+ "default": "qr",
+ "enum": [
+ "qr",
+ "code128"
+ ],
+ "type": "string"
+ },
+ "widthMm": {
+ "default": 50,
+ "maximum": 90,
+ "minimum": 20,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "chrome": {
+ "additionalProperties": false,
+ "properties": {
+ "dateLine": {
+ "type": "boolean"
+ },
+ "recipientBlock": {
+ "type": "boolean"
+ },
+ "subjectLine": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "continuation": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "headerLine": {
+ "default": true,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "documentMode": {
+ "enum": [
+ "letter",
+ "form"
+ ],
+ "type": "string"
+ },
+ "falzmarken": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "falz": {
+ "default": true,
+ "type": "boolean"
+ },
+ "lochmarke": {
+ "default": true,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "footer": {
+ "additionalProperties": false,
+ "properties": {
+ "columns": {
+ "items": {
+ "items": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "maxItems": 8,
+ "minItems": 1,
+ "type": "array"
+ },
+ "maxItems": 4,
+ "minItems": 1,
+ "type": "array"
+ },
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "fontSizePt": {
+ "default": 7,
+ "maximum": 9,
+ "minimum": 6,
+ "type": "number"
+ },
+ "scope": {
+ "default": "first-page",
+ "enum": [
+ "first-page",
+ "all-letter-pages"
+ ],
+ "type": "string"
+ },
+ "topMm": {
+ "default": 272,
+ "maximum": 285,
+ "minimum": 250,
+ "type": "number"
+ }
+ },
+ "required": [
+ "columns"
+ ],
+ "type": "object"
+ },
+ "header": {
+ "additionalProperties": false,
+ "properties": {
+ "heightMm": {
+ "maximum": 120,
+ "minimum": 5,
+ "type": "number"
+ },
+ "letterheadId": {
+ "anyOf": [
+ {
+ "format": "uuid",
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "offsetXMm": {
+ "default": 0,
+ "maximum": 170,
+ "minimum": 0,
+ "type": "number"
+ },
+ "offsetYMm": {
+ "default": 8,
+ "maximum": 40,
+ "minimum": 0,
+ "type": "number"
+ },
+ "placement": {
+ "default": "top",
+ "enum": [
+ "top",
+ "logo-right",
+ "full"
+ ],
+ "type": "string"
+ },
+ "replaceSenderBlock": {
+ "default": false,
+ "type": "boolean"
+ },
+ "widthMm": {
+ "default": 165,
+ "maximum": 210,
+ "minimum": 10,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "infoblock": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "fontSizePt": {
+ "default": 8,
+ "maximum": 10,
+ "minimum": 7,
+ "type": "number"
+ },
+ "labelWidthMm": {
+ "default": 28,
+ "maximum": 40,
+ "minimum": 15,
+ "type": "number"
+ },
+ "rows": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "pattern": "^[a-z][a-z0-9_]{0,30}$",
+ "type": "string"
+ },
+ "label": {
+ "maxLength": 120,
+ "minLength": 1,
+ "type": "string"
+ },
+ "staticValue": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "label"
+ ],
+ "type": "object"
+ },
+ "maxItems": 12,
+ "minItems": 1,
+ "type": "array"
+ },
+ "topMm": {
+ "default": 45,
+ "maximum": 90,
+ "minimum": 32,
+ "type": "number"
+ },
+ "valueWidthMm": {
+ "default": 37,
+ "maximum": 55,
+ "minimum": 20,
+ "type": "number"
+ },
+ "xMm": {
+ "default": 125,
+ "maximum": 170,
+ "minimum": 118,
+ "type": "number"
+ }
+ },
+ "required": [
+ "rows"
+ ],
+ "type": "object"
+ },
+ "marginText": {
+ "additionalProperties": false,
+ "properties": {
+ "fontSizePt": {
+ "default": 6,
+ "maximum": 9,
+ "minimum": 5,
+ "type": "number"
+ },
+ "rotationDeg": {
+ "anyOf": [
+ {
+ "const": 90,
+ "type": "number"
+ },
+ {
+ "const": 270,
+ "type": "number"
+ }
+ ],
+ "default": 90
+ },
+ "side": {
+ "default": "left",
+ "enum": [
+ "left",
+ "right"
+ ],
+ "type": "string"
+ },
+ "text": {
+ "maxLength": 160,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ },
+ "schemaVersion": {
+ "const": 1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "schemaVersion"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Native v2 authoring schema. Standard JSON Schema covers shape, defaults, native enums, asset and box dependencies. Runtime Zod validation remains authoritative for template grammar, duplicate element ids, and arithmetic A4 placement.",
+ "properties": {
+ "body": {
+ "additionalProperties": false,
+ "properties": {
+ "font": {
+ "anyOf": [
+ {
+ "enum": [
+ "serif",
+ "humanist-sans",
+ "grotesk",
+ "mono"
+ ],
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "token": {
+ "const": "brand.font",
+ "type": "string"
+ }
+ },
+ "required": [
+ "token"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "lineHeightPt": {
+ "maximum": 30,
+ "minimum": 7,
+ "type": "number"
+ },
+ "senderBlockStyle": {
+ "default": "inherit",
+ "enum": [
+ "inherit",
+ "compact",
+ "hidden"
+ ],
+ "type": "string"
+ },
+ "sizePt": {
+ "maximum": 18,
+ "minimum": 6,
+ "type": "number"
+ }
+ },
+ "required": [
+ "font",
+ "sizePt",
+ "lineHeightPt"
+ ],
+ "type": "object"
+ },
+ "furniture": {
+ "additionalProperties": false,
+ "properties": {
+ "barcode": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "marginRightYMm": {
+ "default": 100,
+ "maximum": 270,
+ "minimum": 92,
+ "type": "number"
+ },
+ "payloadTemplate": {
+ "maxLength": 512,
+ "minLength": 1,
+ "type": "string"
+ },
+ "placement": {
+ "default": "infoblock",
+ "enum": [
+ "infoblock",
+ "footer-right",
+ "margin-right"
+ ],
+ "type": "string"
+ },
+ "sizeMm": {
+ "default": 22,
+ "maximum": 40,
+ "minimum": 12,
+ "type": "number"
+ },
+ "type": {
+ "default": "qr",
+ "enum": [
+ "qr",
+ "code128"
+ ],
+ "type": "string"
+ },
+ "widthMm": {
+ "default": 50,
+ "maximum": 90,
+ "minimum": 20,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "chrome": {
+ "additionalProperties": false,
+ "properties": {
+ "dateLine": {
+ "type": "boolean"
+ },
+ "recipientBlock": {
+ "type": "boolean"
+ },
+ "subjectLine": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "continuation": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "headerLine": {
+ "default": true,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "documentMode": {
+ "enum": [
+ "letter",
+ "form"
+ ],
+ "type": "string"
+ },
+ "falzmarken": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "falz": {
+ "default": true,
+ "type": "boolean"
+ },
+ "lochmarke": {
+ "default": true,
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "infoblock": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "default": false,
+ "type": "boolean"
+ },
+ "fontSizePt": {
+ "default": 8,
+ "maximum": 10,
+ "minimum": 7,
+ "type": "number"
+ },
+ "labelWidthMm": {
+ "default": 28,
+ "maximum": 40,
+ "minimum": 15,
+ "type": "number"
+ },
+ "rows": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "pattern": "^[a-z][a-z0-9_]{0,30}$",
+ "type": "string"
+ },
+ "label": {
+ "maxLength": 120,
+ "minLength": 1,
+ "type": "string"
+ },
+ "staticValue": {
+ "anyOf": [
+ {
+ "maxLength": 200,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "key",
+ "label"
+ ],
+ "type": "object"
+ },
+ "maxItems": 12,
+ "minItems": 1,
+ "type": "array"
+ },
+ "topMm": {
+ "default": 45,
+ "maximum": 90,
+ "minimum": 32,
+ "type": "number"
+ },
+ "valueWidthMm": {
+ "default": 37,
+ "maximum": 55,
+ "minimum": 20,
+ "type": "number"
+ },
+ "xMm": {
+ "default": 125,
+ "maximum": 170,
+ "minimum": 118,
+ "type": "number"
+ }
+ },
+ "required": [
+ "rows"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "schemaVersion": {
+ "const": 2,
+ "type": "number"
+ },
+ "zones": {
+ "additionalProperties": false,
+ "properties": {
+ "continuationHeader": {
+ "$ref": "#/$defs/letterDesignV2Zone"
+ },
+ "footer": {
+ "$ref": "#/$defs/letterDesignV2Zone"
+ },
+ "header": {
+ "$ref": "#/$defs/letterDesignV2Zone"
+ },
+ "sidebar": {
+ "$ref": "#/$defs/letterDesignV2Zone"
+ },
+ "watermark": {
+ "$ref": "#/$defs/letterDesignV2Zone"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "schemaVersion",
+ "zones",
+ "body"
+ ],
+ "semanticValidation": {
+ "authority": "designV2Schema (Zod runtime)",
+ "runtimeOnly": [
+ "template placeholder grammar",
+ "element ids unique across zones",
+ "reservedBox xMm + widthMm <= 210 and yMm + heightMm <= 297",
+ "anchored element rectangle remains within 210 x 297 mm A4",
+ "v1 compatibility payloads are internal migration output and are rejected by native authoring"
+ ]
+ },
+ "type": "object"
+ }
+]