---
title: "Partially update role"
method: PATCH
path: "/v1/role/{role_id}"
tags: ["Roles"]
---

# Partially update role

`PATCH /v1/role/{role_id}`

Partially update a role object. Specify the fields to update in the payload. Any object-type fields will be deep-merged with existing content. Currently we do not support removing fields or setting them to null.

## Path parameters

- `role_id` string, uuid, required — Role id

## Request body

- PatchRole
  - `description` string, nullable — Textual description of the role
  - `name` string, nullable — Name of the role
  - `add_member_permissions` object[], nullable — A list of permissions to add to the role
    - `permission` 'create' | 'read' | 'update' | 'delete' | 'create_acls' | 'read_acls' | 'update_acls' | 'delete_acls', required — Each permission permits a certain type of operation on an object in the system Permissions can be assigned to to objects on an individual basis, or grouped into roles
    - `restrict_object_type` 'organization' | 'project' | 'experiment' | 'dataset' | 'prompt' | 'prompt_session' | 'group' | 'role' | 'org_member' | 'project_log' | 'org_project', nullable — The object type that the ACL applies to
  - `remove_member_permissions` object[], nullable — A list of permissions to remove from the role
    - `permission` 'create' | 'read' | 'update' | 'delete' | 'create_acls' | 'read_acls' | 'update_acls' | 'delete_acls', required — Each permission permits a certain type of operation on an object in the system Permissions can be assigned to to objects on an individual basis, or grouped into roles
    - `restrict_object_type` 'organization' | 'project' | 'experiment' | 'dataset' | 'prompt' | 'prompt_session' | 'group' | 'role' | 'org_member' | 'project_log' | 'org_project', nullable — The object type that the ACL applies to
  - `add_member_roles` string[], nullable — A list of role IDs to add to the role's inheriting-from set
  - `remove_member_roles` string[], nullable — A list of role IDs to remove from the role's inheriting-from set

## Response `200`

Returns the role object

- Role — A role is a collection of permissions which can be granted as part of an ACL Roles can consist of individual permissions, as well as a set of roles they inherit from
  - `id` string, uuid, required — Unique identifier for the role
  - `org_id` string, uuid, nullable — Unique id for the organization that the role belongs under A null org_id indicates a system role, which may be assigned to anybody and inherited by any other role, but cannot be edited. It is forbidden to change the org after creating a role
  - `user_id` string, uuid, nullable — Identifies the user who created the role
  - `created` string, date-time, nullable — Date of role creation
  - `name` string, required — Name of the role
  - `description` string, nullable — Textual description of the role
  - `deleted_at` string, date-time, nullable — Date of role deletion, or null if the role is still active
  - `member_permissions` object[], nullable — (permission, restrict_object_type) tuples which belong to this role
    - `permission` 'create' | 'read' | 'update' | 'delete' | 'create_acls' | 'read_acls' | 'update_acls' | 'delete_acls', required — Each permission permits a certain type of operation on an object in the system Permissions can be assigned to to objects on an individual basis, or grouped into roles
    - `restrict_object_type` 'organization' | 'project' | 'experiment' | 'dataset' | 'prompt' | 'prompt_session' | 'group' | 'role' | 'org_member' | 'project_log' | 'org_project', nullable — The object type that the ACL applies to
  - `member_roles` string[], nullable — Ids of the roles this role inherits from An inheriting role has all the permissions contained in its member roles, as well as all of their inherited permissions

## Other responses

- `400` — The request was unacceptable, often due to missing a required parameter
- `401` — No valid API key provided
- `403` — The API key doesn’t have permissions to perform the request
- `429` — Too many requests hit the API too quickly. We recommend an exponential backoff of your requests
- `500` — Something went wrong on Braintrust's end. (These are rare.)

## Changes

- **2024-09-30** `ac2727014d93` — 6 breaking, 2 info
  - the response's body became nullable
  - the response's body became nullable
  - the response's body became nullable
  - the response's body became nullable
  - …4 more
- **2024-09-25** `68955d9009ff` — 33 breaking, 14 info
  - added `#/components/schemas/AclObjectType, subschema #2` to the `add_member_permissions/items/restrict_object_type` request property `allOf` list
  - added `#/components/schemas/AclObjectType, subschema #2` to the `remove_member_permissions/items/restrict_object_type` request property `allOf` list
  - the request property `add_member_permissions/items/restrict_object_type` became not nullable
  - the request property `remove_member_permissions/items/restrict_object_type` became not nullable
  - …43 more
- **2024-07-23** `9eeeeb30b963` — 1 breaking, 2 warning, 15 info
  - the `member_permissions/items/` response's property type/format changed from `string`/`` to `object`/`` for status `200`
  - removed the request property `member_permissions`
  - removed the request property `member_roles`
  - added the new optional request property `add_member_permissions`
  - …14 more
- **2024-05-10** `a44e16cb39fc` — 1 warning, 1 info
  - added the new `undefined` enum value to the `member_permissions/items/` response property for the response status `200`
  - added the new `undefined` enum value to the request property `member_permissions/items/`
- **2024-05-06** `44b51ad3239a` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/braintrustdata/apis/braintrust-api/changes/v1/role/:role_id/patch.md)

---

[API](https://skmtc.dev/braintrustdata/apis/braintrust-api.md) · [All operations](https://skmtc.dev/braintrustdata/apis/braintrust-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/braintrustdata/braintrust-api/revisions/9d216c8243fe/schema)
