레퍼런스HTTP APIWorkspace settings

Change the workspace's GitHub ceiling (owner or admin)

PUT
/v1/workspaces/{id}/github-settings

Replaces the ceiling. revision is the one last read; a stale one is 409 REVISION_CONFLICT and nothing changes. Lowering a feature refuses it from the next GitHub token on (409 GITHUB_REFUSED over_workspace_ceiling), for sessions of every release that turns it on; raising it lets the same releases use it again. merge is read on every merge call, so turning it on needs no new release and applies from the next call, and turning it off refuses the next call with GITHUB_REFUSED merge_off before GitHub is called; a body without merge saves it as false. Writes a set_github_ceiling receipt with the ceiling before and after. API keys are refused.

Auth: cookie session only; no scope. Idempotency-Key: ignored.

Authorization

cookieSession
cookie__Host-werft_session<token>

For the web console: the browser session cookie set by POST /v1/auth/login. It holds the scopes of the user's workspace role (owner: all; admin and member: all but sessions:recover). Requests other than GET must also send X-Requested-With: werft-web.

Path Parameters

id*string

The workspace's id.

Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid

Header Parameters

X-Requested-With?"werft-web"

Required with a cookie session: the literal werft-web.

Value in"werft-web"

Request Body

application/json
  1. body
ceiling*
revision*integer
Range0 <= value <= 9007199254740991

Response Body

Stored; the settings as GET now answers them.

application/json
  1. response
ceiling*
revision*integer
Range0 <= value <= 9007199254740991
agents_using*
oauth*
pull_request*
pull_request_revision*integer
Range0 <= value <= 9007199254740991
connections*array<>
apps*
Example Request
curl -X PUT 'https://example.com/v1/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/github-settings' \  -H 'Content-Type: application/json' \  -d '{  "ceiling": {    "workflows": false,    "actions": true,    "checks": false,    "issues": false,    "review": false,    "merge": true  },  "revision": 2}'
Example Response
{  "ceiling": {    "workflows": false,    "actions": true,    "checks": false,    "issues": false,    "review": false,    "merge": true  },  "revision": 3,  "agents_using": {    "workflows": 0,    "actions": 2,    "checks": 0,    "issues": 0,    "review": 0  },  "oauth": {    "client_id": "Iv23liExampleClientId",    "client_secret_set": true,    "callback_url": "https://console.example.com/settings/linked-accounts/github"  },  "pull_request": {    "formatting": "on",    "default_template": null,    "template_mode": "repository_first",    "session_link": "url"  },  "pull_request_revision": 0,  "connections": [    {      "connection_id": "019a0000-0000-7000-8000-0000000000b1",      "role": "author",      "name": "werft-agent",      "app_id": 123456,      "html_url": "https://github.com/apps/werft-agent",      "owner": {        "login": "acme",        "type": "organization"      },      "permissions": {        "contents": "write",        "pull_requests": "write",        "actions": "write",        "metadata": "read"      },      "key_status": "ok",      "installations": [        {          "id": 4242,          "account": "acme",          "account_type": "organization",          "status": "approval_pending",          "detail": {            "connection_id": "019a0000-0000-7000-8000-0000000000b1",            "role": "author",            "account_id": 9919,            "permissions": {              "contents": "write",              "pull_requests": "write",              "metadata": "read"            },            "approval": "pending",            "repository_count": 37,            "repository_selection": "selected",            "html_url": "https://github.com/organizations/acme/settings/installations/4242",            "created_at": "2026-10-01T09:00:00.000Z",            "suspended_at": null          }        }      ],      "installations_read_at": "2026-11-02T09:00:00.000Z",      "check": {        "state": "ok",        "checked_at": "2026-11-02T09:00:00.000Z"      }    }  ],  "apps": {    "author": {      "permissions": null    },    "reviewer": null  }}