changedInput schema / properties / blocks / items / oneOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "level": {
- "enum": [
- 1,
- 2,
- 3
- ],
- "type": "integer"
- },
- "text": {
- "maxLength": 500,
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "const": "heading"
- }
- },
- "required": [
- "type",
- "text",
- "level"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "text": {
- "description": "Paragraph text. Embedded newlines ('\\n') are automatically split into separate paragraphs — no need to pre-split; never emit a literal newline expecting a soft line break.",
- "maxLength": 50000,
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "const": "paragraph"
- }
- },
- "required": [
- "type",
- "text"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "items": {
- "description": "List items. A string is a leaf; an object { text, items } nests a sub-list (bullets/numbers indent; numbered sub-lists restart at 1).",
- "items": {
- "oneOf": [
- {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "items": {
- "items": {
- "oneOf": [
- {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "items": {
- "items": {
- "oneOf": [
- {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "items": {
- "items": {
- "oneOf": [
- {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "items": {
- "items": {
- "oneOf": [
- {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "items": {
- "items": {
- "oneOf": [
- {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- },
- {
- "additionalProperties": false,
- "properties": {
- "text": {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- },
- "text": {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- },
- "text": {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- },
- "text": {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- },
- "text": {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- },
- "text": {
- "maxLength": 1000,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- }
- ]
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- },
- "style": {
- "default": "bullet",
- "enum": [
- "bullet",
- "numbered"
- ],
- "type": "string"
- },
- "type": {
- "const": "list"
- }
- },
- "required": [
- "type",
- "items"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "type": {
- "const": "pageBreak"
- }
- },
- "required": [
- "type"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "height": {
- "maximum": 500,
- "minimum": 1,
- "type": "number"
- },
- "type": {
- "const": "spacer"
- }
- },
- "required": [
- "type",
- "height"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Native vector chart (pdfnative v1.6.0) — bar / horizontal-bar / line / pie / donut, rendered as pure PDF path operators.",
- "properties": {
- "align": {
- "description": "Horizontal alignment within the content width. Default 'left'.",
- "enum": [
- "left",
- "center",
- "right"
- ],
- "type": "string"
- },
- "altText": {
- "description": "Alt text for the tagged-PDF /Figure /Alt. Auto-generated when omitted.",
- "maxLength": 500,
- "type": "string"
- },
- "axis": {
- "additionalProperties": false,
- "description": "Value-axis options (bar/line only).",
- "properties": {
- "grid": {
- "description": "Draw horizontal gridlines.",
- "type": "boolean"
- },
- "ticks": {
- "description": "Target tick count (nice 1/2/5×10ⁿ steps).",
- "maximum": 20,
- "minimum": 2,
- "type": "integer"
- },
- "yMax": {
- "description": "Force the axis maximum (values are clamped to the plot band).",
- "type": "number"
- },
- "yMin": {
- "description": "Force the axis minimum (values are clamped to the plot band).",
- "type": "number"
- }
- },
- "type": "object"
- },
- "categories": {
- "description": "Category / slice labels (x-axis). Defaults to 1-based indices when omitted.",
- "items": {
- "maxLength": 200,
- "type": "string"
- },
- "maxItems": 1000,
- "type": "array"
- },
- "chartType": {
- "description": "Chart kind. 'pie'/'donut' use exactly one series; 'bar'/'barH'/'line' support multiple series.",
- "enum": [
- "bar",
- "barH",
- "line",
- "pie",
- "donut"
- ],
- "type": "string"
- },
- "colors": {
- "description": "Palette override (per-series for bar/line, per-slice for pie/donut).",
- "items": {
- "description": "CSS-style hex colour, e.g. \"#3366cc\".",
- "pattern": "^#?[0-9a-fA-F]{6}$",
- "type": "string"
- },
- "maxItems": 50,
- "type": "array"
- },
- "height": {
- "description": "Plot-area height in points. Default 240.",
- "maximum": 2000,
- "minimum": 50,
- "type": "number"
- },
- "legend": {
- "description": "Legend placement. Defaults to 'bottom' for multi-series/pie, else 'none'.",
- "enum": [
- "bottom",
- "none"
- ],
- "type": "string"
- },
- "markers": {
- "description": "Draw point markers on line series. Default false.",
- "type": "boolean"
- },
- "series": {
- "description": "Data series. Pie/donut charts use exactly one series (each value becomes a slice).",
- "items": {
- "additionalProperties": false,
- "properties": {
- "color": {
- "description": "CSS-style hex colour, e.g. \"#3366cc\".",
- "pattern": "^#?[0-9a-fA-F]{6}$",
- "type": "string"
- },
- "label": {
- "description": "Series label (shown in the legend).",
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "values": {
- "description": "Numeric values, one per category. Negative values are supported for bar/line.",
- "items": {
- "type": "number"
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "label",
- "values"
- ],
- "type": "object"
- },
- "maxItems": 50,
- "minItems": 1,
- "type": "array"
- },
- "title": {
- "description": "Chart title rendered above the plot.",
- "maxLength": 200,
- "type": "string"
- },
- "type": {
- "const": "chart"
- },
- "width": {
- "description": "Plot width in points (clamped to content width). Default 460.",
- "maximum": 2000,
- "minimum": 50,
- "type": "number"
- }
- },
- "required": [
- "type",
- "chartType",
- "series"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "level": {
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "type": "integer"
+ },
+ "text": {
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": {
+ "const": "heading"
+ }
+ },
+ "required": [
+ "type",
+ "text",
+ "level"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "text": {
+ "description": "Paragraph text. Embedded newlines ('\\n') are automatically split into separate paragraphs — no need to pre-split; never emit a literal newline expecting a soft line break.",
+ "maxLength": 50000,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": {
+ "const": "paragraph"
+ }
+ },
+ "required": [
+ "type",
+ "text"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "description": "List items. A string is a leaf; an object { text, items } nests a sub-list (bullets/numbers indent; numbered sub-lists restart at 1).",
+ "items": {
+ "oneOf": [
+ {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "items": {
+ "oneOf": [
+ {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "items": {
+ "oneOf": [
+ {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "items": {
+ "oneOf": [
+ {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "items": {
+ "oneOf": [
+ {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "items": {
+ "items": {
+ "oneOf": [
+ {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "text": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "text": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "text": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "text": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "text": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "text": {
+ "maxLength": 1000,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "style": {
+ "default": "bullet",
+ "enum": [
+ "bullet",
+ "numbered"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "const": "list"
+ }
+ },
+ "required": [
+ "type",
+ "items"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "const": "pageBreak"
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "height": {
+ "maximum": 500,
+ "minimum": 1,
+ "type": "number"
+ },
+ "type": {
+ "const": "spacer"
+ }
+ },
+ "required": [
+ "type",
+ "height"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Native vector chart rendered as pure PDF path operators — bar / horizontal-bar / stacked-bar / line / area / scatter / pie / donut (pdfnative 1.7 charts v2: time and log axes, data labels, secondary axis, legends). Same body as add_chart.",
+ "properties": {
+ "align": {
+ "description": "Horizontal alignment within the content width. Default 'left'.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "type": "string"
+ },
+ "altText": {
+ "description": "Alt text for the tagged-PDF /Figure /Alt. Auto-generated when omitted.",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "axis": {
+ "additionalProperties": false,
+ "description": "Value-axis options (bar/line only).",
+ "properties": {
+ "grid": {
+ "description": "Draw horizontal gridlines.",
+ "type": "boolean"
+ },
+ "scale": {
+ "description": "Value-axis scale. 'log' requires strictly positive values and is not available for stacked charts.",
+ "enum": [
+ "linear",
+ "log"
+ ],
+ "type": "string"
+ },
+ "ticks": {
+ "description": "Target tick count (nice 1/2/5×10ⁿ steps).",
+ "maximum": 20,
+ "minimum": 2,
+ "type": "integer"
+ },
+ "yMax": {
+ "description": "Force the axis maximum (values are clamped to the plot band).",
+ "type": "number"
+ },
+ "yMin": {
+ "description": "Force the axis minimum (values are clamped to the plot band).",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "axis2": {
+ "additionalProperties": false,
+ "description": "Secondary RIGHT value axis (drawn only when a series sets yAxis:'right').",
+ "properties": {
+ "scale": {
+ "enum": [
+ "linear",
+ "log"
+ ],
+ "type": "string"
+ },
+ "ticks": {
+ "maximum": 20,
+ "minimum": 2,
+ "type": "integer"
+ },
+ "yMax": {
+ "type": "number"
+ },
+ "yMin": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "categories": {
+ "description": "Category / slice labels (x-axis). Defaults to 1-based indices when omitted.",
+ "items": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxItems": 1000,
+ "type": "array"
+ },
+ "chartType": {
+ "description": "Chart kind. 'pie'/'donut' use exactly one series; 'bar'/'barH'/'stackedBar'/'stackedBarH'/'line'/'area'/'scatter' support multiple series. 'scatter' requires xValues on every series and a positional xAxis.type ('linear' or 'time').",
+ "enum": [
+ "bar",
+ "barH",
+ "stackedBar",
+ "stackedBarH",
+ "line",
+ "area",
+ "scatter",
+ "pie",
+ "donut"
+ ],
+ "type": "string"
+ },
+ "colors": {
+ "description": "Palette override (per-series for bar/line, per-slice for pie/donut).",
+ "items": {
+ "description": "CSS-style hex colour, e.g. \"#3366cc\".",
+ "pattern": "^#?[0-9a-fA-F]{6}$",
+ "type": "string"
+ },
+ "maxItems": 50,
+ "type": "array"
+ },
+ "dataLabels": {
+ "description": "Per-point value labels: true for defaults, or an object to format them.",
+ "oneOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "decimals": {
+ "maximum": 6,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "prefix": {
+ "maxLength": 16,
+ "type": "string"
+ },
+ "suffix": {
+ "maxLength": 16,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ ]
+ },
+ "height": {
+ "description": "Plot-area height in points. Default 240.",
+ "maximum": 2000,
+ "minimum": 50,
+ "type": "number"
+ },
+ "labelRotation": {
+ "description": "Rotate category labels counter-clockwise by this many degrees (disables the automatic stride).",
+ "maximum": 90,
+ "minimum": 0,
+ "type": "number"
+ },
+ "labelStride": {
+ "description": "Draw every Nth category label. Default: automatic (measured non-overlap); 1 draws every label.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "legend": {
+ "description": "Legend placement. Defaults to 'bottom' for multi-series/pie, else 'none'.",
+ "enum": [
+ "bottom",
+ "none"
+ ],
+ "type": "string"
+ },
+ "markers": {
+ "description": "Draw point markers on line series. Default false.",
+ "type": "boolean"
+ },
+ "series": {
+ "description": "Data series. Pie/donut charts use exactly one series (each value becomes a slice).",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "color": {
+ "description": "CSS-style hex colour, e.g. \"#3366cc\".",
+ "pattern": "^#?[0-9a-fA-F]{6}$",
+ "type": "string"
+ },
+ "label": {
+ "description": "Series label (shown in the legend).",
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "values": {
+ "description": "Numeric values, one per category. Negative values are supported for bar/line.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "xValues": {
+ "description": "Per-point x positions (same length as values) for scatter charts and for line/area charts with xAxis.type 'linear' or 'time'.",
+ "items": {
+ "description": "Positional x value: a number (linear axis) or an ISO-8601 date / epoch milliseconds (time axis).",
+ "maxLength": 64,
+ "type": [
+ "number",
+ "string"
+ ]
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "yAxis": {
+ "description": "Bind the series to the left (default) or the secondary right value axis (cartesian charts only; configure its range with 'axis2').",
+ "enum": [
+ "left",
+ "right"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "label",
+ "values"
+ ],
+ "type": "object"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "title": {
+ "description": "Chart title rendered above the plot.",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "type": {
+ "const": "chart"
+ },
+ "width": {
+ "description": "Plot width in points (clamped to content width). Default 460.",
+ "maximum": 2000,
+ "minimum": 50,
+ "type": "number"
+ },
+ "xAxis": {
+ "additionalProperties": false,
+ "description": "Horizontal axis. 'category' (default) positions points by index; 'linear' / 'time' position them by series xValues (line/area/scatter only). Time ticks are UTC-deterministic.",
+ "properties": {
+ "grid": {
+ "description": "Draw vertical gridlines.",
+ "type": "boolean"
+ },
+ "max": {
+ "description": "Axis maximum (number, or ISO-8601 / epoch ms for time axes).",
+ "maxLength": 64,
+ "type": [
+ "number",
+ "string"
+ ]
+ },
+ "min": {
+ "description": "Axis minimum (number, or ISO-8601 / epoch ms for time axes).",
+ "maxLength": 64,
+ "type": [
+ "number",
+ "string"
+ ]
+ },
+ "ticks": {
+ "maximum": 20,
+ "minimum": 2,
+ "type": "integer"
+ },
+ "type": {
+ "enum": [
+ "category",
+ "linear",
+ "time"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "type",
+ "chartType",
+ "series"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Inline smart table — same body as add_table (every row must have exactly as many cells as headers).",
+ "properties": {
+ "autoFitColumns": {
+ "description": "Auto-fit column widths to content. Output bytes then depend on text metrics (not byte-deterministic across content changes).",
+ "type": "boolean"
+ },
+ "caption": {
+ "description": "Caption rendered above the table (tagged as /Caption under PDF/A).",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "cellBorders": {
+ "additionalProperties": false,
+ "description": "Per-cell vector borders (pure strokes, PDF/A-safe). Choose individual sides or `all`.",
+ "properties": {
+ "all": {
+ "description": "Draw all four edges (overrides the individual side flags).",
+ "type": "boolean"
+ },
+ "bottom": {
+ "type": "boolean"
+ },
+ "color": {
+ "description": "Stroke colour as a PDF operator string ('0.8 0.8 0.8') or hex. Default light grey.",
+ "type": "string"
+ },
+ "left": {
+ "type": "boolean"
+ },
+ "right": {
+ "type": "boolean"
+ },
+ "style": {
+ "description": "Stroke style (default 'solid').",
+ "enum": [
+ "solid",
+ "dashed",
+ "dotted"
+ ],
+ "type": "string"
+ },
+ "top": {
+ "type": "boolean"
+ },
+ "width": {
+ "description": "Stroke width in points (default 0.5).",
+ "maximum": 10,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "cellPadding": {
+ "description": "Horizontal cell padding in points (default 3).",
+ "maximum": 50,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cellVAlign": {
+ "description": "Vertical alignment of cell content.",
+ "enum": [
+ "top",
+ "middle",
+ "bottom"
+ ],
+ "type": "string"
+ },
+ "clipCells": {
+ "description": "Clip cell contents to the column bounds (PDF clip operators). Recommended for PDF/A and visual safety.",
+ "type": "boolean"
+ },
+ "headers": {
+ "description": "Column header labels. Must have the same length as each row in `rows`.",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "minRowHeight": {
+ "description": "Minimum row height in points (default 12).",
+ "maximum": 200,
+ "minimum": 1,
+ "type": "number"
+ },
+ "repeatHeader": {
+ "description": "Repeat the header row on every continuation page (default true).",
+ "type": "boolean"
+ },
+ "rows": {
+ "description": "Data rows. Each row is an array of cell strings with the same length as `headers`.",
+ "items": {
+ "items": {
+ "maxLength": 500,
+ "type": "string"
+ },
+ "maxItems": 50,
+ "minItems": 1,
+ "type": "array"
+ },
+ "maxItems": 5000,
+ "minItems": 1,
+ "type": "array"
+ },
+ "type": {
+ "const": "table"
+ },
+ "wrap": {
+ "description": "Cell wrap policy: 'auto' (default) wraps only overflowing cells; 'always' wraps every cell; 'never' truncates.",
+ "enum": [
+ "auto",
+ "always",
+ "never"
+ ],
+ "type": "string"
+ },
+ "zebra": {
+ "description": "Alternate-row light tint (static fill, PDF/A-1b safe).",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "type",
+ "headers",
+ "rows"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Inline JPEG/PNG image. Without width/height the pixel size is used as points and clamped to the content width; with one dimension the aspect ratio is kept. The decoded bytes of all image blocks in one call are capped at 24 MiB (a watermark image has its own 8 MiB cap).",
+ "properties": {
+ "align": {
+ "default": "left",
+ "description": "Horizontal placement inside the content width.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "type": "string"
+ },
+ "alt": {
+ "description": "Accessible description (tagged /Figure /Alt). Always provide it for non-decorative content under PDF/A or PDF/UA.",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "height": {
+ "description": "Render height in points.",
+ "maximum": 1000,
+ "minimum": 10,
+ "type": "number"
+ },
+ "imageBase64": {
+ "description": "Base64 image bytes. JPEG (baseline; 1, 3 or 4 components — CMYK raises PDFA_DEVICE_CMYK_IMAGE under PDF/A) or PNG (8-bit greyscale/RGB, non-interlaced; alpha-channel and palette PNGs are rejected with a remedy). No data: URI.",
+ "maxLength": 12000000,
+ "minLength": 4,
+ "type": "string"
+ },
+ "mimeType": {
+ "description": "MIME type of the image. Must match the actual encoding of imageBase64 (magic bytes are checked).",
+ "enum": [
+ "image/jpeg",
+ "image/png"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "const": "image"
+ },
+ "width": {
+ "description": "Render width in points.",
+ "maximum": 800,
+ "minimum": 10,
+ "type": "number"
+ }
+ },
+ "required": [
+ "type",
+ "imageBase64",
+ "mimeType"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Clickable external link (/URI action). Only http:, https: and mailto: URLs are accepted.",
+ "properties": {
+ "color": {
+ "description": "Hex colour (#RGB or #RRGGBB).",
+ "pattern": "^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",
+ "type": "string"
+ },
+ "fontSize": {
+ "description": "Default 10.",
+ "maximum": 48,
+ "minimum": 6,
+ "type": "number"
+ },
+ "text": {
+ "maxLength": 500,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": {
+ "const": "link"
+ },
+ "url": {
+ "description": "http(s):// or mailto: URL.",
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "text",
+ "url"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Printed table of contents generated from the document's heading blocks (internal /GoTo links with dot leaders). Pairs with outline:'auto' for the bookmark pane.",
+ "properties": {
+ "fontSize": {
+ "description": "Default 10.",
+ "maximum": 24,
+ "minimum": 6,
+ "type": "number"
+ },
+ "indent": {
+ "description": "Points of indent per heading level (default 15).",
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ },
+ "maxLevel": {
+ "description": "Deepest heading level listed (default 3).",
+ "enum": [
+ 1,
+ 2,
+ 3
+ ],
+ "type": "integer"
+ },
+ "title": {
+ "description": "Default 'Table of Contents'.",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "type": {
+ "const": "toc"
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Inline barcode — same body as add_barcode (pure vector, no /Alt available in the engine).",
+ "properties": {
+ "align": {
+ "default": "left",
+ "description": "Horizontal placement inside the content width.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "Raw payload to encode — do NOT URL-encode. For QR/URL pass e.g. \"https://example.com\" verbatim. EAN-13 must be 12 or 13 digits (13th is auto-computed). Code 128 accepts ASCII alphanumerics.",
+ "maxLength": 4296,
+ "minLength": 1,
+ "type": "string"
+ },
+ "ecLevel": {
+ "default": "M",
+ "description": "QR ONLY. Error correction level (L=7%, M=15%, Q=25%, H=30%). Ignored for code128/ean13/datamatrix/pdf417. Use H for printed media that may get smudged or partially covered (e.g. logo overlay).",
+ "enum": [
+ "L",
+ "M",
+ "Q",
+ "H"
+ ],
+ "type": "string"
+ },
+ "format": {
+ "description": "Barcode symbology to render.",
+ "enum": [
+ "qr",
+ "code128",
+ "ean13",
+ "datamatrix",
+ "pdf417"
+ ],
+ "type": "string"
+ },
+ "height": {
+ "default": 200,
+ "description": "Barcode height in PDF points (ignored for square symbologies like QR/Data Matrix).",
+ "maximum": 500,
+ "minimum": 30,
+ "type": "number"
+ },
+ "type": {
+ "const": "barcode"
+ },
+ "width": {
+ "default": 200,
+ "description": "Barcode width in PDF points.",
+ "maximum": 500,
+ "minimum": 30,
+ "type": "number"
+ }
+ },
+ "required": [
+ "type",
+ "format",
+ "data"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Vector drawing from an SVG path `d` string or SVG markup. Supported: <path> <rect> (rx/ry) <circle> <ellipse> <line> <polyline> <polygon> and <text>/<tspan> (x, y, font-size, fill, text-anchor, dx/dy); fill / stroke / stroke-width attributes; double-quoted attributes only. NOT supported (silently ignored): transform, <g>, <use>, <image>, <defs>/<clipPath>, gradients, opacity, CSS/style, dash patterns, text word-wrap. No external reference is ever fetched (no XML parser: entities other than & < > " ' &#n; are dropped). Pure path operators — PDF/A-safe at every level.",
+ "properties": {
+ "align": {
+ "default": "left",
+ "description": "Horizontal placement inside the content width.",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "type": "string"
+ },
+ "alt": {
+ "description": "Accessible description (tagged /Figure /Alt). Always provide it for non-decorative content under PDF/A or PDF/UA.",
+ "maxLength": 500,
+ "type": "string"
+ },
+ "data": {
+ "description": "Path `d` string or SVG markup (≤ 100 000 characters).",
+ "maxLength": 100000,
+ "minLength": 1,
+ "type": "string"
+ },
+ "fill": {
+ "description": "Hex colour or 'none' (default black).",
+ "pattern": "^(?:none|#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}))$",
+ "type": "string"
+ },
+ "height": {
+ "description": "Render height in points (default 200).",
+ "maximum": 1000,
+ "minimum": 10,
+ "type": "number"
+ },
+ "stroke": {
+ "description": "Hex colour or 'none' (default none).",
+ "pattern": "^(?:none|#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}))$",
+ "type": "string"
+ },
+ "strokeWidth": {
+ "description": "Stroke width in SVG user units (default 1).",
+ "maximum": 50,
+ "minimum": 0,
+ "type": "number"
+ },
+ "type": {
+ "const": "svg"
+ },
+ "viewBox": {
+ "description": "[minX, minY, width, height] — overrides the viewBox of the markup; required for a bare path string that is not 0-based.",
+ "items": {
+ "type": "number"
+ },
+ "maxItems": 4,
+ "minItems": 4,
+ "type": "array"
+ },
+ "width": {
+ "description": "Render width in points (default 200).",
+ "maximum": 800,
+ "minimum": 10,
+ "type": "number"
+ }
+ },
+ "required": [
+ "type",
+ "data"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "description": "Inline AcroForm field — same body as an add_form field. Under a PDF/A claim the widget appearance font is not embedded (PDFA_UNEMBEDDED_FORM_FONT; strict:true fails the call).",
+ "properties": {
+ "checked": {
+ "description": "Initial checked state for checkbox / radio fields.",
+ "type": "boolean"
+ },
+ "fieldType": {
+ "description": "Type of form control to render. Radio fields sharing a name form one radio group.",
+ "enum": [
+ "text",
+ "textarea",
+ "checkbox",
+ "radio",
+ "dropdown",
+ "listbox"
+ ],
+ "type": "string"
+ },
+ "fontSize": {
+ "description": "Font size for text rendering inside the field.",
+ "maximum": 48,
+ "minimum": 6,
+ "type": "number"
+ },
+ "height": {
+ "description": "Field height in points (default depends on the type).",
+ "maximum": 300,
+ "minimum": 10,
+ "type": "number"
+ },
+ "label": {
+ "description": "Human-readable label shown above the field.",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxLength": {
+ "description": "Maximum character length for text/textarea fields.",
+ "maximum": 32767,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "name": {
+ "description": "Unique field name used as the PDF annotation identifier (/T).",
+ "maxLength": 100,
+ "minLength": 1,
+ "type": "string"
+ },
+ "options": {
+ "description": "Choices for dropdown, listbox or radio fields.",
+ "items": {
+ "maxLength": 200,
+ "type": "string"
+ },
+ "maxItems": 100,
+ "type": "array"
+ },
+ "placeholder": {
+ "description": "Hint text shown while the field is empty.",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "readOnly": {
+ "description": "Prevent editing of this field.",
+ "type": "boolean"
+ },
+ "required": {
+ "description": "Mark field as required.",
+ "type": "boolean"
+ },
+ "type": {
+ "const": "formField"
+ },
+ "value": {
+ "description": "Default value pre-filled in the field.",
+ "maxLength": 2000,
+ "type": "string"
+ },
+ "width": {
+ "description": "Field width in points (default: full content width).",
+ "maximum": 500,
+ "minimum": 10,
+ "type": "number"
+ }
+ },
+ "required": [
+ "type",
+ "fieldType",
+ "name"
+ ],
+ "type": "object"
+ }
+]