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"
A universally unique identifier (base64-encoded opaque string).
"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?