Los proyectos en Blue forman el marco fundamental para organizar usuarios y datos.
Listar todos los Proyectos
La consulta projectList permite recuperar proyectos con potentes opciones de filtrado, ordenamiento y paginación.
Ejemplo Básico
query ProjectListQuery {
projectList(filter: { companyIds: ["ENTER COMPANY ID"] }) {
items {
id
uid
slug
name
description
archived
color
icon
createdAt
updatedAt
allowNotification
position
unseenActivityCount
todoListsMaxPosition
lastAccessedAt
isTemplate
automationsCount
totalFileCount
totalFileSize
todoAlias
}
pageInfo {
totalPages
totalItems
page
perPage
hasNextPage
hasPreviousPage
}
}
}
Ejemplo Avanzado con Filtrado y Ordenamiento
query FilteredProjectList {
projectList(
filter: {
companyIds: ["company-123", "company-456"]
archived: false
isTemplate: false
search: "marketing"
inProject: true
folderId: null # Get root-level projects only
}
sort: [position_ASC, name_ASC]
skip: 0
take: 50
) {
items {
id
name
slug
position
archived
}
totalCount
pageInfo {
totalItems
hasNextPage
}
}
}
Campos del Proyecto
La siguiente tabla describe todos los campos disponibles para cada proyecto en el ProjectListQuery:
| Campo | Tipo | Descripción |
|---|---|---|
| id | ID! | Identificador único para el proyecto |
| uid | String! | Identificador único amigable para el usuario del proyecto |
| slug | String! | Nombre del proyecto amigable para URL |
| name | String! | Nombre para mostrar del proyecto |
| description | String | Breve descripción del proyecto |
| archived | Boolean | Booleano que indica si el proyecto está archivado |
| color | String | Color asociado con el proyecto para identificación visual |
| icon | String | Icono asociado con el proyecto para identificación visual |
| image | Image | Objeto de imagen de portada del proyecto |
| createdAt | DateTime! | Marca de tiempo cuando se creó el proyecto |
| updatedAt | DateTime! | Marca de tiempo cuando se actualizó por última vez el proyecto |
| allowNotification | Boolean! | Booleano que indica si las notificaciones están habilitadas para el proyecto |
| position | Float! | Valor numérico que representa la posición del proyecto en una lista |
| unseenActivityCount | Int! | Número de actividades no vistas en el proyecto |
| todoListsMaxPosition | Float! | Valor máximo de posición para listas de tareas en el proyecto |
| lastAccessedAt | DateTime | Marca de tiempo cuando se accedió por última vez al proyecto |
| isTemplate | Boolean! | Booleano que indica si el proyecto es una plantilla |
| isOfficialTemplate | Boolean! | Booleano que indica si esta es una plantilla oficial de Blue |
| automationsCount(isActive: Boolean) | Int! | Número de automatizaciones asociadas con el proyecto |
| totalFileCount | Int | Número total de archivos en el proyecto |
| totalFileSize | Float | Tamaño total de todos los archivos en el proyecto (en bytes) |
| todoAlias | String | Alias personalizado para "tarea" utilizado en el proyecto |
| category | ProjectCategory! | Categoría del proyecto (CRM, MARKETING, etc.) |
| hideEmailFromRoles | [UserAccessLevel!] | Array de roles que deben ocultar direcciones de correo electrónico |
| hideStatusUpdate | Boolean | Booleano para ocultar actualizaciones de estado |
| company | Company! | Detalles completos del objeto de la empresa |
| accessLevel(userId: String) | UserAccessLevel | Obtener el nivel de acceso del usuario para el proyecto específico |
| folder | Folder | Carpeta que contiene este proyecto |
| features | [ProjectFeature!] | Array de características del proyecto habilitadas |
| sequenceCustomField | CustomField | Campo personalizado utilizado para numeración secuencial |
| coverConfig | TodoCoverConfig | Configuración para imágenes de portada de tareas |
| hideRecordCount | Boolean | Si se deben ocultar los recuentos de registros |
| showTimeSpentInTodoList | Boolean | Si se debe mostrar el tiempo dedicado en listas de tareas |
| showTimeSpentInProject | Boolean | Si se debe mostrar el tiempo dedicado en el proyecto |
| todoFields | [TodoField] | Definiciones de campos de tareas personalizados |
Nota: Puedes solicitar cualquier combinación de estos campos en tu consulta GraphQL.
Campos de Paginación
El objeto pageInfo proporciona detalles de paginación para los resultados de la consulta:
| Campo | Tipo | Descripción |
|---|---|---|
| totalPages | Int | Número total de páginas de resultados |
| totalItems | Int | Número total de proyectos que coinciden con la consulta |
| page | Int | Número de página actual |
| perPage | Int | Número de elementos por página |
| hasNextPage | Boolean! | Booleano que indica si hay una siguiente página de resultados |
| hasPreviousPage | Boolean! | Booleano que indica si hay una página anterior de resultados |
Parámetros de Consulta
Opciones de Filtrado (ProjectListFilter)
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
companyIds |
[String!]! | ✅ Sí | Array de IDs de empresas o slugs para buscar dentro |
ids |
[String!] | No | Filtrar por IDs de proyectos específicos |
archived |
Boolean | No | Filtrar por estado archivado (true/false) |
isTemplate |
Boolean | No | Filtrar proyectos plantilla (true/false) |
search |
String | No | Buscar proyectos por nombre (sin distinguir mayúsculas y minúsculas) |
folderId |
String | No | Filtrar por ID de carpeta. Usa null para proyectos de nivel raíz |
inProject |
Boolean | No | Filtrar por membresía de usuario. Ver nota a continuación |
Nota sobre el filtro inProject:
trueoundefined: Devuelve proyectos de los que el usuario es miembrofalse: Devuelve proyectos en los que el usuario NO está (requiere permiso de propietario de la empresa)- El filtrado por carpeta (
folderId) solo funciona cuandoinProjectno estáfalse
Opciones de Ordenamiento (ProjectSort)
| Valor | Descripción |
|---|---|
id_ASC |
Ordenar por ID ascendente |
id_DESC |
Ordenar por ID descendente |
name_ASC |
Ordenar por nombre ascendente (A-Z) |
name_DESC |
Ordenar por nombre descendente (Z-A) |
createdAt_ASC |
Ordenar por fecha de creación (más antiguo primero) |
createdAt_DESC |
Ordenar por fecha de creación (más reciente primero) |
updatedAt_ASC |
Ordenar por última actualización (más antigua primero) |
updatedAt_DESC |
Ordenar por última actualización (más reciente primero) |
position_ASC |
Ordenar por posición ascendente* |
position_DESC |
Ordenar por posición descendente* |
*El ordenamiento por posición solo está disponible cuando se visualizan proyectos de los que el usuario es miembro (inProject !== false)
Parámetros de Paginación
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
skip |
Int | 0 | Número de registros a omitir |
take |
Int | 20 | Número de registros a devolver |
Notas Importantes
-
Comportamiento predeterminado para proyectos no miembros (
inProject: false):- Excluye proyectos archivados a menos que el filtro
archivedesté explícitamente establecido - Excluye proyectos plantilla a menos que el filtro
isTemplateesté explícitamente establecido
- Excluye proyectos archivados a menos que el filtro
-
Limitaciones del filtrado por carpeta:
- Solo funciona al mostrar proyectos del usuario
- No se puede usar con
inProject: false - Usa
folderId: nullpara obtener proyectos que no estén en ninguna carpeta
-
Retroceso de ordenamiento:
- El ordenamiento por posición se ignora al visualizar proyectos no miembros
- Se retrocede al ordenamiento por nombre en tales casos
-
Parámetros obsoletos:
orderBy,after,before,first,lastestán obsoletos- Usa
sort,skip, ytakeen su lugar