ConsentDecisionInput
input type
STAFF decide-input for grantConsent/withdrawConsent: the acted-on consumer is NAMED and the capture surface is REQUIRED.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
consumerId | ID ID! | yes | The acted-on Consumer (tenant-scoped; NOT doomed — an erased subject takes no decisions; ⚠ a SUSPENDED consumer stays LEGAL here: consent is the data subject's right, independent of the merchant hold). |
purposeId | ID ID! | yes | The ConsentPurpose decided on (tenant-scoped + ACTIVE — a retired purpose refuses CONFLICT/REF_STATE naming it). |
policyVersion | String String! | yes | The consent-notice/policy version PRESENTED at this decision (1..128 — REQUIRED caller data; a Policy/notice CONSTRUCT is the named deferral). |
captureSurface | String String! | yes | WHERE the decision was captured — storefront | pos | back_office | cli | import (REQUIRED — no default). |
captureLocale | String | no | The locale PRESENTED (canonical BCP-47 core); optional. |