레퍼런스HTTP APIWorkspace settings

The workspace's GitHub ceiling (members)

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

What the workspace lets its agents turn on beyond writing a pull request: workflows, actions, checks, issues, review, all false until an owner or admin saves the ceiling (revision 0 until then). merge is the ceiling's alone, no agent or release holds it: it lets the workspace's agents squash-merge the pull request their own session opened, it reads false when a stored ceiling lacks it, and GitHub's branch protection and required checks still apply. An agent's release may turn a feature on only under the ceiling, and every GitHub token is cut to the ceiling again when it is issued. agents_using counts, per feature, agents with GitHub on whose active release turns it on; sessions still running an earlier release are not counted. connections lists every registered App (author ones first; a role may have several) with its name, app_id, the owner account GitHub names, the permissions it asks for, key_status, and where it is installed: each installation's account, account_type and status (suspended, approval_pending when the account has not approved every permission the App asks for, unknown before the App's permissions were read or when the list could not be read now, else active). Installations are read from GitHub with each App's own key on every request, so one App failing does not hide another's: its check is failed with reason_code (github_unavailable or github_app_auth_failed), its installations is the last list read for that App with each status unknown (empty when none was ever read), and installations_read_at says when that list was read (null when never). An installation's detail (connection, account id, approved permissions, approval, repository_count for the first 20 when read now, repository_selection, its settings page, created_at, suspended_at, and connected: who finished installing it from the console and when, null when not recorded) is given to owners and admins only; a member reads null. apps has each role's App permissions as last read from GitHub; it reads null for a role with several Apps, so read connections. Any member signed in to the console reads it; API keys are refused.

Auth: cookie session only; no scope.

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

Response Body

The ceiling and who uses it.

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 GET 'https://example.com/v1/workspaces/497f6eca-6276-4993-bfeb-53cbbbba6f08/github-settings'
Example Response
{  "ceiling": {    "workflows": false,    "actions": true,    "checks": false,    "issues": false,    "review": false,    "merge": false  },  "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": {        "contents": "write",        "pull_requests": "write",        "actions": "write",        "metadata": "read"      }    },    "reviewer": null  }}