Skip to main content
PATCH
Update a role

Authorizations

Authorization
string
header
required

Your API key, sent as a bearer token. Create one in the control panel under API Keys, give it only the permissions the integration needs, and copy it when it is created. It cannot be shown again. Each key is restricted to one owned team. The key determines the team for every request.

Path Parameters

team
string
required

The team UUID

Example:

"fbb31f5f-bd6f-4019-a3ed-1062a28f56f7"

role
string
required

The role UUID

Example:

"18f11680-0831-4d41-9d71-824c99009cbf"

Body

application/json

Send a JSON object containing the fields below. Required fields are marked in the schema.

name
string
required

The name shown to customers.

Required string length: 1 - 64
Pattern: ^[^\p{C}]+$
permissions
enum<string>[]
required

The value of permissions.

Maximum array length: 41

Rejected rather than quietly dropped. An account that has just ticked something this release does not have needs to be told, not left believing the role grants it.

Available options:
team.read,
team.manage,
server.read,
server.power,
server.console,
server.update,
server.credentials,
server.reinstall,
server.transfer,
backup.read,
backup.create,
backup.restore,
backup.delete,
snapshot.read,
snapshot.create,
snapshot.restore,
snapshot.delete,
snapshot.update,
snapshot.transfer,
firewall.read,
firewall.update,
firewall.delete,
network.read,
network.update,
network.transfer,
network.delete,
sshkey.read,
sshkey.update,
sshkey.delete,
script.read,
script.update,
script.delete,
iso.read,
iso.update,
iso.delete,
measured_boot.read,
measured_boot.update,
measured_boot.delete,
billing.read,
billing.manage,
billing.purchase
description
string | null

An optional description shown to customers.

Maximum string length: 512
Pattern: ^[^\p{C}\n\r]*$

Response

The record, as a JSON object. There is no envelope.

A named set of permissions in a team.

id
string
required

The id ID.

Example:

"18f11680-0831-4d41-9d71-824c99009cbf"

name
string
required

The name shown to customers.

Example:

"Research Associate"

description
string | null
required

An optional description shown to customers.

Example:

"Runs the test chamber servers and takes snapshots before each experiment, but cannot delete, reinstall or spend money."

permissions
string[]
required

Read through the model rather than off the column: a seeded role resolves its permissions from the catalogue every time, so it picks up anything added in a later release, and a key that no longer exists is dropped instead of being shown.

Example:
type
enum<string>
required

The role type: system or custom.

Available options:
system,
custom
Example:

"custom"

system_key
string | null
required

The value of system_key.

Example:

null

is_system
boolean
required

The three seeded roles are readable and assignable but never editable or deletable, so an account always has a working set to hand out.

Example:

false

members_count
integer | null
required

Only present when the listing asked for it; a role fetched on its own does not pay for the count.

Example:

1

created_at
string | null
required

The date and time for created at, in UTC.

Example:

"2026-01-09T20:14:52+00:00"