---
title: "Update Team Role"
method: PUT
path: "/api/v1/team/roles/{role_id}"
tags: ["team"]
---

# Update Team Role

`PUT /api/v1/team/roles/{role_id}`

## Request

- Base URL: `https://api.getanana.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getanana.com/api/v1/team/roles/{role_id}`
- Auth: none declared

Set a role's name, description and permissions (milestone F).

The Admin role is locked (D1), a set must hold what its permissions require
(D12), and you can only add or remove permissions you hold (D11).

## Path parameters

- `role_id` string, uuid, required

## Request body

- TenantRoleUpdate: A role's whole editable state: the page always sends all three.
  - `name` string, required
  - `description` string, required
  - `permissions` TenantPermission[], required

## Response `200`

Successful Response

- TenantRoleRead
  - `id` string, uuid, required
  - `kind` 'ADMIN' | 'MEMBER' | 'CUSTOM', required: A role's kind. Every organization has one ADMIN and one MEMBER role; CUSTOM roles are ones an organization adds (milestone G).
  - `name` string, required
  - `description` string, required
  - `permissions` TenantPermission[], required

## Other responses

- `403`: A permission added or removed that you don't hold
- `404`: Not one of this organization's roles
- `409`: The Admin role, or a name another role has
- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-10-15** `b296c001373b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/team/roles/:role_id/put.md)

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getanana/apis/cleon-api/revisions/4d9d38769a75?raw)
