AlmondTill/G3N API

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

FieldTypeRequiredNotes
captionStringnoOptional: 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.
codeString String!yesThe 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).
consentModelString String!yesopt_in | opt_out — ⚠ IMMUTABLE after birth. guidance: opt_in IS the strict deny-by-default regime (all 6 canned baselines ship it).

Used by