# NewReportInput

input type

The tenant stamps server-side; the spec validates through THE REPORT GATE (validateReport — THE PLAN GATE, then the columns / groupBy / measures / sort arms against the terminal family’s roster); words + terminalFamily derive from it (ReportSpecInput is the reportRun input — nothing new on the wire).

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — the terminal family (e.g. `Order report`); when supplied it must be non-blank. |
| `spec` | [ReportSpecInput](/types/ReportSpecInput/) `ReportSpecInput!` | yes | The definition — the reportRun grammar VERBATIM (a plan + columns, or a plan + groupBy/measures, an optional sort); validated now, run later as whoever runs it. |
| `description` | [String](/types/#scalars) | no | What the report is for (at most 512 characters). |

## Used by

- [createReport](/reference/report/createReport/)
