Roles and Privileges
Enforcement model:
- Every protected route is guarded by a privilege check.
- The check verifies the caller’s JWT carries the required privilege.
- If
requireAdministrue, the caller must additionally be an admin. - On failure it returns
AUTH_INSUFFICIENT_PERMISSIONS(EQ-PROMO-4030001, HTTP 403). - Bypasses (flag): if the auth plugin is not registered (in-memory mode) or
PROMO_SKIP_AUTH=true, the check is skipped — no auth enforced.
All privileges use the promotion: namespace. Full list discovered from route registrations:
| Domain | Privileges |
|---|---|
| Promotions | createPromotion, viewPromotion, updatePromotion, deletePromotion, duplicatePromotion, viewLivePromotion, previewPromotion, evaluatePromotion |
| Groups | createGroup, viewGroup, viewLiveGroup, updateGroup, deleteGroup, cloneGroup, viewGroupMembers, assignGroupMembers, unassignGroupMember |
| Displays | createDisplay, viewDisplay, createDisplayItem, deleteDisplayItem |
| Lists | createPromotionList, viewPromotionList, updatePromotionList, deletePromotionList, createPromotionListItem, deletePromotionListItem, viewPromotionListItems |
| Wallet | viewWallet, viewVisibleWallet, grantWalletEntry, revokeWalletEntry |
| Promocodes | createPromocodeList, viewPromocodeList, updatePromocodeList, viewPromocode, exportPromocode, bulkAssignPromocode, validatePromocode, redeemPromocode, blockPromocode, unblockPromocode, assignPromocode, unassignPromocode, reversePromocode, viewPromocodeUsageCount |
| Instances | createInstance, viewInstance, updateInstance, deleteInstance |
| Instance Attributes | viewInstanceAttribute |
| Workflow | applyWorkflow, viewWorkflow |
| Audit | viewAudit |
| Versions | view, update (note: bare promotion:view / promotion:update) |
Workflow permissions — the workflow config references wildcard permission patterns on transitions: promotion:create*, promotion:update*, promotion:approve*. These gate individual workflow actions (CREATE_DRAFT, UPDATE_DRAFT, APPROVE, DENY, etc.).
Revision History
2026-08-05 | JP – Created the page and added the content.