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 el roleId en la mutación inviteUser.
  • 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

Asistente IA

Las respuestas son generadas por IA y pueden contener errores.

¿Cómo puedo ayudarte?

Pregúntame cualquier cosa sobre Blue o esta documentación.

Enter para enviar • Shift+Enter para nueva línea • ⌘I para abrir