Claude Platform Docs
AdministraciónOrganización

Gestión de usuarios

Gestiona a las personas de tu organización de Claude Enterprise con la Admin API: enumera miembros y cambia roles, envía y retira invitaciones, gestiona grupos y lee roles personalizados.

Esta página explica cómo gestionar de forma programática a las personas de tu organización de Claude Enterprise (claude.ai) usando la Admin API: enumerar miembros y buscarlos por dirección de correo electrónico, cambiar el rol de un miembro, eliminar miembros, enviar y retirar invitaciones, gestionar los grupos de tu empresa y su membresía, y leer los roles personalizados de tu organización. Para organizaciones de Claude Console (Claude Platform), consulta la guía de la Admin API para Claude Console.

¿Qué endpoints puede usar tu organización?

La Admin API es un único conjunto de endpoints bajo https://api.anthropic.com/v1/organizations/. Las organizaciones de Claude Console y de Claude Enterprise se autentican con claves diferentes y cada una tiene acceso a un subconjunto distinto de los endpoints:

EndpointsClaude Console (Claude Platform)Claude Enterprise (claude.ai)
Miembros e invitacionesDisponible; consulta la guía de la Admin APIDisponible (esta página)
GruposNo disponibleDisponible (esta página)
Roles personalizadosNo disponibleDisponible, solo lectura (esta página)
PluginsNo disponibleDisponible en beta
Límites de gastoNo disponibleDisponible
Informes de uso y costosDisponible; consulta la Usage and Cost APIDisponible a través de la Claude Enterprise Analytics API
Espacios de trabajo, claves de API, límites de velocidad y los demás endpoints de la guía de la Admin APIDisponibleNo disponible

Los miembros y las invitaciones usan los mismos endpoints para ambos tipos de organización; esta página documenta su comportamiento en Claude Enterprise, incluidos los roles de organización de Claude Enterprise. Los endpoints de grupos y roles personalizados existen solo para Claude Enterprise.

Descripción general

Esta página cubre cinco recursos:

RecursoEndpointsUso
MiembrosGET /v1/organizations/users
GET /v1/organizations/users/{user_id}
POST /v1/organizations/users/{user_id}
DELETE /v1/organizations/users/{user_id}
Enumerar los miembros de la organización o buscar uno por correo electrónico; cambiar el rol de un miembro; eliminar un miembro.
InvitacionesPOST /v1/organizations/invites
GET /v1/organizations/invites
GET /v1/organizations/invites/{invite_id}
DELETE /v1/organizations/invites/{invite_id}
Invitar a una persona a la organización, hacer seguimiento del estado de la invitación y retirarla antes de que se acepte.
GruposGET /v1/organizations/rbac_groups
GET /v1/organizations/rbac_groups/{rbac_group_id}
POST /v1/organizations/rbac_groups
POST /v1/organizations/rbac_groups/{rbac_group_id}
DELETE /v1/organizations/rbac_groups/{rbac_group_id}
Leer los grupos de tu empresa y los roles personalizados asociados a cada uno; crear, renombrar y eliminar grupos.
Miembros de gruposGET /v1/organizations/rbac_groups/{rbac_group_id}/members
POST /v1/organizations/rbac_groups/{rbac_group_id}/members
DELETE /v1/organizations/rbac_groups/{rbac_group_id}/members/{user_id}
Leer los miembros de un grupo; agregar y eliminar miembros.
Roles personalizadosGET /v1/organizations/rbac_roles
GET /v1/organizations/rbac_roles/{rbac_role_id}
GET /v1/organizations/rbac_roles/{rbac_role_id}/permissions
Leer los roles personalizados de tu organización y los permisos que otorga cada rol.

Los roles personalizados y sus asociaciones a grupos se gestionan en la configuración de la organización de claude.ai; la API los lee pero no puede cambiarlos.

Inicio rápido

Establece la variable de entorno ANTHROPIC_API_KEY con tu clave de Admin API. Los ejemplos de esta página leen la clave desde ella. El SDK y la CLI ant envían los encabezados Authorization y anthropic-version por ti.

Enumera los miembros de la organización, del más reciente al más antiguo:

client = anthropic.Anthropic()

users = client.organization.users.list(limit=20)

