Gestión de Roles
Control de acceso basado en roles (RBAC)
Sección titulada «Control de acceso basado en roles (RBAC)»El Control de Acceso Basado en Roles (RBAC) es un modelo de seguridad ampliamente adoptado que se utiliza para restringir el acceso al sistema a usuarios autorizados en función de los roles que se les han asignado. En lugar de otorgar permisos directamente a usuarios individuales, RBAC asigna permisos a roles, y los usuarios se asocian con uno o más roles. Este enfoque simplifica la gestión, mejora la seguridad y respalda el principio de privilegio mínimo.

En el contexto de la API de Datascend y sus integraciones, el control de acceso basado en roles se estructura en torno a cinco componentes principales:
Descripción de roles dentro del sistema
Sección titulada «Descripción de roles dentro del sistema»Un Rol define un conjunto de permisos que reflejan una función o responsabilidad laboral específica dentro del sistema. Los roles no están vinculados a usuarios específicos, sino a las acciones que los usuarios pueden realizar.
Los roles tienen nombre, para que el usuario pueda identificarlos fácilmente. Algunos ejemplos que el usuario podría crear o encontrar incluyen:
Rol Descripción Viene por defecto Administrador Permisos completos Sí Anónimo Permisos muy limitados Sí Gerente Puede cambiar la configuración dentro de la configuración de la entidad No Editor Puede crear y modificar contenido dentro de las entidades a las que tiene acceso No Observador Solo puede ver contenido dentro de las entidades a las que tiene acceso No
Permiso e interacción del rol Anónimo
Sección titulada «Permiso e interacción del rol Anónimo»El rol Anónimo está diseñado para usuarios que no han iniciado sesión en el sistema. Este rol tiene permisos muy limitados, centrados principalmente en ver contenido público sin la capacidad de modificar o gestionar ningún recurso. Los permisos específicos asociados con el rol Anónimo pueden incluir:
- Acceso de lectura a entidades e informes disponibles públicamente.
- Sin capacidad para crear, actualizar o eliminar ningún objeto.
- Sin acceso a datos sensibles o restringidos.
Este rol es útil para escenarios en los que se desea proporcionar información básica a los usuarios sin requerir autenticación. Por ejemplo, un panel o informe público que cualquiera puede ver sin iniciar sesión, o informarlo a otra persona.
Acciones
Sección titulada «Acciones»Las acciones definen qué operaciones se pueden realizar sobre los objetos.
Acción Descripción Gestionar Permite la gestión de objetos existentes. Crear Permite la creación de nuevos objetos. Obtener Permite la visualización de objetos existentes. Actualizar Permite la modificación de objetos existentes. Eliminar Permite la eliminación de objetos existentes.
Objetos
Sección titulada «Objetos»Los objetos representan los recursos o entidades dentro del sistema con los que los usuarios pueden interactuar, tales como:
- Menús de Categoría
- Relaciones
- Fuentes de datos
- Estructura
- Entidades
- Dominios
- Informes
Permisos
Sección titulada «Permisos»Los permisos son el resultado de combinar acciones con objetos. Por ejemplo, el permiso para crear un registro de entidad se forma combinando la acción “crear” con el objeto llamado entidad dentro del sistema.
Nota: Los permisos se asignan a roles, no directamente a los usuarios.
Endpoints para la gestión de roles
Sección titulada «Endpoints para la gestión de roles»A continuación se muestran los endpoints disponibles para gestionar roles:
Obtener todos los roles
Sección titulada «Obtener todos los roles»Recuperar todos los roles almacenados.
Endpoint:
GET /api/v1/roles/Respuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [...],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Crear un nuevo rol
Sección titulada «Crear un nuevo rol»Crear un nuevo rol.
Endpoint:
POST /api/v1/roles/Petición:
{"item": "Role","description": "New role","dashboardCustomQuery": "1"}Respuesta:
{"status": 201,"error": false,"message": "string","data": [{}],"entityName": "string"}
Actualizar un rol
Sección titulada «Actualizar un rol»Actualizar un rol existente.
Endpoint:
PUT /api/v1/roles/:roleIdPetición:
{"item": "Role","description": "Updated role","dashboardCustomQuery": "1"}Respuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [...],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Obtener un rol
Sección titulada «Obtener un rol»Recuperar un rol específico por su ID.
Endpoint:
GET /api/v1/roles/:roleIdRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [...],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Eliminar un rol
Sección titulada «Eliminar un rol»Eliminar un rol específico por su ID.
Endpoint:
DELETE /api/v1/roles/:roleIdRespuesta:
204 No Content
Endpoint para gestionar las propiedades de los roles
Sección titulada «Endpoint para gestionar las propiedades de los roles»A continuación se muestran los endpoints disponibles para gestionar la funcionalidad de los roles:
Obtener todos los objetos
Sección titulada «Obtener todos los objetos»Recuperar todos los objetos almacenados.
Endpoint:
GET /api/v1/roles/objectsRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": 1,"item": "cattle","type": "Table"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Obtener todas las acciones
Sección titulada «Obtener todas las acciones»Recuperar todas las acciones almacenadas.
Endpoint:
GET /api/v1/roles/actionsRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "1","item": "Get"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Obtener todos los permisos disponibles almacenados en un objeto
Sección titulada «Obtener todos los permisos disponibles almacenados en un objeto»Recuperar todos los permisos disponibles almacenados en un objeto específico.
Endpoint:
GET /api/v1/roles/permissions/:objectType/:objectItemRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "1","actionId": "1","objectId": "1","active": true,"description": "admin"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Obtener permisos almacenados en un rol por objeto dado
Sección titulada «Obtener permisos almacenados en un rol por objeto dado»Recuperar permisos almacenados en un rol para un objeto dado.
Endpoint:
GET /api/v1/roles/:roleId/permissions/:objectType/:objectItemRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"roleId": "1","objectItem": "cattle","objectType": "Table","permissions": "1"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Sobrescribir permisos almacenados en un rol por objeto dado
Sección titulada «Sobrescribir permisos almacenados en un rol por objeto dado»Sobrescribir permisos almacenados en un rol para un objeto dado.
Endpoint:
PUT /api/v1/roles/:roleId/permissionsPetición:
{"objectItem": "cattle","objectType": "Table","permissions": 1}Respuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"roleId": "1","objectItem": "cattle","objectType": "Table","permissions": "1","id": "1","actionId": "1","objectId": "1","active": true,"description": "Permission applied in object"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Endpoints para asignar roles dentro de un menú de categoría
Sección titulada «Endpoints para asignar roles dentro de un menú de categoría»A continuación se muestran los endpoints disponibles para asignar roles a los menús de categoría:
Obtener todos los roles asignados a un menú de categoría
Sección titulada «Obtener todos los roles asignados a un menú de categoría»Recuperar todos los roles asignados a un menú de categoría específico.
Endpoint:
GET /api/v1/category-menus/roles/:idRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "1","name": "Administrador","dashboardCustomQuery": "0"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Asignar múltiples roles a un menú de categoría
Sección titulada «Asignar múltiples roles a un menú de categoría»Asignar múltiples roles a un menú de categoría específico.
Endpoint:
POST /api/v1/category-menus/roles/:idPetición:
{"roleIds": [1]}Respuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "1","name": "Administrador","dashboardCustomQuery": "0"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Eliminar uno o más roles de un menú de categoría
Sección titulada «Eliminar uno o más roles de un menú de categoría»Eliminar uno o más roles de un menú de categoría específico.
Endpoint:
DELETE /api/v1/category-menus/roles/:idPetición:
{"roleIds": [2]}Respuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "1","name": "Administrador","dashboardCustomQuery": "0"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Endpoint para gestionar roles dentro de un conjunto de permisos
Sección titulada «Endpoint para gestionar roles dentro de un conjunto de permisos»A continuación se muestran los endpoints disponibles relacionados con los permisos:
Obtener permisos almacenados en un rol por objeto dado
Sección titulada «Obtener permisos almacenados en un rol por objeto dado»Recuperar permisos almacenados en un rol en studio por un objeto dado.
Endpoint:
GET /api/v1/permissions/:roleIdRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"name": "action","permission": true}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Obtener todos los permisos almacenados en un rol por objeto dado
Sección titulada «Obtener todos los permisos almacenados en un rol por objeto dado»Recuperar todos los permisos almacenados en un rol en studio por un objeto dado.
Endpoint:
GET /api/v1/permissions/all/:roleIdRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "1","description": "(manage users on system)","active": true,"objectId": "1","actionId": "1","actionItem": "Manage","objectItem": "user","objectType": "System","allowed": true,"allowedSdate": "2024-10-23T06:00:00.000Z","allowedEdate": "2024-10-23T06:00:00.000Z"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Obtener los permisos por objeto e ID de rol
Sección titulada «Obtener los permisos por objeto e ID de rol»Recuperar los permisos por objeto e ID de rol.
Endpoint:
GET /api/v1/data-studio/:roleId/permission/:objectIdRespuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "0","description": "(manage users on system)","active": true,"objectId": "1","actionId": "1","actionItem": "Manage","objectItem": "user","objectType": "System","allowed": true,"allowedSdate": "2024-10-23T06:00:00.000Z","allowedEdate": "2024-10-23T06:00:00.000Z"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}
Crear permisos almacenados en un rol en studio por objeto dado
Sección titulada «Crear permisos almacenados en un rol en studio por objeto dado»Crear permisos almacenados en un rol en studio por un objeto dado.
Endpoint:
POST /api/v1/data-studio/:roleId/permissionPetición:
{"permissions": [{"id": "1","description": "(manage users on system)","active": true,"objectId": 3196,"actionId": 2,"actionItem": "Manage","objectItem": "user","objectType": "System","allowed": true,"allowedSdate": "2024-10-23T06:00:00.000Z","allowedEdate": "2024-10-23T06:00:00.000Z","rowAction": "add"}]}Respuesta:
{"error": false,"status": 200,"message": "string","errors": [{}],"data": [{"id": "0","description": "(manage users on system)","active": true,"objectId": "1","actionId": "1","actionItem": "Manage","objectItem": "user","objectType": "System","allowed": true,"allowedSdate": "2024-10-23T06:00:00.000Z","allowedEdate": "2024-10-23T06:00:00.000Z"}],"pagination": {"hasPreviousPage": true,"hasNextPage": true,"previousPage": 0,"nextPage": 0,"recordsTotal": 0,"currentPage": 0,"startIndex": 0,"numPages": 0,"limit": 0}}