# EditConsentPurposeInput

input type

Edit-input for a ConsentPurpose. Every field optional, at least ONE required; supplied fields REPLACE, omitted fields are preserved (no clearing semantic); a code edit is the consentPurposeCode marker release/reserve swap (a NON-DOOMED holder of the NEW code refuses CONFLICT/IDENTITY_TAKEN; the OLD code releases). ⚠ consentModel is NOT here — IMMUTABLE after birth; templateKey/templateVersion are port-stamped provenance, never editable (the Role law).

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `caption` | [String](/types/#scalars) | no | The processing activity's display name. |
| `code` | [String](/types/#scalars) | no | The machine handle — the marker swap rides the update transaction. |

## Used by

- [updateConsentPurpose](/reference/consent-purpose/updateConsentPurpose/)