for user in users:
    print(f"{user.id}: {user.email} ({user.role})")
{
  "data": [
    {
      "type": "user",
      "id": "user_01AbCdEfGhIjKlMnOpQrSt",
      "email": "jane@example.com",
      "name": "Jane Smith",
      "role": "user",
      "added_at": "2026-06-12T09:14:03Z"
    }
  ],
  "has_more": false,
  "first_id": "user_01AbCdEfGhIjKlMnOpQrSt",
  "last_id": "user_01AbCdEfGhIjKlMnOpQrSt"
}

Conceptos clave

Roles de organización

Cada miembro tiene exactamente un rol de organización. Las lecturas devuelven el rol del miembro como uno de cinco valores:

RolSignificado
userUn miembro estándar.
managedUn miembro cuyos permisos se otorgan a través de los roles personalizados asociados a sus grupos.
ownerUn propietario de la organización.
membership_adminUn miembro que puede gestionar los miembros de la organización.
primary_ownerEl propietario principal de la organización. Hay exactamente uno.

La API solo puede asignar los roles user y managed, al crear invitaciones y al actualizar roles. Asignar managed requiere el alcance write:rbac_groups además de write:members, porque los permisos de un miembro gestionado provienen de los roles personalizados asociados a sus grupos. Los roles administrativos (owner, membership_admin y primary_owner) se asignan en la configuración de la organización de claude.ai, y los miembros que los tienen no pueden modificarse ni eliminarse a través de esta API.

Miembros e invitaciones

Una persona se convierte en miembro al aceptar una invitación (o mediante el inicio de sesión único de tu organización, donde esté configurado). Crear una invitación envía un correo electrónico de invitación; la invitación se lee entonces como pending hasta que el destinatario la acepta (accepted) o pasa su expires_at asignado por el servidor (expired). Solo se puede retirar una invitación pending. Para cambiar la dirección de correo electrónico o el rol de una invitación pendiente, retírala y crea una nueva.

Si el plan de tu organización asigna miembros desde un grupo finito de asientos comprados, una invitación pendiente consume un asiento. El endpoint de creación de invitaciones no acepta un parámetro de asiento ni de nivel: el asiento se asigna automáticamente desde el nivel más bajo que tenga disponibilidad. Crear una invitación cuando no hay ningún asiento libre falla con un error 400 en lugar de comprar un asiento. Retirar la invitación, dejar que expire o eliminar al miembro más adelante devuelve el asiento al grupo.

Grupos y roles

Los grupos conectan a los miembros con roles personalizados (control de acceso basado en roles, el rbac en las rutas de los endpoints y los nombres de los alcances). Los grupos pertenecen a tu empresa en su conjunto (la organización principal junto con todas las organizaciones que dependen de ella) y no a una sola organización, por lo que los alcances de grupos (read:rbac_groups y write:rbac_groups) requieren una clave creada para todas las organizaciones vinculadas. Cada grupo tiene un source_type: direct para grupos creados en claude.ai, scim para grupos aprovisionados por tu proveedor de identidad. El campo role_ids de un grupo enumera los ID de los roles personalizados asociados a él; resuélvelos a nombres y permisos con los endpoints de roles personalizados, teniendo en cuenta que el catálogo de roles es por organización mientras que los grupos abarcan toda la empresa, por lo que obtener un rol que pertenece a otra organización de tu empresa devuelve 404 para tu clave. El campo es null (en lugar de []) cuando los datos de roles no estuvieron disponibles temporalmente, así que vuelve a intentarlo para distinguir una lectura degradada de un grupo sin roles.

Control de versiones

Envía el encabezado anthropic-version en cada solicitud; consulta Versiones de la API para ver las versiones disponibles.

Límites de velocidad

Los endpoints de la Admin API comparten un límite por organización de 100 solicitudes por minuto; la creación de invitaciones tiene en cambio su propio límite de 1,200 solicitudes por hora. Las solicitudes que superan un límite devuelven 429 Too Many Requests.

Paginación

Las listas de miembros e invitaciones usan paginación basada en ID: pasa limit (predeterminado 20, máximo 1000) más como máximo uno de before_id o after_id, y pagina usando los campos first_id y last_id de cada respuesta hasta que has_more sea false. Las listas de grupos y roles personalizados usan en cambio un cursor opaco: el valor next_page de la respuesta se pasa sin cambios como parámetro page en la siguiente solicitud, hasta que next_page sea null.

