Transitions the Exchange Context to SUSPENDED and publishes an invalidation message on the capability-grant-updates Redis Pub/Sub channel so every Core API replica drops its L1 cache entry for every grant bound to this context.
A body is now REQUIRED and carries a mandatory reason (PRD 231, operation 2). It is recorded verbatim at canonical position 21 of the signed AdminAuditEvent, so an audit row can no longer say that an Exchange Context was suspended without saying why. It is bounded at AuditFieldBounds.MAX_REASON_LENGTH (1,000 UTF-8 BYTES, not characters -- the unit the signed preimage and every carrier downstream of it are measured in) -- the same bound applied before signing, so no accepted value is silently truncated on its way into the preimage -- and it is NEVER written to a log line.
IDEMPOTENT NO-OP: an already-SUSPENDED context answers 200 OK and the submitted reason is recorded NOWHERE -- no status write, no audit event, no admin_audit_log row -- because the act did not happen. That is deliberate, not a lost value: recording it would put a justification for a suspension into the trail on a call that suspended nothing.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||