# NewPurchasePackInput

input type

Create-input for a PurchasePack. The tenant (org group) is derived SERVER-SIDE from the principal; variantId (the parent — rides the header) is tenant-scoped server-side and must be ACTIVE (STRICT); the code is dup-gated against LIVE sibling packs (trim+case-fold, naming the holder); the dims trio comes all-or-none.

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | Optional: when omitted the per-type default applies — the pack code; when supplied it must be non-blank. |
| `variantId` | [ID](/types/#scalars) `ID!` | yes | The variant this pack packages. |
| `code` | [String](/types/#scalars) `String!` | yes | No further notes. |
| `unitsPerPack` | [String](/types/#scalars) `String!` | yes | Stock units per pack (strictly positive decimal) — IMMUTABLE after birth. |
| `packGtin` | [String](/types/#scalars) | no | No further notes. |
| `nominalWeightKg` | [String](/types/#scalars) | no | No further notes. |
| `lengthCm` | [String](/types/#scalars) | no | No further notes. |
| `widthCm` | [String](/types/#scalars) | no | No further notes. |
| `heightCm` | [String](/types/#scalars) | no | No further notes. |

## Used by

- [createPurchasePack](/reference/purchase-pack/createPurchasePack/)