Cuando iteras sobre los resultados, el SDK obtiene más páginas por ti, por lo que limit establece el tamaño de página, no el total. En la CLI, --limit establece el número total de resultados para las listas de miembros e invitaciones. Para las listas de grupos y roles, establece el tamaño de página.

Respuestas de error

Las respuestas de error siguen la forma estándar documentada en Errores.

Miembros

Enumerar miembros

GET /v1/organizations/users devuelve los miembros de la organización, empezando por los agregados más recientemente. Filtra por email para buscar un miembro específico; la coincidencia no distingue mayúsculas de minúsculas y tolera variantes comunes de la misma dirección (por ejemplo, jane+hiring@example.com coincide con jane@example.com). Requiere el alcance read:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta List users en la referencia de la API.

client = anthropic.Anthropic()

users = client.organization.users.list(email="jane@example.com")

for user in users:
    print(f"{user.id}: {user.email} ({user.role})")

Obtener un miembro

GET /v1/organizations/users/{user_id} devuelve un miembro por ID. Requiere el alcance read:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Get user en la referencia de la API.

client = anthropic.Anthropic()

user = client.organization.users.retrieve("user_01AbCdEfGhIjKlMnOpQrSt")

print(f"id: {user.id}")
print(f"email: {user.email}")
print(f"role: {user.role}")

Cambiar el rol de un miembro

POST /v1/organizations/users/{user_id} establece el rol del miembro en user o managed. Los miembros que tienen un rol administrativo (owner, membership_admin o primary_owner) no pueden cambiarse a través de este endpoint, y los roles administrativos no pueden asignarse; ambos casos devuelven 400 y se gestionan en la configuración de la organización de claude.ai. Si el proveedor de identidad de tu organización gestiona los roles (SSO avanzado o aprovisionamiento SCIM avanzado), las actualizaciones de roles devuelven 400. Requiere el alcance write:members, más write:rbac_groups al cambiar el rol a managed.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Update user en la referencia de la API.

client = anthropic.Anthropic()

user = client.organization.users.update("user_01AbCdEfGhIjKlMnOpQrSt", role="managed")

print(f"id: {user.id}")
print(f"role: {user.role}")

Eliminar un miembro

DELETE /v1/organizations/users/{user_id} elimina al miembro de la organización y devuelve al grupo de la organización cualquier asiento comprado que ocupara. Los miembros que tienen un rol administrativo no pueden eliminarse a través de este endpoint, y si tu proveedor de identidad gestiona la membresía (SCIM), las eliminaciones devuelven 400. Requiere el alcance write:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Remove user en la referencia de la API.

client = anthropic.Anthropic()

removed_user = client.organization.users.remove("user_01AbCdEfGhIjKlMnOpQrSt")

print(f"id: {removed_user.id}")
{
  "type": "user_deleted",
  "id": "user_01AbCdEfGhIjKlMnOpQrSt"
}

Invitaciones

Crear una invitación

POST /v1/organizations/invites envía un correo electrónico de invitación y devuelve la invitación con un expires_at asignado por el servidor. role debe ser user o managed. Si ya existe una invitación pendiente para la dirección de correo electrónico, o la dirección ya pertenece a un miembro, la solicitud devuelve 400 indicando el recurso existente. Las organizaciones cuyo proveedor de identidad aprovisiona usuarios automáticamente (JIT o SCIM) no pueden crear invitaciones a través de la API. Requiere el alcance write:members, más write:rbac_groups cuando role es managed.

En los planes que asignan miembros desde un grupo finito de asientos, la invitación toma automáticamente un asiento del nivel más bajo que tenga disponibilidad. La API no acepta un parámetro de nivel. Si no hay ningún asiento libre, la solicitud falla con un error 400 en lugar de comprar un asiento. Agrega asientos a través de la gestión del plan de la organización y vuelve a intentarlo.

El campo opcional rbac_group_ids enumera los grupos (por ID con prefijo rbac_group_) que se asignarán al miembro cuando acepte. Pasar un rbac_group_ids no vacío requiere además que la clave tenga el alcance write:rbac_groups, porque la asignación de grupos puede otorgar los permisos asociados a los roles del grupo.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Create invite en la referencia de la API.

