Recuperar listas de usuarios en empresas o proyectos con filtrado y paginación.
Listar Usuarios
Blue proporciona múltiples consultas para listar usuarios en diferentes ámbitos: a nivel de empresa, específicos de un proyecto o búsqueda de usuarios individuales. Estas consultas admiten paginación, filtrado y ordenación para gestionar de manera eficiente grandes bases de usuarios.
Ejemplo Básico - Usuarios de la Empresa
Listar todos los usuarios en una empresa:
query ListCompanyUsers {
companyUserList(companyId: "acme-corp") {
users {
id
email
fullName
jobTitle
lastActiveAt
}
pageInfo {
totalItems
hasNextPage
}
}
}
Ejemplo Avanzado - Usuarios de Proyecto Filtrados
Listar usuarios de proyecto con búsqueda y paginación:
query ListProjectUsers {
projectUserList(
projectId: "web-redesign"
search: "engineer"
first: 20
orderBy: lastActiveAt_DESC
) {
edges {
node {
id
email
fullName
accessLevel
customRole {
id
name
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}
Consultas Disponibles
companyUserList
Lista todos los usuarios en una empresa con filtrado opcional.
Parámetros de Entrada
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
companyId |
String! | ✅ Sí | ID o slug de la empresa |
notInProjectId |
String | No | Excluir usuarios ya en este proyecto |
search |
String | No | Buscar por nombre o correo electrónico |
first |
Int | No | Número de resultados a devolver (paginación hacia adelante) |
after |
String | No | Cursor para paginación hacia adelante |
last |
Int | No | Número de resultados a devolver (paginación hacia atrás) |
before |
String | No | Cursor para paginación hacia atrás |
skip |
Int | No | Número de resultados a omitir |
orderBy |
UserOrderByInput | No | Orden de clasificación (ver abajo) |
projectUserList
Lista todos los usuarios en un proyecto específico.
Parámetros de Entrada
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
projectId |
String! | ✅ Sí | ID o slug del proyecto |
search |
String | No | Buscar por nombre o correo electrónico |
first |
Int | No | Número de resultados (máx: 200) |
after |
String | No | Cursor para paginación |
orderBy |
UserOrderByInput | No | Orden de clasificación |
user
Recupera un solo usuario por ID.
Parámetros de Entrada
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
id |
String! | ✅ Sí | ID de usuario |
Opciones de Ordenación
UserOrderByInput Valores
Valor | Descripción |
---|---|
createdAt_ASC |
Ordenar por fecha de registro (más antiguo primero) |
createdAt_DESC |
Ordenar por fecha de registro (más reciente primero) |
lastActiveAt_ASC |
Ordenar por última actividad (más antigua primero) |
lastActiveAt_DESC |
Ordenar por última actividad (más reciente primero) |
firstName_ASC |
Ordenar por nombre (A-Z) |
firstName_DESC |
Ordenar por nombre (Z-A) |
lastName_ASC |
Ordenar por apellido (A-Z) |
lastName_DESC |
Ordenar por apellido (Z-A) |
email_ASC |
Ordenar por dirección de correo electrónico (A-Z) |
email_DESC |
Ordenar por dirección de correo electrónico (Z-A) |
username_ASC |
Ordenar por nombre de usuario (A-Z) |
username_DESC |
Ordenar por nombre de usuario (Z-A) |
jobTitle_ASC |
Ordenar por título del trabajo (A-Z) |
jobTitle_DESC |
Ordenar por título del trabajo (Z-A) |
Campos de Respuesta
Objeto Usuario
Campo | Tipo | Descripción |
---|---|---|
id |
String! | Identificador único del usuario |
uid |
String! | UID de autenticación de Firebase |
username |
String! | Nombre de usuario elegido por el usuario |
email |
String! | Dirección de correo electrónico (visible solo para el PROPIETARIO/ADMIN) |
firstName |
String | Nombre |
lastName |
String | Apellido |
fullName |
String | Nombre completo (nombre y apellido combinados) |
jobTitle |
String | Título profesional |
phoneNumber |
String | Número de contacto |
dateOfBirth |
DateTime | Fecha de nacimiento |
isEmailVerified |
Boolean! | Estado de verificación de correo electrónico |
lastActiveAt |
DateTime | Marca de tiempo de la última actividad |
createdAt |
DateTime! | Fecha de creación de la cuenta |
updatedAt |
DateTime! | Última actualización del perfil |
isOnline |
Boolean! | Estado en línea actual |
timezone |
String | Zona horaria del usuario |
locale |
String | Preferencia de idioma |
theme |
JSON | Preferencias de tema de UI |
image |
Image | Objeto de imagen de perfil |
Campos Adicionales de Usuario del Proyecto
Al listar usuarios de proyectos, están disponibles campos adicionales:
Campo | Tipo | Descripción |
---|---|---|
accessLevel |
UserAccessLevel! | Rol del usuario en el proyecto |
customRole |
ProjectUserRole | Detalles del rol personalizado si corresponde |
joinedAt |
DateTime! | Cuándo se unió el usuario al proyecto |
Información de Paginación
Campo | Tipo | Descripción |
---|---|---|
totalItems |
Int! | Número total de usuarios |
totalPages |
Int | Total de páginas (para paginación por desplazamiento) |
page |
Int | Número de página actual |
perPage |
Int | Elementos por página |
hasNextPage |
Boolean! | Más resultados disponibles |
hasPreviousPage |
Boolean! | Resultados anteriores disponibles |
startCursor |
String | Cursor del primer elemento |
endCursor |
String | Cursor del último elemento |
Permisos Requeridos
Consulta | Permiso Requerido |
---|---|
companyUserList |
Any authenticated user in the company |
projectUserList |
Any project member (including VIEW_ONLY) |
user |
Any authenticated user |
Respuestas de Error
Empresa No Encontrada
{
"errors": [{
"message": "Company not found",
"extensions": {
"code": "COMPANY_NOT_FOUND"
}
}]
}
Proyecto No Encontrado
{
"errors": [{
"message": "Project not found",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Acceso No Autorizado
{
"errors": [{
"message": "You don't have access to this resource",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Notas Importantes
- Rendimiento: Utilice la paginación para listas de usuarios grandes (máx. 200 usuarios por solicitud)
- Búsqueda: Busca en los campos de nombre, apellido y correo electrónico
- Privacidad del Correo Electrónico: Las direcciones de correo electrónico solo son visibles para usuarios con niveles de acceso de PROPIETARIO o ADMIN
- Estado en Línea:
isOnline
se actualiza en tiempo real a través de conexiones WebSocket - Imágenes de Perfil: Utilice el
image.variants
campo para diferentes tamaños - Filtrado: El
notInProjectId
parámetro es útil al construir interfaces de selección de usuarios - Niveles de Acceso: Las listas de usuarios de proyectos incluyen información de rol no disponible en las listas de empresas
Operaciones Relacionadas
- Descripción General de la Gestión de Usuarios - Operaciones de gestión de usuarios
- Eliminar Usuario - Eliminar usuarios de proyectos
- Roles Personalizados - Gestionar permisos de usuarios