title: Listas
description: Gestiona listas de tareas dentro de proyectos: crea, edita, elimina y consulta listas
Descripción general
Las listas en Blue son contenedores para organizar tareas dentro de un proyecto. Cada lista puede contener múltiples tareas y ayuda a estructurar el trabajo en grupos lógicos. Las listas admiten posicionamiento, bloqueo y control de acceso basado en roles.
Conceptos clave
- Cada proyecto puede tener hasta 50 listas
- Las listas están ordenadas por posición (ascendente)
- Las listas pueden ser bloqueadas para evitar modificaciones
- Las listas respetan los permisos a nivel de proyecto y basados en roles
- Las listas eliminadas se mueven a la papelera (eliminación suave)
Consultas
Obtener una lista única
Recupera una lista de tareas específica por ID.
query GetTodoList($id: String!) {
todoList(id: $id) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
project {
id
name
}
createdBy {
id
username
}
}
}
Obtener todas las listas en un proyecto
Recupera todas las listas de tareas para un proyecto específico.
query GetProjectLists($projectId: String!) {
todoLists(projectId: $projectId) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
}
}
Consulta avanzada de listas
Consulta listas con filtrado, ordenamiento y paginación.
query SearchTodoLists($filter: TodoListsFilterInput!, $sort: [TodoListsSort!], $skip: Int, $take: Int) {
todoListQueries {
todoLists(filter: $filter, sort: $sort, skip: $skip, take: $take) {
items {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
project {
id
name
}
}
pageInfo {
hasNextPage
hasPreviousPage
total
}
}
}
}
Mutaciones
Crear una lista
Crea una nueva lista de tareas en un proyecto.
mutation CreateTodoList($input: CreateTodoListInput!) {
createTodoList(input: $input) {
id
uid
title
position
isDisabled
isLocked
createdAt
project {
id
name
}
}
}
Ejemplo:
mutation {
createTodoList(input: {
projectId: "project-123"
title: "Sprint 1 Tasks"
position: 1.0
}) {
id
title
}
}
Editar una lista
Actualiza las propiedades de una lista de tareas existente.
mutation EditTodoList($input: EditTodoListInput!) {
editTodoList(input: $input) {
id
title
position
isLocked
updatedAt
}
}
Ejemplo:
mutation {
editTodoList(input: {
todoListId: "list-123"
title: "Sprint 1 - In Progress"
position: 2.0
isLocked: true
}) {
id
title
isLocked
}
}
Eliminar una lista
Elimina una lista de tareas (se mueve a la papelera).
mutation DeleteTodoList($input: DeleteTodoListInput!) {
deleteTodoList(input: $input) {
success
}
}
Ejemplo:
mutation {
deleteTodoList(input: {
projectId: "project-123"
todoListId: "list-123"
}) {
success
}
}
Marcar lista como completada/no completada
Marca todas las tareas en una lista como completadas o no completadas.
# Mark as done
mutation MarkListDone($todoListId: String!, $filter: TodosFilter) {
markTodoListAsDone(todoListId: $todoListId, filter: $filter)
}
# Mark as undone
mutation MarkListUndone($todoListId: String!, $filter: TodosFilter) {
markTodoListAsUndone(todoListId: $todoListId, filter: $filter)
}
Tipos de entrada
CreateTodoListInput
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
projectId |
String! | ✅ Sí | El ID del proyecto donde se creará la lista |
title |
String! | ✅ Sí | El nombre de la lista |
position |
Float! | ✅ Sí | La posición de la lista (para ordenamiento) |
EditTodoListInput
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
todoListId |
String! | ✅ Sí | El ID de la lista a editar |
title |
String | No | Nuevo título para la lista |
position |
Float | No | Nueva posición para la lista |
isLocked |
Boolean | No | Si la lista debe estar bloqueada |
DeleteTodoListInput
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
projectId |
String! | ✅ Sí | El ID del proyecto (para verificación) |
todoListId |
String! | ✅ Sí | El ID de la lista a eliminar |
TodoListsFilterInput
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
companyIds |
[String!]! | ✅ Sí | Filtrar por IDs de empresa |
projectIds |
[String!] | No | Filtrar por IDs de proyectos específicos |
ids |
[String!] | No | Filtrar por IDs de listas específicas |
titles |
[String!] | No | Filtrar por títulos de listas |
search |
String | No | Buscar listas por título |
Valores de ordenamiento de listas de tareas
Valor | Descripción |
---|---|
title_ASC |
Ordenar por título ascendente |
title_DESC |
Ordenar por título descendente |
createdAt_ASC |
Ordenar por fecha de creación ascendente |
createdAt_DESC |
Ordenar por fecha de creación descendente |
updatedAt_ASC |
Ordenar por fecha de actualización ascendente |
updatedAt_DESC |
Ordenar por fecha de actualización descendente |
position_ASC |
Ordenar por posición ascendente (predeterminado) |
position_DESC |
Ordenar por posición descendente |
Tipos de respuesta
Tipo TodoList
Campo | Tipo | Descripción |
---|---|---|
id |
ID! | Identificador único |
uid |
String! | Identificador amigable para el usuario |
position |
Float! | Posición de la lista para ordenamiento |
title |
String! | Nombre de la lista |
isDisabled |
Boolean! | Si la lista está deshabilitada |
isLocked |
Boolean | Si la lista está bloqueada |
createdAt |
DateTime! | Marca de tiempo de creación |
updatedAt |
DateTime! | Marca de tiempo de la última actualización |
activity |
Activity | Registro de actividad asociado |
createdBy |
User | Usuario que creó la lista |
project |
Project! | Proyecto padre |
todos |
[Todo!]! | Tareas en esta lista |
todosCount |
Int! | Número de tareas |
Tipo TodoListsPagination
Campo | Tipo | Descripción |
---|---|---|
items |
[TodoList!]! | Array de listas de tareas |
pageInfo |
PageInfo! | Información de paginación |
Permisos requeridos
Permisos de consulta
Operación | Permiso requerido |
---|---|
todoList |
Must be authenticated |
todoLists |
Must be authenticated and in company |
todoListQueries.todoLists |
Must be authenticated and in company |
Permisos de mutación
Operación | Roles permitidos a nivel de proyecto |
---|---|
createTodoList |
OWNER, ADMIN, MEMBER |
editTodoList |
OWNER, ADMIN, MEMBER, CLIENT |
deleteTodoList |
OWNER, ADMIN, MEMBER |
markTodoListAsDone |
OWNER, ADMIN, MEMBER |
markTodoListAsUndone |
OWNER, ADMIN, MEMBER |
Nota: Los usuarios con el rol CLIENT pueden editar listas pero no pueden crearlas ni eliminarlas. Los usuarios con roles VIEW_ONLY o COMMENT_ONLY no pueden crear, editar ni eliminar listas.
Respuestas de error
TodoListNotFoundError
{
"errors": [{
"message": "Todo list was not found.",
"extensions": {
"code": "TODO_LIST_NOT_FOUND"
}
}]
}
ProjectNotFoundError
{
"errors": [{
"message": "Project was not found.",
"extensions": {
"code": "PROJECT_NOT_FOUND"
}
}]
}
Error de listas máximas
{
"errors": [{
"message": "You have reached the maximum number of todo lists for this project.",
"extensions": {
"code": "INTERNAL_SERVER_ERROR"
}
}]
}
UnauthorizedError
{
"errors": [{
"message": "Unauthorized",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Notas importantes
- Límite de listas: Cada proyecto puede tener un máximo de 50 listas
- Eliminación suave: Las listas eliminadas se mueven a la papelera y pueden ser recuperadas potencialmente
- Gestión de posiciones: Al crear listas, asegúrate de que las posiciones no entren en conflicto. Usa valores incrementales (1.0, 2.0, 3.0) para permitir la inserción entre listas
- Acceso basado en roles: Las listas pueden estar ocultas de ciertos roles utilizando permisos de ProjectUserRoleTodoList
- Webhooks: La creación, actualización y eliminación de listas activan webhooks si están configurados
- Seguimiento de actividad: Todas las operaciones de listas se registran en el feed de actividad
- Actualizaciones en tiempo real: Los cambios en las listas se publican a través de suscripciones para actualizaciones en tiempo real
Operaciones relacionadas
- Usa
todos
consulta para obtener tareas dentro de una lista - Usa
createTodo
mutación para agregar tareas a una lista - Usa
moveTodo
mutación para mover tareas entre listas - Suscríbete a cambios en la lista usando
subscribeToTodoList
suscripción