client = anthropic.Anthropic()

invite = client.organization.invites.create(
    email="newhire@example.com",
    role="managed",
    rbac_group_ids=["rbac_group_01UvWxYzAbCdEfGhIjKlMn"],
)

print(f"id: {invite.id}")
print(f"email: {invite.email}")
print(f"status: {invite.status}")
print(f"expires_at: {invite.expires_at}")
{
  "type": "invite",
  "id": "invite_01QrStUvWxYzAbCdEfGhIj",
  "email": "newhire@example.com",
  "role": "managed",
  "invited_at": "2026-07-06T16:20:11Z",
  "expires_at": "2026-07-27T16:20:11Z",
  "accepted_at": null,
  "status": "pending",
  "rbac_group_ids": ["rbac_group_01UvWxYzAbCdEfGhIjKlMn"]
}

Enumerar invitaciones

GET /v1/organizations/invites devuelve las invitaciones de la organización, empezando por las más recientes, en los estados pending, accepted y expired; no hay filtro de estado. Requiere el alcance read:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta List invites en la referencia de la API.

client = anthropic.Anthropic()

invites = client.organization.invites.list(limit=20)

for invite in invites:
    print(f"{invite.id}: {invite.email} ({invite.status})")

Obtener una invitación

GET /v1/organizations/invites/{invite_id} devuelve una invitación por ID. Requiere el alcance read:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Get invite en la referencia de la API.

client = anthropic.Anthropic()

invite = client.organization.invites.retrieve("invite_01QrStUvWxYzAbCdEfGhIj")

print(f"id: {invite.id}")
print(f"email: {invite.email}")
print(f"status: {invite.status}")

Retirar una invitación

DELETE /v1/organizations/invites/{invite_id} retira una invitación pending y desactiva el enlace del correo electrónico de invitación. Retirar una invitación accepted devuelve 400 (elimina al miembro en su lugar); retirar una invitación expired devuelve 400. Requiere el alcance write:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Delete invite en la referencia de la API.

client = anthropic.Anthropic()

deleted_invite = client.organization.invites.delete("invite_01QrStUvWxYzAbCdEfGhIj")

print(f"id: {deleted_invite.id}")

Grupos

Los grupos que tu empresa crea directamente, en la configuración de la organización de claude.ai o a través de esta API (source_type: "direct"), admiten todos los endpoints de esta sección. Los grupos aprovisionados por tu proveedor de identidad (source_type: "scim") pueden leerse pero no modificarse: renombrar o eliminar un grupo SCIM, o cambiar su membresía, devuelve 400, porque tu proveedor de identidad es su propietario.

Enumerar grupos

GET /v1/organizations/rbac_groups devuelve los grupos de tu empresa, incluidos los grupos gestionados por el proveedor de identidad (scim). Requiere el alcance read:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta List groups en la referencia de la API.

client = anthropic.Anthropic()

groups = client.beta.organization.rbac_groups.list(limit=20)

for group in groups:
    print(f"{group.id}: {group.name} ({group.source_type})")
{
  "data": [
    {
      "type": "rbac_group",
      "id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
      "name": "Engineering",
      "source_type": "direct",
      "role_ids": ["rbac_role_01CdEfGhIjKlMnOpQrStUv"],
      "roles": ["rbac_role_01CdEfGhIjKlMnOpQrStUv"],
      "created_at": "2026-03-18T10:01:42Z",
      "updated_at": "2026-05-02T08:55:09Z"
    }
  ],
  "has_more": false,
  "next_page": null
}

Obtener un grupo

GET /v1/organizations/rbac_groups/{rbac_group_id} devuelve un grupo por ID. Requiere el alcance read:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Get group en la referencia de la API.

client = anthropic.Anthropic()

group = client.beta.organization.rbac_groups.retrieve(
    "rbac_group_01UvWxYzAbCdEfGhIjKlMn"
)

print(f"id: {group.id}")
print(f"name: {group.name}")
print(f"source_type: {group.source_type}")

Crear un grupo

POST /v1/organizations/rbac_groups crea un grupo con el name indicado (de 1 a 255 caracteres) y sin roles ni miembros. Requiere el alcance write:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Create group en la referencia de la API.

