Builds a revokeEntitlement operation: drops a user's ownership record for a SKU, the mirror
of a grant. No money moves and no ledger legs post; once committed, read.entitled for that
user and SKU returns false. Restricted to a system or operator actor — a revoke names a
user the caller need not own and posts no debit the ownership rule could catch. Rejects only
with NOT_ENTITLED when the user does not currently own the SKU (the rejection's detail
carries the userId and sku). A retry under the same idempotencyKey returns the first
result as duplicate.
Builds a
revokeEntitlementoperation: drops a user's ownership record for a SKU, the mirror of a grant. No money moves and no ledger legs post; once committed,read.entitledfor that user and SKU returns false. Restricted to asystemoroperatoractor — a revoke names a user the caller need not own and posts no debit the ownership rule could catch. Rejects only withNOT_ENTITLEDwhen the user does not currently own the SKU (the rejection'sdetailcarries theuserIdandsku). A retry under the sameidempotencyKeyreturns the first result asduplicate.