action:{ "action": "revoke", "reason"?: "…" } — sets the permit to REVOKED and immediately invalidates its QR access code. Audit trail records the actor, reason, and timestamp.{ "action": "reissuePass" } — permit must be ACCEPTED. The current QR/access code is invalidated immediately (old code rejected at the gate from that point), a new code is minted, fresh permit documentation is regenerated, and a passes.permits.issued event fires with the new QR payload.curl --location --request PATCH '/passes/' \
--header 'Content-Type: application/json' \
--data '{
"action": "revoke",
"reason": "Permit cancelled by DAMAC."
}'{}