client = anthropic.Anthropic()

group = client.beta.organization.rbac_groups.create(name="Engineering")

print(f"id: {group.id}")
print(f"name: {group.name}")
{
  "type": "rbac_group",
  "id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
  "name": "Engineering",
  "source_type": "direct",
  "role_ids": [],
  "roles": [],
  "created_at": "2026-07-09T18:00:00Z",
  "updated_at": "2026-07-09T18:00:00Z"
}

Renombrar un grupo

POST /v1/organizations/rbac_groups/{rbac_group_id} actualiza el grupo. name es el único campo que este endpoint puede cambiar. Requiere el alcance write:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Update group en la referencia de la API.

client = anthropic.Anthropic()

group = client.beta.organization.rbac_groups.update(
    "rbac_group_01UvWxYzAbCdEfGhIjKlMn", name="Platform Engineering"
)

print(f"id: {group.id}")
print(f"name: {group.name}")

Eliminar un grupo

DELETE /v1/organizations/rbac_groups/{rbac_group_id} elimina el grupo. Sus miembros siguen siendo miembros de sus organizaciones, pero pierden los permisos de los roles asociados, y un límite de gasto de grupo, si existía, deja de aplicárseles. Requiere el alcance write:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Delete group en la referencia de la API.

client = anthropic.Anthropic()

deleted_group = client.beta.organization.rbac_groups.delete(
    "rbac_group_01UvWxYzAbCdEfGhIjKlMn"
)

print(f"id: {deleted_group.id}")
{
  "id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
  "type": "rbac_group_deleted"
}

Enumerar los miembros de un grupo

GET /v1/organizations/rbac_groups/{rbac_group_id}/members devuelve los miembros del grupo (cada uno con su user_id y correo electrónico), empezando por los más antiguos. Solo se devuelven los miembros actuales de las organizaciones de tu empresa, por lo que una página puede contener menos de limit entradas mientras has_more es true. Requiere el alcance read:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta List group members en la referencia de la API.

client = anthropic.Anthropic()

members = client.beta.organization.rbac_groups.members.list(
    "rbac_group_01UvWxYzAbCdEfGhIjKlMn", limit=100
)

for member in members:
    print(f"{member.user_id}: {member.email}")
{
  "data": [
    {
      "type": "rbac_group_member",
      "rbac_group_id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
      "group_id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
      "user_id": "user_01AbCdEfGhIjKlMnOpQrSt",
      "email": "jane@example.com",
      "created_at": "2026-04-07T12:30:00Z"
    }
  ],
  "has_more": false,
  "next_page": null
}

Agregar un miembro a un grupo

POST /v1/organizations/rbac_groups/{rbac_group_id}/members agrega un miembro de la organización al grupo por user_id. El usuario ya debe ser miembro de una de las organizaciones de tu empresa (de lo contrario, la solicitud devuelve 404), y agregar a alguien que ya está en el grupo devuelve 400. Para los grupos scim, la membresía se gestiona en tu proveedor de identidad y esta solicitud devuelve 400. Para asignar grupos a una persona que aún no se ha unido, usa rbac_group_ids en la creación de invitaciones en su lugar. Requiere el alcance write:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Add group member en la referencia de la API.

client = anthropic.Anthropic()

member = client.beta.organization.rbac_groups.members.add(
    "rbac_group_01UvWxYzAbCdEfGhIjKlMn", user_id="user_01AbCdEfGhIjKlMnOpQrSt"
)

print(f"user_id: {member.user_id}")
print(f"email: {member.email}")
{
  "type": "rbac_group_member",
  "rbac_group_id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
  "group_id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
  "user_id": "user_01AbCdEfGhIjKlMnOpQrSt",
  "email": "jane@example.com",
  "created_at": "2026-07-09T18:00:00Z"
}

Eliminar un miembro de un grupo

DELETE /v1/organizations/rbac_groups/{rbac_group_id}/members/{user_id} elimina al miembro del grupo; sigue siendo miembro de su organización. La solicitud devuelve 404 si el usuario no es miembro del grupo, y 400 para los grupos scim, cuya membresía se gestiona en tu proveedor de identidad. Requiere el alcance write:rbac_groups.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Remove group member en la referencia de la API.

client = anthropic.Anthropic()

