Withdraw enrollment from a surface
Returns the surface to available. Explicitly does not affect the store’s
activation state, and does not affect any other surface. Idempotent: withdrawing
a surface the store was never enrolled in succeeds.
/stores/{store_id}/surfaces/{surface_id}AuthorizationBearer token (JWT) · headerrequiredJWT issued by the external IdP via the OAuth 2.0 authorization-code flow (Kinde in
production; a simulator in test). The client obtains it and sends it as a Bearer token on
every authenticated call. Sarvex's services verify it — issuer, audience, signature
(IdP JWKS), expiry — and read identity and tenant from its claims. Sarvex does not issue
or revoke these tokens. merchant_id/store_id are read from the verified claims (and the
merchant→store mapping), never from the URL. The operator scope is required for
/operator/*. Operators acting on a specific merchant pass the X-Operate-As header,
which is recorded in the audit log.
store_idstringrequiredA store the caller's merchant owns. Authorized server-side against the principal; not a free-form tenant selector.
surface_idstringrequiredA surface id from the registry (GET /surfaces). Not a tenant selector — enrollment is always scoped to the caller's merchant server-side.
Withdrawn.
Resource not found within the caller's tenant.
errorobjectrequiredShow propertiesHide properties
codestringrequiredmessagestringrequireddetailsobject | null