curl --request PATCH \
--url https://console.advinservers.com/api/v1/client/teams/{team} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Anomalous Materials"
}
'import requests
url = "https://console.advinservers.com/api/v1/client/teams/{team}"
payload = { "name": "Anomalous Materials" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Anomalous Materials'})
};
fetch('https://console.advinservers.com/api/v1/client/teams/{team}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://console.advinservers.com/api/v1/client/teams/{team}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Anomalous Materials'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/teams/{team}"
payload := strings.NewReader("{\n \"name\": \"Anomalous Materials\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://console.advinservers.com/api/v1/client/teams/{team}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Anomalous Materials\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/teams/{team}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Anomalous Materials\"\n}"
response = http.request(request)
puts response.read_body{
"id": "fbb31f5f-bd6f-4019-a3ed-1062a28f56f7",
"name": "Anomalous Materials",
"is_owner": true,
"is_default": true,
"is_active": true,
"owner": {
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com",
"gravatar_url": "https://www.gravatar.com/avatar/6108e5fddd878d82e464d4282b011ed7?s=64&d=404"
},
"role": null,
"permissions": [
"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"
],
"can_leave": false,
"members_count": 1,
"held_resources": {
"servers": 2,
"ssh_keys": 2,
"firewall_groups": 1,
"private_networks": 1,
"floating_ips": 1,
"snapshots": 1,
"backups": 3,
"snapshot_storages": 1
},
"created_at": "2025-11-18T21:07:44+00:00"
}{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Not found."
}{
"message": "The name field is required.",
"errors": {}
}{
"message": "Too Many Attempts."
}Rename a team
Overview
Renames a team and returns its updated details. Send name with 1 to 191 characters and no control characters. Only the owner can rename it; other callers receive 404. Members, roles and resources are unchanged.
Permissions
Requires the account permission teams.manage (Manage teams).
curl --request PATCH \
--url https://console.advinservers.com/api/v1/client/teams/{team} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Anomalous Materials"
}
'import requests
url = "https://console.advinservers.com/api/v1/client/teams/{team}"
payload = { "name": "Anomalous Materials" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Anomalous Materials'})
};
fetch('https://console.advinservers.com/api/v1/client/teams/{team}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://console.advinservers.com/api/v1/client/teams/{team}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Anomalous Materials'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://console.advinservers.com/api/v1/client/teams/{team}"
payload := strings.NewReader("{\n \"name\": \"Anomalous Materials\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://console.advinservers.com/api/v1/client/teams/{team}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Anomalous Materials\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/teams/{team}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Anomalous Materials\"\n}"
response = http.request(request)
puts response.read_body{
"id": "fbb31f5f-bd6f-4019-a3ed-1062a28f56f7",
"name": "Anomalous Materials",
"is_owner": true,
"is_default": true,
"is_active": true,
"owner": {
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com",
"gravatar_url": "https://www.gravatar.com/avatar/6108e5fddd878d82e464d4282b011ed7?s=64&d=404"
},
"role": null,
"permissions": [
"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"
],
"can_leave": false,
"members_count": 1,
"held_resources": {
"servers": 2,
"ssh_keys": 2,
"firewall_groups": 1,
"private_networks": 1,
"floating_ips": 1,
"snapshots": 1,
"backups": 3,
"snapshot_storages": 1
},
"created_at": "2025-11-18T21:07:44+00:00"
}{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Not found."
}{
"message": "The name field is required.",
"errors": {}
}{
"message": "Too Many Attempts."
}Authorizations
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
The team UUID
"fbb31f5f-bd6f-4019-a3ed-1062a28f56f7"
Body
Send a JSON object containing the fields below. Required fields are marked in the schema.
The name shown to customers.
1 - 191^[^\p{C}]+$Response
The record, as a JSON object. There is no envelope.
A team and the current account's membership details.
The id ID.
"fbb31f5f-bd6f-4019-a3ed-1062a28f56f7"
The name shown to customers.
"Anomalous Materials"
Whether the resource is owner.
true
Where a resource lands when nothing has said otherwise, and the team a session falls back to. Exactly one of an account's teams carries it, which the database enforces rather than trusts.
true
Which team the browser is currently working in, compared against the id the resolver settled on rather than against the raw session key. An account may own several teams, so "the one you own" stopped being an answer the moment the session key was empty - every one of them would have read as active at once.
true
The value of owner.
Show child attributes
Show child attributes
{
"name": "Gordon Freeman",
"email": "gordon.freeman@blackmesa.example.com",
"gravatar_url": "https://www.gravatar.com/avatar/6108e5fddd878d82e464d4282b011ed7?s=64&d=404"
}
The value of role.
Show child attributes
Show child attributes
null
The value of permissions.
[
"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"
]
Only the owner may leave nothing behind; an owner cannot leave their own account, which is why this is not simply ! is_owner.
false
The number of members count.
1
What is still inside the team, so the listing can say it before a deletion is attempted rather than only in the refusal that comes back from one. Both are read from the same method deliberately: a preview that disagreed with the refusal would send somebody looking for a server that is not where they were told it was.
Show child attributes
Show child attributes
{
"servers": 2,
"ssh_keys": 2,
"firewall_groups": 1,
"private_networks": 1,
"floating_ips": 1,
"snapshots": 1,
"backups": 3,
"snapshot_storages": 1
}
Written out with an explicit format rather than left to the date serialiser, because that is what the transformer this replaces published: seconds and an offset, not microseconds and a Z.
"2025-11-18T21:07:44+00:00"