Referencia de Control de Acceso
Copiar una solicitud de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Capgo utiliza el control de acceso basado en rol (RBAC) para gestionar qué puede hacer cada miembro del equipo. Los roles se organizan por ámbito — desde la organización completa hasta un solo paquete. Roles are organized by scope — from the entire organization down to a single bundle. __CAPGO_KEEP_0__ uses role-based access control (RBAC) to manage what each team member can do.
For a visual walkthrough of managing members in the dashboard, see __CAPGO_KEEP_0__ Organización.
Ámbitos de rol
Sección titulada “Ámbitos de rol”Cada rol pertenece a un ámbito que determina qué recurso concede acceso.
| Ámbito | Aplica a | Uso de ejemplo |
|---|---|---|
| Organización | La organización completa y todos sus aplicativos | Tu cofundador obtiene Super Administrador; tu contable obtiene Administrador de facturación |
| Aplicación | Una aplicación y sus canales | Un contratista que trabaja en una aplicación obtiene el rol de Desarrollador de Aplicación |
| Canales | Un canal único dentro de una aplicación | Un ingeniero de pruebas solo gestiona el staging canales |
| Paquete | Una versión de paquete única | Un revisor necesita acceso de lectura a una versión de lanzamiento específica |
Un miembro puede tener un rol por ámbito objetivo — por ejemplo, un rol de organización, un rol en Aplicación A y un rol diferente en Aplicación B.
Roles de la organización
Sección titulada “Roles de la organización”Estos roles se asignan cuando se invita a un miembro. Otorgan acceso a toda la organización.
| Rol | Nombre interno | Descripción |
|---|---|---|
| Administrador Supremo | org_super_admin | Equivalente a dueño. Control total incluyendo eliminar la org, gestionar facturación, y transferir aplicaciones. Se concede automáticamente al creador de la org. |
| Administrador | org_admin | Administración completa — gestionar miembros, aplicaciones, canales. No se puede eliminar la org, actualizar facturación, transferir aplicaciones, ni promover usuarios a Administrador Supremo. |
| Gerente de Facturación | org_billing_admin | Acceso solo a facturación: ver y actualizar información de facturación, facturas, y registros de auditoría de facturación. Sin acceso a aplicaciones ni miembros. |
| Miembro | org_member | Acceso lector para la org y todos sus apps. |
Matriz de permisos de la organización
Sección titulada “Matriz de permisos de la organización”| Permiso | Descripción | Administrador Supremo | Administrador | Gerente de Facturación | Miembro |
|---|---|---|---|---|---|
org.read | Ver la organización | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Editar nombre de la org, logo, correo de administración | ✅ | ✅ | ❌ | ❌ |
org.delete | Eliminar permanentemente la organización | ✅ | ❌ | ❌ | ❌ |
org.read_members | Ver la lista de miembros | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Invitar nuevos miembros | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Cambiar roles de miembro (el administrador no puede promover a Super Administrador — bloqueado por la jerarquía de roles) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | Ver información de facturación y plan actual | ✅ | ✅ | ✅ | ❌ |
org.update_billing | Actualizar método de pago y plan | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | Ver facturas | ✅ | ✅ | ✅ | ❌ |
org.read_audit | Ver registro de actividad de la organización | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | Ver registro de auditoría específico de facturación | ✅ | ✅ | ✅ | ❌ |
Roles de aplicación
Sección titulada “Roles de aplicación”Limitado a una sola aplicación. Utilice estos cuando un miembro del equipo solo debe trabajar en una aplicación, no toda la organización.
| Rol | Nombre interno | Descripción |
|---|---|---|
| Administrador de Aplicación | app_admin | Control total de una aplicación — canales, dispositivos, roles de usuario para la aplicación. No se puede eliminar o transferir la aplicación (esas son operaciones de nivel de organización). |
| Desarrollador de Aplicación | app_developer | Subir paquetes, gestionar dispositivos, desencadenar compilaciones nativas, actualizar configuraciones de canal. Sin eliminación, sin cambios en configuraciones de aplicación, sin creación de canales. |
| Subidor de Aplicación | app_uploader | Acceso de lectura + subir nuevas versiones de paquetes. |
| Lector de Aplicación | app_reader | Solo lectura — estadísticas, paquetes, canales, registros, dispositivos. |
Matriz de permisos de aplicación
Sección titulada “Matriz de permisos de aplicación”| Permiso | Descripción | Administrador de Aplicación | Desarrollador de Aplicación | Subidor de Aplicación | Lector de Aplicación |
|---|---|---|---|---|---|
app.read | Ver detalles de la aplicación, estadísticas y metadatos | ✅ | ✅ | ✅ | ✅ |
app.update_settings | Editar ajustes de la aplicación | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | Ver lista de paquetes subidos | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | Subir una nueva versión de paquete | ✅ | ✅ | ✅ | ❌ |
app.create_channel | Crear un nuevo canal | ✅ | ❌ | ❌ | ❌ |
app.read_channels | Ver canales | ✅ | ✅ | ✅ | ✅ |
app.read_logs | Ver registros de entrega de actualizaciones | ✅ | ✅ | ✅ | ✅ |
app.manage_devices | Asignar, sobreescribir o desvincular dispositivos | ✅ | ✅ | ❌ | ❌ |
app.read_devices | Ver la lista de dispositivos | ✅ | ✅ | ✅ | ✅ |
app.build_native | Desencadenar una compilación nube nativa | ✅ | ✅ | ❌ | ❌ |
app.read_audit | Ver el registro de actividad de nivel de aplicación | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | Administrar asignaciones de roles de nivel de aplicación | ✅ | ❌ | ❌ | ❌ |
bundle.delete | Eliminar un paquete | ✅ | ❌ | ❌ | ❌ |
Papeles de canal
Título de la sección “Papeles de canal”Limitado a un solo canal. Útil para dar acceso objetivo a un canal de liberación específico.
| Papel | Nombre interno | Descripción |
|---|---|---|
| Administrador de canal | channel_admin | Control total de un canal: configuración, promoción/retorno de paquetes, gestión de dispositivos forzados. |
| Vista de canal | channel_reader | Solo lectura — paquete actual, historia, dispositivos forzados, registro de auditoría. |
Matriz de permisos de canal
Sección titulada “Matriz de permisos de canal”| Permiso | Descripción | Administrador de canal | Vista de canal |
|---|---|---|---|
channel.read | Ver el canal y su paquete actual | ✅ | ✅ |
channel.update_settings | Editar ajustes de canal (tornillos de plataforma, política de actualización…) | ✅ | ❌ |
channel.delete | Borrar el canal | ✅ | ❌ |
channel.read_history | Ver historial de asignación de paquete | ✅ | ✅ |
channel.promote_bundle | Establecer el paquete activo en el canal | ✅ | ❌ |
channel.rollback_bundle | Revertir a un paquete anterior | ✅ | ❌ |
channel.manage_forced_devices | Forzar dispositivos específicos a este canal | ✅ | ❌ |
channel.read_forced_devices | Ver lista de dispositivos forzados | ✅ | ✅ |
channel.read_audit | Ver registro de actividad del canal | ✅ | ✅ |
Roles de paquete
Título de sección “Roles de paquete”Limitado a una versión de paquete única. Raramente necesario — la mayoría de los equipos utilizan roles de aplicación en su lugar.
| Rol | Nombre interno | Descripción |
|---|---|---|
| Administrador de paquete | bundle_admin | Acceso de lectura, actualización de metadatos y eliminación de un paquete específico. |
| Vista de paquete | bundle_reader | Acceso de lectura solo a un paquete específico. |
Sobrescrituras de permisos de canal (Consola)
Sección titulada “Sobrescrituras de permisos de canal (Panel de control)”En el panel de control, el acceso a los canales se determina por defecto por el rol de la aplicación del usuario. Para un control más detallado, puede sobrescribir permisos de canal específicos por usuario o grupo sin cambiar su rol de aplicación.
Las sobrescripciones se configuran desde la pestaña Acceso del aplicativo haciendo clic en el botón de permisos de canal (ícono de escudo) junto a un usuario. Consulte Organización — Sobrescribiendo permisos de canal para una guía visual.
Permisos sobrescribibles
Sección titulada “Permisos sobrescribibles”| Permiso | Descripción | Comportamiento por defecto |
|---|---|---|
| Leer | Ver el canal y su paquete actual | Herencia del rol de aplicación |
| Historial | Ver el historial de asignación de paquetes | Herencia del rol de aplicación |
| Asociar paquete | Establecer o cambiar el paquete activo en el canal | Herencia del rol de aplicación |
Cada permiso se puede configurar para:
- Predeterminado — heredar del rol de la aplicación (predeterminado)
- Permitir — otorgar explícitamente, sin importar el rol de la aplicación
- Denegar — bloquear explícitamente, sin importar el rol de la aplicación
Esto te permite, por ejemplo, dar a un Lector de Aplicación la capacidad de asociar paquetes en el staging canal sin promoverlos a Desarrollador de Aplicación.
Jerarquía de roles
Sección titulada “Jerarquía de roles”Los roles forman una jerarquía. Un rol padre hereda todos los permisos de sus hijos. Esto significa que un org_admin puede hacer todo lo que un app_admin puede, lo que a su vez puede hacer todo lo que un channel_admin puede, y así sucesivamente.
Super Admin (org_super_admin) └── Admin (org_admin) └── App Admin (app_admin) ├── App Developer (app_developer) │ └── App Uploader (app_uploader) │ └── App Reader (app_reader) ├── Bundle Admin (bundle_admin) │ └── Bundle Viewer (bundle_reader) └── Channel Admin (channel_admin) └── Channel Viewer (channel_reader)Cómo funciona en la práctica:
- Un Administrador en el nivel de la organización puede hacer todo lo que un Administrador de Aplicación puede, en cada aplicación de la organización.
- Un Administrador de Aplicación puede hacer todo lo que un Administrador de Canal puede hacer en cada canal de esa aplicación.
- Un Desarrollador de Aplicación puede hacer todo lo que un Subidor de Aplicación puede, más aún.
La jerarquía solo fluye hacia abajo — un channel_admin no gana permisos de nivel de organización, incluso si también posee un rol de nivel de aplicación.
En lugar de asignar roles a cada usuario individualmente, puede crear grupos y asignar roles al grupo. Cada miembro del grupo hereda esos roles automáticamente.
Cómo funcionan los grupos
Título de la sección “Cómo funcionan los grupos”- Un grupo pertenece a una organización — no puede abarcar varias orgs.
- Los grupos pueden tener vinculaciones de roles Cualquier ámbito: organización, aplicación, canal o paquete. Por ejemplo, un grupo puede asignarse el Desarrollador de Aplicación rol en la aplicación A y el Administrador de Canal rol en el canal de la aplicación B.
stagingCuando se evalúan los permisos de un usuario, todas sus pertenencias de grupo se resuelven de manera transparente. Si alguno de sus grupos concede el permiso requerido, se permite el acceso. - Un usuario puede pertenecer a
- grupos múltiples , y los permisos de todos los grupos son adicionales.Los permisos basados en grupos solo se aplican a
- Group-based permissions only apply to principales de usuario — Las API claves no heredan roles de grupo.
¿Cuándo usar grupos
Título de la sección “¿Cuándo usar grupos”| Escenario | Sin grupos | Con grupos |
|---|---|---|
| 5 ingenieros de pruebas necesitan acceso de Desarrollador a 3 aplicaciones | 15 vinculaciones de rol individuales | 1 grupo + 3 vinculaciones de rol |
| Alguien se une al equipo de pruebas | Agregar 3 vinculaciones de rol manualmente | Agregarlos al grupo |
| Alguien deja el equipo de QA | Eliminar 3 vinculaciones de rol manualmente | Eliminarlos del grupo |
Administrar grupos a través de API
Sección titulada “Administrar grupos a través de API”Todas las endpoints de grupo requieren autenticación y se sirven bajo /private/groups.
Lista de grupos
Sección titulada “Lista de grupos”curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"Requiere autenticación org.read_members permiso.
Crear un grupo
Sección titulada “Crear un grupo”curl -X POST "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Quality assurance engineers" }'Requiere org.update_user_roles permiso (Administrador Super o Administrador).
Actualizar un grupo
Sección titulada “Actualizar un grupo”curl -X PUT "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Updated description" }'Eliminar un grupo
Sección titulada “Eliminar un grupo”curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>"Eliminar un grupo también elimina todas sus vinculaciones de rol. Los miembros no se eliminan de la organización.
Lista de miembros del grupo
Sección titulada “Lista de miembros del grupo”curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Agregar un miembro a un grupo
Sección titulada “Agregar un miembro a un grupo”curl -X POST "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "user_id": "<USER_UUID>" }'El usuario ya debe ser miembro de la organización. Agregar a un miembro existente es un no-op.
Quitar a un miembro de un grupo
Sección titulada “Quitar a un miembro de un grupo”curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \ -H "authorization: <API_KEY>"Asignar roles mediante API
Sección titulada “Asignar roles mediante API”Miembros de la lista
Sección titulada “Miembros de la lista”curl -X GET "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>" }'Respuesta:
[ { "uid": "user-uuid", "email": "alice@example.com", "image_url": "https://...", "role": "org_admin", "is_tmp": false }]Invitar a un miembro
Sección titulada “Invitar a un miembro”curl -X POST "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com", "invite_type": "org_admin" }'Valores aceptados para invite_type:
| Valor | Rol asignado |
|---|---|
org_super_admin | Administrador Super |
org_admin | Administrador |
org_billing_admin | Gerente de facturación |
org_member | Miembro |
Eliminar un miembro
Sección titulada “Eliminar un miembro”curl -X DELETE "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com" }'Asignar roles a través de CLI
Sección titulada “Asignar roles a través de CLI”Listar organizaciones
Sección titulada “Listar organizaciones”npx @capgo/cli organization list --apikey <API_KEY>Listar miembros
Sección titulada “Listar miembros”npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>Roles personalizados
Sección titulada “Roles personalizados”Los roles integrados cubren la mayoría de las estructuras de equipo. La creación de roles personalizados está en nuestra ruta de desarrollo — si esto es algo que necesita su equipo, contactenos. Su caso de uso ayudará directamente a priorizar esta función.
Siga adelante desde la Referencia de Control de Acceso
Sección titulada “Siga adelante desde la Referencia de Control de Acceso”Si está utilizando Referencia de Control de Acceso para planificar operaciones de panel de control y API , conecte con API Overview para el detalle de implementación en API Resumen, Introducción para el detalle de implementación en Introducción, API Claves para el detalle de implementación en API Claves, Dispositivos para el detalle de implementación en Dispositivos, y Paquetes para el detalle de implementación en Paquetes.