# NewMarkdownPlanInput

input type

Create-input for a MarkdownPlan. The tenant is derived SERVER-SIDE; ⚠ the caption is REQUIRED at the boundary (the CustomerPriceGroup divergence class — a cadence has no natural default; omission refuses VALIDATION/INVALID); the OPEN bound gates the create kit-side. The all-future/base/splice/cap gates are the SCHEDULE transition's — a draft may be authored ahead of its own validity.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — NONE — the divergence: a cadence has no natural default name, so an omitted caption refuses VALIDATION/INVALID at the boundary instead of defaulting; when supplied it must be non-blank. |
| `productScope` | [PromotionProductScopeInput](/types/PromotionProductScopeInput/) `PromotionProductScopeInput!` | yes | The scope — REQUIRED with ≥1 member. |
| `organizationIds` | [ID](/types/#scalars) `[ID!]` | no | The canned-pool selection — ABSENT = every org in the group. |
| `logicalFacilityIds` | [ID](/types/#scalars) `[ID!]` | no | The explicit LF restriction — ABSENT = all LFs of the selected orgs. |
| `currency` | [String](/types/#scalars) `String!` | yes | The plan currency (ISO-4217) — every money-bearing move must carry it. |
| `steps` | [MarkdownStepInput](/types/MarkdownStepInput/) `[MarkdownStepInput!]!` | yes | 1–8 ordered steps — startAt strictly increasing; endAt on the LAST step only. |

## Used by

- [createMarkdownPlan](/reference/markdown-plan/createMarkdownPlan/)
