Gérer les listes de tâches au sein des projets - créer, modifier, supprimer et interroger des listes
Vue d'ensemble
Les listes dans Blue sont des conteneurs pour organiser les tâches au sein d'un projet. Chaque liste peut contenir plusieurs tâches et aide à structurer le travail en groupes logiques. Les listes prennent en charge le positionnement, le verrouillage et le contrôle d'accès basé sur les rôles.
Concepts clés
- Chaque projet peut avoir jusqu'à 50 listes
- Les listes sont ordonnées par position (croissante)
- Les listes peuvent être verrouillées pour empêcher les modifications
- Les listes respectent les autorisations au niveau du projet et basées sur les rôles
- Les listes supprimées sont déplacées vers la corbeille (suppression douce)
Requêtes
Obtenir une seule liste
Récupérer une liste de tâches spécifique par ID.
query GetTodoList($id: String!) {
todoList(id: $id) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
project {
id
name
}
createdBy {
id
username
}
}
}
Obtenir toutes les listes dans un projet
Récupérer toutes les listes de tâches pour un projet spécifique.
query GetProjectLists($projectId: String!) {
todoLists(projectId: $projectId) {
id
uid
title
position
isDisabled
isLocked
createdAt
updatedAt
}
}
Requête avancée de liste
Interroger des listes avec filtrage, tri et pagination.
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
}
}
}
}
Mutations
Créer une liste
Créer une nouvelle liste de tâches dans un projet.
mutation CreateTodoList($input: CreateTodoListInput!) {
createTodoList(input: $input) {
id
uid
title
position
isDisabled
isLocked
createdAt
project {
id
name
}
}
}
Exemple :
mutation {
createTodoList(input: {
projectId: "project-123"
title: "Sprint 1 Tasks"
position: 1.0
}) {
id
title
}
}
Modifier une liste
Mettre à jour les propriétés d'une liste de tâches existante.
mutation EditTodoList($input: EditTodoListInput!) {
editTodoList(input: $input) {
id
title
position
isLocked
updatedAt
}
}
Exemple :
mutation {
editTodoList(input: {
todoListId: "list-123"
title: "Sprint 1 - In Progress"
position: 2.0
isLocked: true
}) {
id
title
isLocked
}
}
Supprimer une liste
Supprimer une liste de tâches (déplace vers la corbeille).
mutation DeleteTodoList($input: DeleteTodoListInput!) {
deleteTodoList(input: $input) {
success
}
}
Exemple :
mutation {
deleteTodoList(input: {
projectId: "project-123"
todoListId: "list-123"
}) {
success
}
}
Marquer la liste comme terminée/non terminée
Marquer toutes les tâches dans une liste comme terminées ou non terminées.
# 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)
}
Types d'entrée
CreateTodoListInput
Paramètre | Type | Requis | Description |
---|---|---|---|
projectId |
String! | ✅ Oui | L'ID du projet où la liste sera créée |
title |
String! | ✅ Oui | Le nom de la liste |
position |
Float! | ✅ Oui | La position de la liste (pour le tri) |
EditTodoListInput
Paramètre | Type | Requis | Description |
---|---|---|---|
todoListId |
String! | ✅ Oui | L'ID de la liste à modifier |
title |
String | Non | Nouveau titre pour la liste |
position |
Float | Non | Nouvelle position pour la liste |
isLocked |
Boolean | Non | Si la liste doit être verrouillée |
DeleteTodoListInput
Paramètre | Type | Requis | Description |
---|---|---|---|
projectId |
String! | ✅ Oui | L'ID du projet (pour vérification) |
todoListId |
String! | ✅ Oui | L'ID de la liste à supprimer |
TodoListsFilterInput
Paramètre | Type | Requis | Description |
---|---|---|---|
companyIds |
[String!]! | ✅ Oui | Filtrer par IDs d'entreprise |
projectIds |
[String!] | Non | Filtrer par IDs de projet spécifiques |
ids |
[String!] | Non | Filtrer par IDs de liste spécifiques |
titles |
[String!] | Non | Filtrer par titres de liste |
search |
String | Non | Rechercher des listes par titre |
TodoListsSort Values
Valeur | Description |
---|---|
title_ASC |
Trier par titre croissant |
title_DESC |
Trier par titre décroissant |
createdAt_ASC |
Trier par date de création croissante |
createdAt_DESC |
Trier par date de création décroissante |
updatedAt_ASC |
Trier par date de mise à jour croissante |
updatedAt_DESC |
Trier par date de mise à jour décroissante |
position_ASC |
Trier par position croissante (par défaut) |
position_DESC |
Trier par position décroissante |
Types de réponse
TodoList Type
Champ | Type | Description |
---|---|---|
id |
ID! | Identifiant unique |
uid |
String! | Identifiant convivial |
position |
Float! | Position de la liste pour le tri |
title |
String! | Nom de la liste |
isDisabled |
Boolean! | Si la liste est désactivée |
isLocked |
Boolean | Si la liste est verrouillée |
createdAt |
DateTime! | Horodatage de création |
updatedAt |
DateTime! | Horodatage de la dernière mise à jour |
activity |
Activity | Journal d'activité associé |
createdBy |
User | Utilisateur qui a créé la liste |
project |
Project! | Projet parent |
todos |
[Todo!]! | Tâches dans cette liste |
todosCount |
Int! | Nombre de tâches |
TodoListsPagination Type
Champ | Type | Description |
---|---|---|
items |
[TodoList!]! | Tableau de listes de tâches |
pageInfo |
PageInfo! | Informations de pagination |
Permissions requises
Permissions de requête
Opération | Permission requise |
---|---|
todoList |
Must be authenticated |
todoLists |
Must be authenticated and in company |
todoListQueries.todoLists |
Must be authenticated and in company |
Permissions de mutation
Opération | Rôles autorisés au niveau du projet |
---|---|
createTodoList |
OWNER, ADMIN, MEMBER |
editTodoList |
OWNER, ADMIN, MEMBER, CLIENT |
deleteTodoList |
OWNER, ADMIN, MEMBER |
markTodoListAsDone |
OWNER, ADMIN, MEMBER |
markTodoListAsUndone |
OWNER, ADMIN, MEMBER |
Remarque : Les utilisateurs avec le rôle CLIENT peuvent modifier les listes mais ne peuvent pas les créer ou les supprimer. Les utilisateurs avec les rôles VIEW_ONLY ou COMMENT_ONLY ne peuvent pas créer, modifier ou supprimer des listes.
Réponses d'erreur
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"
}
}]
}
Erreur de maximum de listes
{
"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"
}
}]
}
Notes importantes
- Limite de liste : Chaque projet peut avoir un maximum de 50 listes
- Suppression douce : Les listes supprimées sont déplacées vers la corbeille et peuvent potentiellement être récupérées
- Gestion de la position : Lors de la création de listes, assurez-vous que les positions ne se chevauchent pas. Utilisez des valeurs incrémentales (1.0, 2.0, 3.0) pour permettre l'insertion entre les listes
- Accès basé sur les rôles : Les listes peuvent être cachées de certains rôles en utilisant les permissions ProjectUserRoleTodoList
- Webhooks : La création, les mises à jour et la suppression de listes déclenchent des webhooks si configurés
- Suivi des activités : Toutes les opérations sur les listes sont enregistrées dans le flux d'activité
- Mises à jour en temps réel : Les modifications de liste sont publiées via des abonnements pour des mises à jour en temps réel
Opérations connexes
- Utilisez
todos
pour interroger les tâches au sein d'une liste - Utilisez
createTodo
pour ajouter des tâches à une liste - Utilisez
moveTodo
pour déplacer des tâches entre les listes - Abonnez-vous aux changements de liste en utilisant
subscribeToTodoList