Remove roles from a member
Removes every listed role from an existing member of your account, keeping their other roles and the membership. The change is atomic. The roles go in the JSON body, not the URL.
Only an account_admin of {account_id} may call it. Removing the member’s last role
returns 400; removing the account’s last account_admin returns 409. Removed roles
take effect for the member’s existing API keys and tokens.
DELETE
/
users
/
{user_id}
/
accounts
/
{account_id}
/
roles
Remove roles from a member
curl --request DELETE \
--url https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"roles": [
"billing_admin"
]
}
'import requests
url = "https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles"
payload = { "roles": ["billing_admin"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({roles: ['billing_admin']})
};
fetch('https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles', 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://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'roles' => [
'billing_admin'
]
]),
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://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles"
payload := strings.NewReader("{\n \"roles\": [\n \"billing_admin\"\n ]\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"roles\": [\n \"billing_admin\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"roles\": [\n \"billing_admin\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}{
"error": "Membership changed concurrently. Reload and try again",
"reason": "membership_conflict"
}{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}Authorizations
A Reactor API key (rk_...), sent as Authorization: Bearer rk_.... Keep it on a server.
Path Parameters
The user's ID. Use the id from GET /me for your own user.
The account's ID. Use the account_id from GET /me.
Body
application/json
Role names. Duplicates collapse into one.
Minimum array length:
1A role you can grant within an account.
Available options:
developer, account_admin, billing_admin Response
The roles were removed.
⌘I
Remove roles from a member
curl --request DELETE \
--url https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"roles": [
"billing_admin"
]
}
'import requests
url = "https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles"
payload = { "roles": ["billing_admin"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.delete(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'DELETE',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({roles: ['billing_admin']})
};
fetch('https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles', 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://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => json_encode([
'roles' => [
'billing_admin'
]
]),
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://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles"
payload := strings.NewReader("{\n \"roles\": [\n \"billing_admin\"\n ]\n}")
req, _ := http.NewRequest("DELETE", 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.delete("https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"roles\": [\n \"billing_admin\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.reactor.inc/users/{user_id}/accounts/{account_id}/roles")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"roles\": [\n \"billing_admin\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}{
"error": "Membership changed concurrently. Reload and try again",
"reason": "membership_conflict"
}{
"error": "<string>",
"message": "<string>",
"resource": "<string>",
"reason": "<string>"
}