NewConsentPurposeInput
input type
Create-input for a FROM-SCRATCH ConsentPurpose. The tenant is derived SERVER-SIDE; ⚠ the caption IS the purpose's display name and is REQUIRED at the boundary (the CPG divergence — an unnamed processing activity is meaningless; omission refuses VALIDATION/INVALID); the code normalizes + its (group × code) UNIQ marker reserves in the create transaction. The canned lane is copyCannedConsentPurpose — NOT this shape.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
caption | String | no | Optional: when omitted the per-type default applies — NONE — the CPG divergence: the caption IS the processing activity's display name, and an omitted caption refuses VALIDATION/INVALID at the boundary instead of defaulting; when supplied it must be non-blank. |
code | String String! | yes | The machine handle — normalized server-side (trim+lowercase); the (group × code) UNIQ marker reserves in the create transaction (a NON-DOOMED holder refuses CONFLICT/IDENTITY_TAKEN; a doomed holder's code was RELEASED — reissuable). |
consentModel | String String! | yes | opt_in | opt_out — ⚠ IMMUTABLE after birth. guidance: opt_in IS the strict deny-by-default regime (all 6 canned baselines ship it). |