AlmondTill/G3N API

RequestApprovalInput

input type

Request-input for requestApproval: a LIVE gated action + its target + the parent coordinate (tillSessionId XOR logicalFacilityId) + the REQUIRED reason. requiredTier/expiresAt derive SERVER-side; the fingerprint marker mints in the create transaction (ONE live request per (target, action) — a duplicate refuses CONFLICT/REFERENCED naming the holder).

Fields

FieldTypeRequiredNotes
actionString String!yesThe gated action (dotted canonical name — registry; LIVE (the contracts LIVE_GATED_ACTIONS roster, verbatim): discount.apply | void.transaction | return.approve | no_sale | refund.routing_exception | credit.over_limit | order.below_minimum; a dormant action refuses VALIDATION/UNSUPPORTED naming its arrival).
targetIdID ID!yesThe blocked action's target — the construct the action gates (the contracts GATED_ACTION_TARGETS: Order · Return · TillSession; tenant-scoped server-side); state-gated to WHERE the action's op fires (an un-voidable order, a closed till, an unreceived return refuse CONFLICT/REF_STATE — an approval never revives a window).
valueMinorIntnoThe bound value (integer minor units) — REQUIRED for discount.apply (the EXACT-match fingerprint coordinate); refused for whole-target actions.
tillSessionIdIDnoThe OPEN TillSession the action runs in (the parent; XOR logicalFacilityId).
logicalFacilityIdIDnoThe ACTIVE LF the action runs at when no till session is involved (XOR tillSessionId).
reasonString String!yesWhy the requester needs the override.
captionStringnoOptional caption override.

Used by