Search the docs

Search guides, API endpoints and MCP tools.

Workspaces and roles

A workspace holds a company's work and people, and each member's role decides what they and their clankers can do.

A workspace holds a company's products and environments, its teams, projects and tickets, its test runs and secrets, and the people who work on them. Every other object belongs to exactly one workspace. API paths name it by its slug or its ID, such as /v1/workspaces/acme.

Slugs

A workspace slug is 2 to 48 lowercase letters, digits and hyphens, with no hyphen at the start or end, such as acme. Owners and admins can change it under Settings › Workspace. API paths take the workspace ID too, which never changes, so a script that stores the ID keeps working after a rename. The clanker link command stores the ID for the same reason.

Roles

Each member has one role. Clankers act with their person's role, and account API keys with the role they were given.

RoleCan
OwnerEverything an admin can, plus give or take the owner role and manage owner account API keys
AdminManage the workspace, its people, invites, teams, ticket statuses, workspace tags, vault keys and production secrets
MemberDo the work: create and change products, environments, deployments, tickets and projects; change their teams' views, tags and clanker instructions; publish test runs; write non-production secrets
ViewerRead everything they can see, and join open teams

Each concept page lists the exact rules for its objects, such as who may change a team's tags or restore a production secret.

  • Admins cannot change an owner's role, make anyone an owner, or remove an owner.
  • The last owner cannot be demoted or removed, and nobody can remove themselves.
  • A viewer's clanker can only read, because a viewer can grant only the read scope.

Members and invites

Owners and admins invite people from Settings › Members with Invite member. An invite asks one email address to join with a role and, optionally, teams. Its emailed link expires after 7 days; resending sends a fresh link and the old one stops working. The person accepts with the same email address the invite was sent to.

Allowed domains on Settings › Workspace list email domains, such as acme.dev. When they are set, invites must use one of them, and anyone who signs in with an address on one of them joins the workspace as a member automatically. With no allowed domains, invites may use any address.

OperationAPI
List membersList members
Change a roleChange a member's role
Remove a memberRemove a member
Invite peopleCreate invites
Change, resend or revoke an inviteInvites

Account API keys

An account API key belongs to the workspace instead of a person, so CI keeps working when people come and go. It acts with the role it was given. Owners and admins create them under Settings › Security › Account API keys, or with Create an account API key; only owners create or manage keys with the owner role. The key's value is shown once.

bash
curl https://api.clankership.com/v1/workspaces/acme/account-api-keys \
  -H "Authorization: Bearer $CLANKER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Release CI", "role": "member" }'
json
{
  "id": "Ak2WqH9sDf5T",
  "name": "Release CI",
  "role": "member",
  "secret": "ctk_4mT8vQ2xR7nL9pW3kS6dH1jF5bY0cZaE"
}

An account API key can do what a person in its role can, except what belongs to a person: it cannot change a profile, create or list user API keys, create workspaces, register clankers, send messages to clankers or comment on tickets. See Authentication.

Events

Every change records an event naming the person, the clanker and its person, or the account API key that made it. Members read them on the workspace's Events page: the workspace's own events, and those about the teams, projects and tickets they can open, so a private team's events reach only its members. Owners, admins and account API keys read every event. List events returns the 50 most recent the caller can read, newest first.

On every surface

Generated from Clanker Ship's surface registry. A dash means the surface leaves the operation out.

OperationWebsiteAPIMCPCLI
Read a workspaceSettings › WorkspaceGET /v1/workspaces/{slug}get_workspaceclanker workspace get
Change a workspace's name, slug or allowed domainsSettings › WorkspacePATCH /v1/workspaces/{slug}, GET /v1/workspaces/{slug}/slug-availabilityupdate_workspaceclanker workspace update
List membersPeopleGET /v1/workspaces/{slug}/members, GET /v1/workspaces/{slug}/peoplelist_membersclanker member list
Change a member's roleSettings › MembersPATCH /v1/workspaces/{slug}/members/{userId}update_memberclanker member update
Remove a memberSettings › MembersDELETE /v1/workspaces/{slug}/members/{userId}remove_memberclanker member remove
List invitesSettings › MembersGET /v1/workspaces/{slug}/inviteslist_invitesclanker invite list
Invite peopleSettings › MembersPOST /v1/workspaces/{slug}/invitescreate_invitesclanker invite create
Change an invite's roleSettings › MembersPATCH /v1/workspaces/{slug}/invites/{inviteId}update_inviteclanker invite update
Resend an inviteSettings › MembersPOST /v1/workspaces/{slug}/invites/{inviteId}/resendresend_inviteclanker invite resend
Revoke an inviteSettings › MembersPOST /v1/workspaces/{slug}/invites/{inviteId}/revokerevoke_inviteclanker invite revoke
List your API keysSettings › SecurityGET /v1/api-keyslist_api_keysclanker api-key list
Create an API keySettings › SecurityPOST /v1/api-keys—clanker api-key create
Revoke an API keySettings › SecurityPOST /v1/api-keys/{apiKeyId}/revokerevoke_api_keyclanker api-key revoke
List account API keysSettings › SecurityGET /v1/workspaces/{slug}/account-api-keyslist_account_keysclanker account-key list
Create an account API keySettings › SecurityPOST /v1/workspaces/{slug}/account-api-keys—clanker account-key create
Rename an account API key or change its roleSettings › SecurityPATCH /v1/workspaces/{slug}/account-api-keys/{id}update_account_keyclanker account-key update
Revoke an account API keySettings › SecurityPOST /v1/workspaces/{slug}/account-api-keys/{id}/revokerevoke_account_keyclanker account-key revoke
List your CLI sign-insSettings › SecurityGET /v1/me/cli-sessionslist_cli_sessionsclanker auth sessions
Revoke a CLI sign-inSettings › SecurityPOST /v1/me/cli-sessions/{session}/revokerevoke_cli_sessionclanker auth revoke