Re-pin a subscription's schema major
Narrowly changes a subscription’s schema_major pin and, optionally, its per-attempt delivery timeout. Every call carries schema_major: an integer >= 1 re-pins to the versioned topic; null clears the pin to follow-base. timeout_ms is optional; omit it to keep the stored timeout. 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). The change 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 Access Manager. The /v1 surface never reads a tenant from the body, path, or query. Machine callers obtain a token with the Access Manager 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 change body. schema_major is required: an integer >= 1 re-pins to the versioned topic; null clears the pin. timeout_ms is optional. 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
The per-attempt delivery timeout in milliseconds, from 1000 to 20000. For webhook subscriptions only: the hub refuses a non-zero value for any other sink kind. Omit it to keep the stored timeout; send 0 to return to the 10000 default.
20000
Response
The re-pin succeeded (no body).