removed_member = client.beta.organization.rbac_groups.members.remove(
    "user_01AbCdEfGhIjKlMnOpQrSt", rbac_group_id="rbac_group_01UvWxYzAbCdEfGhIjKlMn"
)

print(f"user_id: {removed_member.user_id}")
{
  "rbac_group_id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
  "group_id": "rbac_group_01UvWxYzAbCdEfGhIjKlMn",
  "user_id": "user_01AbCdEfGhIjKlMnOpQrSt",
  "type": "rbac_group_member_deleted"
}

Roles personalizados

Los roles personalizados son de solo lectura a través de la API: estos endpoints catalogan los roles personalizados de tu organización (definidos en la configuración de la organización de claude.ai o aprovisionados por Anthropic) y los permisos que otorga cada rol. Las lecturas de roles personalizados usan el alcance read:members (no existe un alcance de roles separado) y funcionan con una clave a nivel de organización: a diferencia de los endpoints de grupos, no requieren una clave creada para todas las organizaciones vinculadas, y el catálogo devuelto es el de tu propia organización.

Lee el nombre de un rol desde su campo display_name. Para un rol aprovisionado por Anthropic, display_name puede diferir de la etiqueta que muestra claude.ai, y Anthropic podría cambiar el nombre. Para mantener una referencia duradera a un rol, almacena su id.

Enumerar roles

GET /v1/organizations/rbac_roles devuelve los roles personalizados de tu organización. Requiere el alcance read:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta List roles en la referencia de la API.

client = anthropic.Anthropic()

roles = client.beta.organization.rbac_roles.list(limit=20)

for role in roles:
    print(f"{role.id}: {role.display_name}")
{
  "data": [
    {
      "type": "rbac_role",
      "id": "rbac_role_01CdEfGhIjKlMnOpQrStUv",
      "display_name": "Engineering base",
      "name": "Engineering base",
      "created_at": "2026-03-18T10:01:42Z",
      "updated_at": "2026-05-02T08:55:09Z"
    }
  ],
  "has_more": false,
  "next_page": null
}

Obtener un rol

GET /v1/organizations/rbac_roles/{rbac_role_id} devuelve un rol por ID. Requiere el alcance read:members.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta Get role en la referencia de la API.

client = anthropic.Anthropic()

role = client.beta.organization.rbac_roles.retrieve("rbac_role_01CdEfGhIjKlMnOpQrStUv")

print(f"id: {role.id}")
print(f"display_name: {role.display_name}")

Enumerar los permisos de un rol

GET /v1/organizations/rbac_roles/{rbac_role_id}/permissions devuelve los permisos del rol. Cada permiso combina un resource (a qué se aplica: las funciones de producto de la organización, una herramienta de conector, un alcance OAuth de conector, un conector o todos los conectores) con una action (lo que otorga sobre ese recurso). Se omiten las filas de funciones que no están habilitadas para tu organización, por lo que una página puede contener menos de limit filas mientras has_more es true. Requiere el alcance read:members.

Dos valores de action requieren especial cuidado: un permiso organization cuya acción es capability_access_all (todas las funciones de producto) o capability_access_all_ga (todas las funciones de producto estables, es decir, todas las funciones no etiquetadas como beta o vista previa de investigación) es una concesión general (que no cubre ni el acceso a modelos ni los permisos del panel de administración con prefijo permission_) y se enumera como esa única fila en lugar de expandirse. Cuando hagas el recuento de lo que otorga un rol, trata una fila de concesión general como si cubriera todo lo que describe su variante, no solo las funciones nombradas en otras filas.

Para obtener detalles completos de los parámetros y esquemas de respuesta, consulta List role permissions en la referencia de la API.

client = anthropic.Anthropic()

permissions = client.beta.organization.rbac_roles.permissions.list(
    "rbac_role_01CdEfGhIjKlMnOpQrStUv", limit=20
)

for permission in permissions:
    print(permission.action)
{
  "data": [
    {
      "type": "rbac_role_permission",
      "resource": {
        "type": "organization",
        "organization_id": "12345678-1234-5678-1234-567812345678"
      },
      "action": "capability_access_all_ga"
    },
    {
      "type": "rbac_role_permission",
      "resource": {
        "type": "connector_tool",
        "connector_id": "mcpsrv_01WxYzAbCdEfGhIjKlMnOp",
        "tool_name": "search_tickets"
      },
      "action": "use"
    }
  ],
  "has_more": false,
  "next_page": null
}

