# NewPriceListInput

input type

Create-input for a PriceList. The tenant (org group) is derived SERVER-SIDE from the principal; ⚠ the caption IS the book name and is REQUIRED at the boundary (the CustomerPriceGroup divergence — an unnamed price book is meaningless; omission refuses VALIDATION/INVALID); the ACTIVE cap (≤ 32 per group) gates the create; orgCustomerId (the contract scope) resolves in-tenant + ACTIVE and REQUIRES both window bounds (the contract term — STRICT); when both bounds are supplied the half-open \[startAt, endAt) window must be non-empty.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — NONE — the CustomerPriceGroup divergence: the caption IS the book name, and an omitted caption refuses VALIDATION/INVALID at the boundary instead of defaulting; when supplied it must be non-blank. |
| `organizationIds` | [ID](/types/#scalars) `[ID!]` | no | The canned-pool selection — ABSENT = every org in the group. |
| `startAt` | [String](/types/#scalars) | no | The effective-window start (INCLUSIVE) — REQUIRED with endAt on a scoped list (the contract term). |
| `endAt` | [String](/types/#scalars) | no | The effective-window end (EXCLUSIVE). |
| `orgCustomerId` | [ID](/types/#scalars) | no | THE CONTRACT SCOPE — the ONE OrgCustomer this list is negotiated for (in-tenant + ACTIVE; IMMUTABLE after birth). ABSENT = a general list. |

## Used by

- [createPriceList](/reference/price-list/createPriceList/)
