Referencia de Control de Acceso
Copiar un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Capgo uses control de acceso basado en roles (RBAC) para gestionar qué puede hacer cada miembro del equipo. Los roles se organizan por ámbito desde toda la organización hasta un solo paquete.
Para una guía visual de la gestión de miembros en la consola, consulte Organización.
Ámbitos de rol
Título de sección “Ámbitos de rol”Cada rol pertenece a un ámbito que determina qué recurso concede acceso.
| Ámbito | contexto | Aplica a: Ámbito de rol 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 sola aplicación y sus canales | Un contratista que trabaja en una aplicación obtiene Desarrollador de Aplicación |
| Canales | Un solo canal dentro de una aplicación | Un ingeniero de pruebas solo gestiona el staging canal |
| Paquete | Una sola versión de paquete | A un revisor se le requiere acceso de lectura a una versión específica |
Un miembro puede tener un rol por ámbito objetivo por ejemplo, un rol de organización, un rol en App A y un rol diferente en App B
Roles de organización
Título de la sección “Roles de 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 propietario. Control total incluyendo la eliminación de la org, la gestión de facturación y la transferencia de aplicaciones. Se concede automáticamente al creador de la org. |
| Administrador | org_admin | Administración completa — gestiona miembros, aplicaciones, canales. No se puede eliminar la organización, actualizar facturación, transferir aplicaciones o promover usuarios a Super Administrador. |
| Gerente de Facturación | org_billing_admin | Acceso solo a facturación: ver y actualizar información de facturación, facturas e historial de auditoría de facturación. Sin acceso a aplicaciones o miembros. |
| Miembro | org_member | Acceso de solo lectura a la organización y todas sus aplicaciones. |
Matriz de permisos de la organización
Sección titulada “Matriz de permisos de la organización”| Permiso | Descripción | Super Administrador | Administrador | Administrador de facturación | Miembro |
|---|---|---|---|---|---|
org.read | Ver la organización | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Editar nombre, logo y correo electrónico de administración de la organización | ✅ | ✅ | ❌ | ❌ |
org.delete | Eliminar la organización permanentemente | ✅ | ❌ | ❌ | ❌ |
org.read_members | Ver la lista de miembros | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Invitar nuevos miembros | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Cambiar roles de miembros (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 | ✅ | ✅ | ✅ | ❌ |
puede hacer, en todas las aplicaciones y canales.
Roles de aplicaciónLimitado a una sola aplicación. Utiliza estos cuando un miembro del equipo solo debe trabajar en una aplicación, no en 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 ni transferir la aplicación (aquellas 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. |
| Vista de la aplicación | app_preview | Ciclo de vida de CI vinculado a la organización y la aplicación: subir un paquete y crear un canal de vista previa. La creación de ese canal concede automáticamente derechos de ciclo de vida solo para él. |
Matriz de permisos de la aplicación
Matriz de permisos de la aplicación| Permiso | Descripción | Administrador de la aplicación | Desarrollador de la aplicación | Subidor de la aplicación | Lector de la 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 la 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 construcción nativa en la nube | ✅ | ✅ | ❌ | ❌ |
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 | ✅ | ❌ | ❌ | ❌ |
Conjunto de permisos de vista previa de la aplicación
UsoVista previa de la aplicación para una clave de CI vinculada a la organización y la aplicación que gestiona el ciclo de vida de una vista previa de PR sin acceso amplio a la aplicación o a nivel de organización. (app_previewEl
and app_preview solo concede estos permisos de nivel de aplicación:
| Permiso | Permite |
|---|---|
app.read | Leer la aplicación seleccionada |
app.read_bundles | Leer los paquetes subidos |
app.upload_bundle | Subir un paquete |
app.create_channel | Crear un canal |
Cuando una clave de vista previa de la aplicación crea un canal, Capgo da automáticamente a esa clave una clave secundaria para el nuevo canal solo: channel_preview Permiso
| Permite | Leer el canal creado por la clave |
|---|---|
channel.read | Leer el canal creado por la clave |
channel.promote_bundle | Establezca el paquete subido del canal en cuestión |
channel.delete | Elimine ese canal |
Porque app_preview retiene app.read, la clave puede enumerar los metadatos del canal en la aplicación seleccionada. La vinculación automática de hijo es un límite de gestión: no concede mutaciones de ciclo de vida para un canal que la clave no creó. __CAPGO_KEEP_0__ registra la clave de vista previa que creó cada canal y subió cada paquete. Por lo tanto, una clave de vista previa de aplicación puede crear cada canal de vista previa no público que necesita, promover su propio paquete y eliminar de manera atómica ese canal y paquete con
Capgo records the preview key that created each channel and uploaded each bundle. Therefore an App Preview key can create each non-public preview channel it needs, promote its own bundle, and atomically delete that channel and bundle with channel delete --delete-bundleNo incluye
, la gestión de dispositivos o roles app.update_settings, la gestión de dispositivos forzada o genérica channel.update_settings, channel.rollback_bundleBecause retains, the key may enumerate channel metadata in the selected app. The automatic child binding is a management boundary: it does not grant lifecycle mutations for a channel the key did not create. bundle.delete.
Roles de canal
Sección titulada “Roles de canal”Limitado a un solo canal. Útil para dar acceso objetivo a un canal de liberación específico.
| Rol | 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 | Leer sólo — paquete actual, historia, dispositivos forzados, registro de auditoría. |
| Vista previa de canal | channel_preview | Asignado por el sistema a la clave de vista previa de la aplicación que creó el canal: lectura, promoción de su propio paquete y eliminación de ese canal. |
Matriz de permisos de canal
Matriz de permisos de canal| Permiso | Descripción | Administrador de canal | Vista de canal | Vista previa de canal |
|---|---|---|---|---|
channel.read | Ver el canal y su paquete actual | ✅ | ✅ | ✅ |
channel.update_settings | Editar ajustes del canal (tornillos de plataforma, política de actualización…) | ✅ | ❌ | ❌ |
channel.delete | Eliminar el canal | ✅ | ❌ | ✅ |
channel.read_history | Ver historial de asignación de paquetes | ✅ | ✅ | ❌ |
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 la lista de dispositivos forzados | ✅ | ✅ | ❌ |
channel.read_audit | Ver el registro de actividad del canal | ✅ | ✅ | ❌ |
Paquete de roles
Título de la sección “Paquete de roles”Limitado a una sola versión de paquete. 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 para un paquete específico. |
Permisos de canal (Panel de control)
Sección titulada “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 sobreescribir permisos de canal específicos por usuario o grupo sin cambiar su rol de aplicación.
Los sobreescripciones se configuran desde el panel de configuración de la aplicación. Acceso pulsa el botón de permisos de canal (ícono de escudo) junto a un usuario. Ver Organización — Sobreescritura de permisos de canal
Permisos sobreescritos
Sección titulada “Permisos sobreescritos”| Permiso | Descripción | Comportamiento por defecto |
|---|---|---|
| Leer | Ver el canal y su paquete actual | Heredado del rol de aplicación |
| Registro | Ver el historial de asignación de paquetes | Herencia de rol de aplicación |
| Asociar paquete | Establecer o cambiar el paquete activo en el canal | Herencia de rol de aplicación |
Cada permiso se puede configurar como:
- Predeterminado – heredar del rol de aplicación (por defecto)
- Permitir – conceder explícitamente, sin importar el rol de aplicación
- Denegar — bloquear explícitamente, sin importar el rol de la aplicación
Esto te permite, por ejemplo, dar a un lector de aplicaciones la capacidad de asociar paquetes en el canal sin promoverlos a desarrollador de aplicaciones. staging Estructura de roles
Sección titulada “Estructura de roles”
La jerarquía de rolesLa forma de roles forma 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 hacer, lo que a su vez puede hacer todo lo que un channel_admin puede hacer, 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 a nivel de 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 en una aplicación específica puede hacer todo lo que un Administrador de Canal puede, en cada canal de esa aplicación.
- Un Desarrollador de Aplicación puede hacer todo lo que puede hacer un Subidor de Aplicación puede, más aún.
La jerarquía solo fluye hacia abajo — nunca gana permisos de nivel de organización, incluso si también tienen un rol de nivel de aplicación. channel_admin Grupos
Sección titulada “Grupos”
En lugar de asignar roles a cada usuario individualmente, puedes creargrupos hierarchies y asignar roles al grupo. Cada miembro del grupo hereda automáticamente esos roles.
¿Cómo funcionan los grupos
Sección titulada “¿Cómo funcionan los grupos”- Un grupo pertenece a una organización — no puede abarcar varias orgs.
- Los grupos pueden contener vinculaciones de roles en cualquier ámbito: org, app, canal, o paquete. Por ejemplo, un grupo puede ser asignado el rol de Desarrollador de Aplicación en App A y el rol de Administrador de Canal papel en el
stagingcanales de la aplicación B. - Cuando se evalúan los permisos de un usuario, se resuelven de manera transparente todas sus pertenencias a grupos. Si alguno de sus grupos concede el permiso requerido, se permite el acceso.
- Un usuario puede pertenecer a múltiples grupos, y los permisos de todos los grupos son adicionales.
- Los permisos basados en grupos solo se aplican a principales de usuario — las llaves API no heredan roles de grupo.
Cuándo usar grupos
Sección titulada “Cuándo usar grupos”| Escenario | Sin grupos | Con grupos |
|---|---|---|
| 5 ingenieros de pruebas necesitan acceso de desarrollador a 3 aplicaciones | 15 vinculaciones de roles individuales | 1 grupo + 3 vinculaciones de roles |
| Alguien se une al equipo de pruebas | Agregar 3 vinculaciones de roles manualmente | Agregarlos al grupo |
| Alguien deja el equipo de pruebas | Eliminar 3 vinculaciones de roles manualmente | Eliminarlos del grupo |
Administrar grupos a través de API
Sección titulada “Gestionar grupos a través de API”Todos los puntos finales de grupo requieren autenticación y se sirven bajo /private/groups.
Listar grupos
Sección titulada “Listar grupos”curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"Requiere 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 Supremo o permiso).
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.
Listar a los miembros del grupo
Ventana de terminalcurl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Ventana de terminal
Copiar a portapapelescurl -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>" }'Sección titulada “Listar a los miembros del grupo”
Sección titulada “Agregar un miembro a un grupo”
Sección titulada “Eliminar 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”Lista de miembros
Sección titulada “Lista de miembros”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
Eliminar un miembrocurl -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
Section titled “Assigning roles via CLI”Listar organizaciones
Ventana de terminalnpx @capgo/cli organization list --apikey <API_KEY>Lista de miembros
Sección titulada “Lista de 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, contacte con nosotros. Su caso de uso nos ayudará 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 la consola de instrumentos y las operaciones de API, conecte con API Overview para los detalles de implementación en API Overview Introducción para los detalles de implementación en Introducción API Keys para los detalles de implementación en API Keys Dispositivos para el detalle de implementación en Dispositivos, y Paquetes para el detalle de implementación en Paquetes.