Flujos de trabajo de ejemplo

Dar de baja a un empleado que se va

  1. Busca al miembro por correo electrónico:

    client = anthropic.Anthropic()
    
    users = client.organization.users.list(email="departing@example.com")
    
    for user in users:
        print(f"{user.id}: {user.email} ({user.role})")
  2. Elimínalo con DELETE /v1/organizations/users/{user_id}, usando el id de la respuesta. Su asiento, si lo tenía, vuelve al grupo.

  3. Si la persona aún no se había unido, la búsqueda no devuelve ningún miembro; en ese caso, enumera las invitaciones y retira su invitación pending.

Auditar la membresía de los grupos

  1. Enumera los grupos y registra el id, el name y los role_ids de cada grupo.

  2. Para cada grupo que tenga roles sensibles, recorre las páginas de GET /v1/organizations/rbac_groups/{rbac_group_id}/members y compara los correos electrónicos de los miembros con la lista de tu proveedor de identidad.

  3. Elimina a los miembros que ya no deberían estar en el grupo con DELETE /v1/organizations/rbac_groups/{rbac_group_id}/members/{user_id}. Para los grupos scim, haz el cambio en tu proveedor de identidad en su lugar.

Para un flujo de trabajo que combina la membresía de grupos con un aumento temporal del límite de gasto, consulta Aumentar temporalmente el límite de gasto de un miembro durante un incidente en la página de la Spend Limits API.

Preguntas frecuentes

¿Es esta una API diferente de la Admin API?

No. Los endpoints de miembros e invitaciones son los mismos endpoints /v1/organizations/ que usan las organizaciones de Claude Console; esta página documenta su comportamiento en Claude Enterprise. Los endpoints de grupos y roles personalizados forman parte de la misma API y existen solo para organizaciones de Claude Enterprise. La tabla de disponibilidad muestra qué endpoints puede llamar cada tipo de organización.

¿Puedo asignar el rol de propietario o de administrador de membresía a través de la API?

No. La API solo asigna user y managed, al crear invitaciones y al actualizar roles. Los roles administrativos se asignan en la configuración de la organización de claude.ai, y los miembros que los tienen no pueden modificarse ni eliminarse a través de la API.

¿Puedo crear o modificar grupos a través de la API?

Sí, con el alcance write:rbac_groups: crear, renombrar y eliminar grupos, y agregar o eliminar sus miembros. Hay dos cosas que la API no puede cambiar: los grupos aprovisionados por tu proveedor de identidad (source_type: "scim"), cuyo nombre y membresía pertenecen al proveedor de identidad, y los roles personalizados, que se gestionan en la configuración de la organización de claude.ai (la API los lee).

¿Una invitación no aceptada consume un asiento?

En los planes con un grupo finito de asientos, sí: una invitación pending ocupa un asiento. Retirar la invitación o dejar que expire libera el asiento. En los planes sin grupo de asientos, las invitaciones no consumen nada.

Mi organización usa inicio de sesión único. ¿Qué operaciones funcionan?

Si tu proveedor de identidad aprovisiona usuarios automáticamente (JIT o SCIM), la creación de invitaciones devuelve 400. Si gestiona los roles (SSO avanzado o aprovisionamiento SCIM avanzado), las actualizaciones de roles devuelven 400. Si gestiona la membresía (aprovisionamiento SCIM), las eliminaciones de miembros devuelven 400. Las lecturas funcionan en cualquier caso.

¿Qué ocurre con una clave de Admin API cuando la persona que la creó se va?

La clave sigue funcionando. Las claves de Admin API están asociadas a la organización, no a usuarios individuales, y una clave creada en claude.ai no caduca. Eliminar al creador de la organización o desaprovisionarlo a través de tu proveedor de identidad pone fin a su propio acceso, pero no a las claves que creó. Reducir su rol tampoco cambia las claves: cada clave permanece activa con sus alcances originales. Cuando des de baja a alguien que creó claves de Admin API, elimina esas claves en la sección Keys de claude.ai > Organization settings > API y crea reemplazos.

Consulta también

Was this page helpful?