Re-pin a subscription's schema major
Narrowly re-pins a subscription’s schema_major — the only mutable field. Send exactly one field, schema_major: an integer >= 1 re-pins to the versioned topic; null clears the pin to follow-base. Any other field, an out-of-range value, or an empty body is rejected with 422 validation_error (out-of-scope fields are rejected, not ignored). A re-pin is not a destination change: it does not reset the verification state and echoes no secret. Success returns 200 with no body.
Authorizations
A bearer JWT issued by plugin-auth (lib-auth). The tenant identity is resolved from the validated token claims; the /v1 surface never reads a tenant from the body, path, or query. Machine callers obtain a token via the plugin-auth client-credentials flow. The /admin surface authorizes against an operator scope and carries no tenant context.
Headers
A client-chosen unique key that makes this mutation at-most-once. A mutation sent without it is rejected before any write with 400 missing_idempotency_key. Reusing the same key with an identical request replays the original response byte-for-byte (with X-Idempotency-Replayed: true); reusing it with a different request body returns 409 idempotency_conflict. To re-drive a corrected request, mint a new key.
Path Parameters
The unique identifier of the subscription (UUIDv7).
Body
The narrow re-pin body. Exactly one field, schema_major: an integer >= 1 re-pins to the versioned topic; null clears the pin. Any other field or an empty body is rejected with 422 validation_error.
The schema major to pin, or null to follow the base topic. A value < 1 is rejected.
2
Response
The re-pin succeeded (no body).

