Recuperar, crear, actualizar y eliminar roles de usuario personalizados con permisos granulares.
Roles Personalizados
Los roles personalizados en Blue te permiten definir conjuntos de permisos precisos adaptados a las necesidades de tu equipo. Más allá de los niveles de acceso estándar (PROPIETARIO, ADMINISTRADOR, MIEMBRO, etc.), los roles personalizados proporcionan un control granular sobre lo que los usuarios pueden ver y hacer dentro de los proyectos.
Ejemplo Básico - Listar Roles Personalizados
Recuperar todos los roles personalizados para un proyecto:
query GetProjectRoles {
projectUserRoles(filter: { projectId: "web-redesign" }) {
id
name
description
allowInviteOthers
canDeleteRecords
}
}
Ejemplo Avanzado - Crear Rol Personalizado
Crear un rol de contratista con permisos específicos:
mutation CreateContractorRole {
createProjectUserRole(
input: {
projectId: "web-redesign"
name: "External Contractor"
description: "Limited access for external contractors"
allowInviteOthers: false
allowMarkRecordsAsDone: true
canDeleteRecords: false
showOnlyAssignedTodos: true
isActivityEnabled: true
isFormsEnabled: false
isWikiEnabled: true
isChatEnabled: false
isDocsEnabled: true
isFilesEnabled: true
isRecordsEnabled: true
isPeopleEnabled: false
}
) {
id
name
}
}
Operaciones Disponibles
Consulta: projectUserRoles
Recuperar todos los roles personalizados para un proyecto.
Parámetros de Entrada
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
filter.projectId |
String | No | ID o slug del proyecto (si no se proporciona, devuelve roles para todos los proyectos accesibles) |
Mutación: createProjectUserRole
Crear un nuevo rol personalizado con permisos específicos.
Parámetros de Entrada
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
projectId |
String! | ✅ Sí | ID o slug del proyecto |
name |
String! | ✅ Sí | Nombre del rol |
description |
String | No | Descripción del rol |
Permission Flags | |||
allowInviteOthers |
Boolean | No | Puede invitar nuevos usuarios (predeterminado: falso) |
allowMarkRecordsAsDone |
Boolean | No | Puede completar tareas (predeterminado: falso) |
canDeleteRecords |
Boolean | No | Puede eliminar registros (predeterminado: verdadero) |
Feature Access | |||
isActivityEnabled |
Boolean | No | Acceso a la sección de Actividad (predeterminado: verdadero) |
isChatEnabled |
Boolean | No | Acceso al Chat (predeterminado: verdadero) |
isDocsEnabled |
Boolean | No | Acceso a Docs (predeterminado: verdadero) |
isFilesEnabled |
Boolean | No | Acceso a Archivos (predeterminado: verdadero) |
isFormsEnabled |
Boolean | No | Acceso a Formularios (predeterminado: verdadero) |
isWikiEnabled |
Boolean | No | Acceso a Wiki (predeterminado: verdadero) |
isRecordsEnabled |
Boolean | No | Acceso a Registros (predeterminado: verdadero) |
isPeopleEnabled |
Boolean | No | Acceso a la sección de Personas (predeterminado: verdadero) |
Visibility Settings | |||
showOnlyAssignedTodos |
Boolean | No | Solo ver tareas asignadas (predeterminado: falso) |
showOnlyMentionedComments |
Boolean | No | Solo ver comentarios mencionados (predeterminado: falso) |
Mutación: updateProjectUserRole
Actualizar un rol personalizado existente.
Parámetros de Entrada
Igual que createProjectUserRole
, más:
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
roleId |
String! | ✅ Sí | ID del rol a actualizar |
Mutación: deleteProjectUserRole
Eliminar un rol personalizado.
Parámetros de Entrada
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
roleId |
String! | ✅ Sí | ID del rol a eliminar |
projectId |
String! | ✅ Sí | ID o slug del proyecto |
Campos de Respuesta
Objeto ProjectUserRole
Campo | Tipo | Descripción |
---|---|---|
id |
String! | Identificador único del rol |
name |
String! | Nombre del rol |
description |
String | Descripción del rol |
createdAt |
DateTime! | Marca de tiempo de creación |
updatedAt |
DateTime! | Marca de tiempo de la última actualización |
Permissions | ||
allowInviteOthers |
Boolean! | Puede invitar usuarios |
allowMarkRecordsAsDone |
Boolean! | Puede completar tareas |
canDeleteRecords |
Boolean! | Puede eliminar registros |
Feature Flags | ||
isActivityEnabled |
Boolean! | Acceso a la sección de Actividad |
isChatEnabled |
Boolean! | Acceso al Chat |
isDocsEnabled |
Boolean! | Acceso a Docs |
isFilesEnabled |
Boolean! | Acceso a Archivos |
isFormsEnabled |
Boolean! | Acceso a Formularios |
isWikiEnabled |
Boolean! | Acceso a Wiki |
isRecordsEnabled |
Boolean! | Acceso a Registros |
isPeopleEnabled |
Boolean! | Acceso a la sección de Personas |
Visibility | ||
showOnlyAssignedTodos |
Boolean! | Filtro de visibilidad de tareas |
showOnlyMentionedComments |
Boolean! | Filtro de visibilidad de comentarios |
Permisos Requeridos
Operación | Permiso Requerido |
---|---|
projectUserRoles |
Any project member |
createProjectUserRole |
Project OWNER or ADMIN |
updateProjectUserRole |
Project OWNER or ADMIN |
deleteProjectUserRole |
Project OWNER or ADMIN |
Respuestas de Error
Permisos Insuficientes
{
"errors": [{
"message": "You don't have permission to manage custom roles",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Rol No Encontrado
{
"errors": [{
"message": "Custom role not found",
"extensions": {
"code": "PROJECT_USER_ROLE_NOT_FOUND"
}
}]
}
Límite de Rol Alcanzado
{
"errors": [{
"message": "Project user role limit reached.",
"extensions": {
"code": "PROJECT_USER_ROLE_LIMIT"
}
}]
}
Notas Importantes
- Permisos Predeterminados: Al crear roles, los permisos booleanos no especificados se establecen en falso, excepto para
canDeleteRecords
que se establece en verdadero. - Asignación de Rol: Asigna roles personalizados configurando
accessLevel: MEMBER
y proporcionando elroleId
en la mutacióninviteUser
. - Jerarquía: Los roles personalizados se tratan como de nivel MIEMBRO para fines de jerarquía.
- Límites de Rol: Cada proyecto puede tener un máximo de 20 roles personalizados.
- Acceso a Funciones: Las banderas de funciones controlan el acceso a secciones enteras de la aplicación.
Casos de Uso
Rol de Contratista
{
name: "Contractor",
allowInviteOthers: false,
canDeleteRecords: false,
showOnlyAssignedTodos: true,
isActivityEnabled: true,
isChatEnabled: false,
isPeopleEnabled: false
}
Líder de Departamento
{
name: "Department Lead",
allowInviteOthers: true,
allowMarkRecordsAsDone: true,
canDeleteRecords: true,
isActivityEnabled: true,
isWikiEnabled: true,
isPeopleEnabled: true
}
Observador Solo de Lectura
{
name: "Observer",
allowMarkRecordsAsDone: false,
canDeleteRecords: false,
allowInviteOthers: false,
showOnlyMentionedComments: true,
isFormsEnabled: false
}
Operaciones Relacionadas
- Invitar Usuario - Asignar roles personalizados a usuarios
- Listar Usuarios - Ver usuarios y sus roles
- Eliminar Usuario - Eliminar usuarios de proyectos