Suspend Exchange (ACTIVE -> SUSPENDED)

Moves an ACTIVE Cryptographic Exchange to SUSPENDED and invalidates the linked
Capability Grant projection, so runtime authorization stops honouring it.

The body is an OPTIMISTIC-LOCKING ENVELOPE that also carries the operator's
justification. version is the discriminator last read from the
exchange detail response; a stale value is refused with 409 and nothing is
written.

reason is MANDATORY (PRD 231). It is recorded verbatim at canonical

position 21 of the signed AdminAuditEvent, which is what makes the suspension
answerable later: an audit row can no longer say that an exchange 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. The reason is NEVER written to
a log line (231.19).

Authorization: requires scope admin.tenant.exchange.suspend.

The tenant boundary is resolved from the JWT claim, never from the path.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
uuid
required
Body Params

Optimistic-lock version plus the mandatory operator justification.

Suspend an ACTIVE Cryptographic Exchange. The reason is mandatory and is signed into the audit record at canonical position 21.

int32
required

JPA @Version optimistic-lock discriminator, as last read from the exchange detail response. A stale value is refused with 409.

string
required
length between 1 and 1000

Operator-supplied justification (free text). Recorded verbatim at canonical position 21 of the signed admin audit event.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json