curl --request PATCH \
--url https://api.arize.com/v2/role-bindings/{binding_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"role_id": "Um9sZToyOmFCY0Q="
}
'import requests
url = "https://api.arize.com/v2/role-bindings/{binding_id}"
payload = { "role_id": "Um9sZToyOmFCY0Q=" }
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({role_id: 'Um9sZToyOmFCY0Q='})
};
fetch('https://api.arize.com/v2/role-bindings/{binding_id}', 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.arize.com/v2/role-bindings/{binding_id}",
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([
'role_id' => 'Um9sZToyOmFCY0Q='
]),
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.arize.com/v2/role-bindings/{binding_id}"
payload := strings.NewReader("{\n \"role_id\": \"Um9sZToyOmFCY0Q=\"\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://api.arize.com/v2/role-bindings/{binding_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"role_id\": \"Um9sZToyOmFCY0Q=\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/role-bindings/{binding_id}")
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 \"role_id\": \"Um9sZToyOmFCY0Q=\"\n}"
response = http.request(request)
puts response.read_body{
"id": "Um9sZUJpbmRpbmc6MTphQmNE",
"role_id": "Um9sZToxOmFCY0Q=",
"user_id": "VXNlcjo0MjphQmNE",
"resource_type": "SPACE",
"resource_id": "U3BhY2U6MTpWNEth",
"created_at": "2024-06-01T10:00:00Z",
"updated_at": "2024-06-01T10:00:00Z"
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 409,
"title": "Resource conflict",
"detail": "A resource with the given identifier already exists.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-conflict"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Update a role binding
Update an existing role binding by changing its assigned role.
Payload Requirements
role_idis required and replaces the currently assigned role.- Only
role_idis mutable. The binding identity, principal, resource, and timestamps stay the same. - System-managed fields (
id,user_id,resource_type,resource_id,created_at,updated_at) are not accepted in the request body.
Valid example
{
"role_id": "Um9sZToyOmRLMjQ="
}
Invalid example
{
"role_id": "Um9sZToyOmRLMjQ=",
"user_id": "VXNlcjoxOmxQZzI="
}
This fails because only role_id can be updated on an existing binding.
Authorization
Requires both ROLE_BINDING_CREATE and ROLE_BINDING_DELETE permissions
on the binding’s resource. Together, these permissions grant
administrator-level authority on the resource. If the binding does not
exist, belongs to another account, or the caller lacks either permission,
the endpoint returns 404.
curl --request PATCH \
--url https://api.arize.com/v2/role-bindings/{binding_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"role_id": "Um9sZToyOmFCY0Q="
}
'import requests
url = "https://api.arize.com/v2/role-bindings/{binding_id}"
payload = { "role_id": "Um9sZToyOmFCY0Q=" }
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({role_id: 'Um9sZToyOmFCY0Q='})
};
fetch('https://api.arize.com/v2/role-bindings/{binding_id}', 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.arize.com/v2/role-bindings/{binding_id}",
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([
'role_id' => 'Um9sZToyOmFCY0Q='
]),
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.arize.com/v2/role-bindings/{binding_id}"
payload := strings.NewReader("{\n \"role_id\": \"Um9sZToyOmFCY0Q=\"\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://api.arize.com/v2/role-bindings/{binding_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"role_id\": \"Um9sZToyOmFCY0Q=\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/role-bindings/{binding_id}")
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 \"role_id\": \"Um9sZToyOmFCY0Q=\"\n}"
response = http.request(request)
puts response.read_body{
"id": "Um9sZUJpbmRpbmc6MTphQmNE",
"role_id": "Um9sZToxOmFCY0Q=",
"user_id": "VXNlcjo0MjphQmNE",
"resource_type": "SPACE",
"resource_id": "U3BhY2U6MTpWNEth",
"created_at": "2024-06-01T10:00:00Z",
"updated_at": "2024-06-01T10:00:00Z"
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 409,
"title": "Resource conflict",
"detail": "A resource with the given identifier already exists.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-conflict"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Authorizations
Most Arize AI endpoints require authentication. For those endpoints that require authentication, include your API key in the request header using the format
Path Parameters
The unique role binding identifier (base64) A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Body
Body containing role binding update parameters.
A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Response
A role binding object.
Unique identifier for the role binding.
A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
ID of the user this binding assigns the role to.
For a service key, this is the ID of the key's bot user — not the ID of
the person who created the key. Read it from bot_user.id on the
POST /v2/api-keys response, or from bot_user.id on the matching service
key entry returned by GET /v2/api-keys.
"RW50aXR5OjEyMzQ1"
Resource type for the binding. Only SPACE and PROJECT are supported for
single-binding CRUD. resource_id must encode the same resource type.
SPACE, PROJECT A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Timestamp when the binding was created.
Timestamp when the binding was last updated.
Was this page helpful?