> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestión de grupos

> Cree y gestione grupos, membresías, disponibilidad de modelos y límites de ACU de grupo mediante la API de clave de servicio.

<Info>
  Esta documentación corresponde a los despliegues federales de Devin. [Volver a la documentación de Devin](/es/get-started/devin-intro)
</Info>

Gestione [grupos](/es/federal/groups) mediante programación: cree, consulte, actualice y elimine grupos, gestione sus membresías y configure su [disponibilidad de modelos](/es/federal/model-provisioning) y sus [límites de ACU](/es/federal/acu-limits). Estos endpoints solo están disponibles en despliegues federales con múltiples tenants.

Todos los endpoints son solicitudes `POST` JSON. Cada cuerpo de solicitud incluye `service_key`; consulte la [descripción general de la API](/es/federal/api/overview) para obtener información sobre autenticación, ámbito, paginación y errores. Los endpoints de lectura requieren **Teams Read-Only**; los de escritura requieren **Teams Update**. Estos controladores tienen la restricción de despliegue autohospedado con múltiples tenants, pero no aplican la comprobación independiente del nivel de acceso a analytics utilizada por `/Analytics`.

El objeto de grupo que devuelven los endpoints de lectura y escritura:

| Campo | Descripción |
| - | - |
| `group_id` | El ID del grupo. |
| `name` | El nombre del grupo. |
| `member_count` | Número de miembros actuales. |
| `cascade_model_uids` | UID de los modelos permitidos para Cascade. Una lista vacía significa que el grupo no impone restricciones para Cascade. |
| `command_model_uids` | UID de los modelos permitidos para Command. Una lista vacía significa que el grupo no impone restricciones para Command. |
| `configured_cycle_acu_limit` | El límite de ACU por miembro configurado para el grupo. Se omite si no hay ningún límite configurado. Siempre es positivo cuando está presente. |
| `effective_cycle_acu_limit` | El límite por miembro que aporta este grupo. El límite real de un miembro es el más alto de entre todos sus grupos, salvo que un administrador le haya asignado una anulación manual por usuario. Se omite si no se aplica ningún límite. No incluye el límite de ACU del equipo, que limita el consumo total del equipo (consulte [Límites de ACU](/es/federal/acu-limits)). |

***

<h2 id="list-groups">
  Listar grupos
</h2>

```
POST /api/v1/ListGroups
```

Lista los grupos visibles para la clave de servicio. Las claves con ámbito de equipo muestran todos los grupos del equipo; las claves con ámbito de grupo muestran únicamente el grupo asignado. Requiere **Teams Read-Only**. Admite `page_size` / `page_token`.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/ListGroups \
  -H "Content-Type: application/json" \
  -d '{"service_key": "your_service_key"}'
```

```json theme={null}
{
  "groups": [
    {"groupId": "group_a", "name": "Engineering", "memberCount": 24},
    {"groupId": "group_b", "name": "Data Science", "memberCount": 9}
  ],
  "nextPageToken": ""
}
```

<h2 id="get-group">
  Obtener un grupo
</h2>

```
POST /api/v1/GetGroup
```

Obtiene un grupo, incluidas sus listas de permitidos de modelos y el límite de ACU configurado y efectivo. Requiere **Teams Read-Only**. Los grupos inexistentes, de otros equipos o fuera del ámbito devuelven `not_found`.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/GetGroup \
  -H "Content-Type: application/json" \
  -d '{"service_key": "your_service_key", "group_id": "group_a"}'
```

```json theme={null}
{
  "group": {
    "groupId": "group_a",
    "name": "Engineering",
    "memberCount": 24,
    "cascadeModelUids": ["model-uid-1", "model-uid-2"],
    "commandModelUids": [],
    "configuredCycleAcuLimit": 50,
    "effectiveCycleAcuLimit": 50
  }
}
```

<h2 id="create-group">
  Crear grupo
</h2>

```
POST /api/v1/CreateGroup
```

Crea un grupo con el `name` indicado en el equipo efectivo. Requiere **Teams Update**. Las claves con ámbito de grupo no pueden crear grupos.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/CreateGroup \
  -H "Content-Type: application/json" \
  -d '{"service_key": "your_service_key", "name": "Engineering"}'
