---
title: "Operator: suspend a workspace"
method: PUT
path: "/api/ops/workspaces/{workspaceId}/suspension"
tags: ["Operator"]
---

# Operator: suspend a workspace

`PUT /api/ops/workspaces/{workspaceId}/suspension`

## Request

- Base URL: `https://tre-app.com`
- URL: `https://tre-app.com/api/ops/workspaces/{workspaceId}/suspension`
- Auth: one of:
  - API key in cookie `__Secure-authjs.session-token`
  - API key in cookie `authjs.session-token`

Operator console only: requires the web session of an address in the operator allowlist of this installation, sent from the application itself. Every other signed-in caller and every valid Bearer token receives 404 NOT_FOUND, whether or not this installation has an operator configured; a caller with no valid credential receives 401, as on every route. Recorded in the operator log. Every board role in the workspace reads as viewer and new checkouts are refused; reading, export, people, the billing portal and deletion stay open. Billing is not touched. 409 when already suspended. The body gives the reason, from a closed list; `noticeSentOn`, the day the owner was written to — between 90 days before today and the day after it in UTC (400 otherwise) — or null when there was no prior notice; and `confirmSlug`, the workspace’s slug (400 when it is another). It may give `reviewOn`, the day to look at the suspension again — it lifts nothing — between today and 90 days ahead in UTC (400 otherwise), 14 days ahead when omitted; and a reference: a ticket or card key, never an address.

## Request body

- WorkspaceSuspend
  - `reasonCode` 'acceptable_use' | 'security_incident' | 'payment_dispute' | 'customer_request', required
  - `reviewOn` string, date
  - `noticeSentOn` string, date, nullable, required
  - `confirmSlug` string, required
  - `reference` string

## Response `204`

No content

## Other responses

- `400`: Invalid request
- `401`: Unauthenticated
- `403`: The request did not come from the application’s own origin
- `404`: Not the operator, or no such object
- `409`: Conflict
- `429`: Rate limited
- `500`: Internal server error
- `503`: Temporarily unavailable

---

[API](https://skmtc.dev/tre-app/apis/tre-rest-api.md) · [All operations](https://skmtc.dev/tre-app/apis/tre-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tre-app/apis/tre-rest-api/revisions/26a7187a05fc?raw)