```

La respuesta incluye el objeto `group` creado.

<h2 id="update-group">
  Actualizar grupo
</h2>

```
POST /api/v1/UpdateGroup
```

Actualiza parcialmente un grupo de forma atómica. Solo se modifican los campos presentes en la solicitud; los campos omitidos no se modifican. Una solicitud sin campos que actualizar devuelve `invalid_argument`. Requiere **Teams Update**.

<ParamField body="group_id" type="string" required>
  El grupo que se va a actualizar.
</ParamField>

<ParamField body="name" type="string">
  El nuevo nombre del grupo.
</ParamField>

<ParamField body="cascade_models" type="object">
  `{"model_uids": [...]}` — reemplaza la lista de permitidos de modelos Cascade del grupo. Pasar una lista vacía elimina la restricción de Cascade del grupo. Consulta [Model Provisioning](/es/federal/model-provisioning) para saber cómo se combinan las listas de permitidos de los grupos.
</ParamField>

<ParamField body="command_models" type="object">
  `{"model_uids": [...]}` — reemplaza la lista de permitidos de modelos Command del grupo. Pasar una lista vacía elimina la restricción de Command del grupo.
</ParamField>

<ParamField body="set_cycle_acu_limit" type="number">
  Establece el límite de ACU por miembro del grupo para cada ciclo de facturación. Debe ser positivo. Es mutuamente excluyente con `clear_cycle_acu_limit`.
</ParamField>

<ParamField body="clear_cycle_acu_limit" type="boolean">
  Elimina el límite de ACU del grupo, de modo que el grupo deja de establecer un límite de ACU por miembro; a partir de ese momento, los límites de los miembros se determinan por sus otros grupos o por anulaciones manuales por usuario (consulta [Límites de ACU](/es/federal/acu-limits)). En esta API de clave de servicio, `set_cycle_acu_limit` debe ser finito y positivo; usa esta operación explícita para eliminar la anulación del grupo. El control del portal para el límite de ACU del grupo acepta `cycle_acu_limit: 0` como solicitud para eliminarlo.
</ParamField>

```bash theme={null}
curl -X POST https://<your-server>/api/v1/UpdateGroup \
  -H "Content-Type: application/json" \
  -d '{
    "service_key": "your_service_key",
    "group_id": "group_a",
    "cascade_models": {"model_uids": ["model-uid-1", "model-uid-2"]},
    "set_cycle_acu_limit": 50
  }'
```

La respuesta contiene el objeto `group` actualizado.

<h2 id="delete-group">
  Eliminar grupo
</h2>

```
POST /api/v1/DeleteGroup
```

Elimina un grupo mediante `group_id`. Eliminar un grupo que ya no se encuentra dentro del ámbito posible de la clave se considera una operación sin efectos correcta. Requiere **Teams Update**.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/DeleteGroup \
  -H "Content-Type: application/json" \
  -d '{"service_key": "your_service_key", "group_id": "group_a"}'
```

<h2 id="list-group-members">
  Listar los miembros del grupo
</h2>

```
POST /api/v1/ListGroupMembers
```

Lista los miembros actuales de un grupo. Requiere **Teams Read-Only**. Admite `page_size` / `page_token`.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/ListGroupMembers \
  -H "Content-Type: application/json" \
  -d '{"service_key": "your_service_key", "group_id": "group_a"}'
```

```json theme={null}
{
  "members": [
    {"userId": "user_abc", "email": "dev@agency.gov"}
  ],
  "nextPageToken": ""
}
```

<h2 id="add-group-members">
  Agregar miembros al grupo
</h2>

```
POST /api/v1/AddGroupMembers
```

Agrega usuarios del equipo actual a un grupo mediante correo electrónico (`user_emails`, entre 1 y 1.000 entradas). Requiere **Teams Update**.

* Idempotente: agregar un miembro existente se considera correctamente una operación sin efectos.
* Los correos electrónicos se recortan y se eliminan los duplicados sin distinguir entre mayúsculas y minúsculas.
* Todo o nada: si algún correo electrónico es desconocido o pertenece a otro equipo, se rechaza toda la solicitud y no se realiza ninguna modificación.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/AddGroupMembers \
  -H "Content-Type: application/json" \
  -d '{
    "service_key": "your_service_key",
    "group_id": "group_a",
    "user_emails": ["dev@agency.gov", "lead@agency.gov"]
  }'
```

<h2 id="remove-group-members">
  Eliminar miembros del grupo
</h2>

```
POST /api/v1/RemoveGroupMembers
```

Elimina usuarios de un grupo por correo electrónico (`user_emails`, entre 1 y 1.000 entradas). Requiere **Teams Update**. La validación es de todo o nada, como en Agregar miembros al grupo; eliminar un usuario válido que no es miembro se completa correctamente como una operación sin efectos.

```bash theme={null}
curl -X POST https://<your-server>/api/v1/RemoveGroupMembers \
  -H "Content-Type: application/json" \
  -d '{
    "service_key": "your_service_key",
    "group_id": "group_a",
    "user_emails": ["dev@agency.gov"]
  }'
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.