Récupérer et surveiller les flux d'activité des projets en utilisant l'API Blue.
Récupérer l'activité du projet
La requête activityList
fournit un accès à un flux d'activité complet pour les projets et les entreprises. Les activités sont générées automatiquement lorsque les utilisateurs effectuent des actions telles que la création de tâches, de commentaires ou de modifications de projet.
Exemple de base
query ProjectActivity {
activityList(
projectId: "your-project-id"
first: 20
orderBy: createdAt_DESC
) {
activities {
id
category
html
createdAt
createdBy {
id
name
email
}
project {
id
name
}
}
pageInfo {
hasNextPage
endCursor
}
totalCount
}
}
Exemple avancé avec filtrage
query FilteredActivity {
activityList(
companyId: "your-company-id"
categories: [CREATE_TODO, MARK_TODO_AS_COMPLETE, CREATE_COMMENT]
userIds: ["user1-id", "user2-id"]
startDate: "2024-01-01T00:00:00Z"
endDate: "2024-12-31T23:59:59Z"
first: 50
orderBy: createdAt_DESC
) {
activities {
id
uid
category
html
createdAt
updatedAt
createdBy {
id
name
email
}
affectedBy {
id
name
}
todo {
id
title
}
comment {
id
text
}
project {
id
name
slug
}
}
pageInfo {
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount
}
}
Paramètres d'entrée
Requête activityList
Paramètre | Type | Requis | Description |
---|---|---|---|
companyId |
String | Non | Filtrer les activités par ID ou slug de l'entreprise |
projectId |
String | Non | Filtrer les activités par ID ou slug de projet |
userId |
String | Non | Filtrer les activités par un utilisateur spécifique |
userIds |
[String!] | Non | Filtrer les activités par plusieurs utilisateurs |
tagIds |
[String!] | Non | Filtrer les activités par des tags de tâches |
categories |
[ActivityCategory!] | Non | Filtrer par types d'activités spécifiques |
startDate |
DateTime | Non | Filtrer les activités à partir de cette date |
endDate |
DateTime | Non | Filtrer les activités jusqu'à cette date |
skip |
Int | Non | Ignorer ce nombre d'enregistrements (pagination par décalage) |
first |
Int | Non | Retourner les premiers N enregistrements (pagination par curseur) |
last |
Int | Non | Retourner les derniers N enregistrements (pagination par curseur) |
after |
String | Non | Retourner les enregistrements après ce curseur |
before |
String | Non | Retourner les enregistrements avant ce curseur |
orderBy |
ActivityOrderByInput | Non | Ordre de tri pour les résultats |
Valeurs ActivityCategory
Le système suit automatiquement divers types d'activités :
Catégorie | Description |
---|---|
CREATE_TODO |
Une nouvelle tâche a été créée |
MARK_TODO_AS_COMPLETE |
Une tâche a été marquée comme complète |
CREATE_COMMENT |
Un commentaire a été ajouté |
CREATE_DISCUSSION |
Une discussion a été lancée |
CREATE_STATUS_UPDATE |
Une mise à jour de statut a été publiée |
CREATE_TODO_LIST |
Une nouvelle liste de tâches a été créée |
MOVE_TODO |
Une tâche a été déplacée entre des listes |
COPY_TODO |
Une tâche a été copiée |
ADD_USER_TO_PROJECT |
Un utilisateur a été ajouté au projet |
REMOVE_USER_FROM_PROJECT |
Un utilisateur a été retiré du projet |
ARCHIVE_PROJECT |
Le projet a été archivé |
UNARCHIVE_PROJECT |
Le projet a été désarchivé |
CREATE_INVITATION |
Un utilisateur a été invité |
ACCEPT_INVITATION |
Une invitation a été acceptée |
CREATE_CUSTOM_FIELD |
Un champ personnalisé a été créé |
RECEIVE_FORM |
Une soumission de formulaire a été reçue |
Valeurs ActivityOrderByInput
Valeur | Description |
---|---|
createdAt_DESC |
Le plus récent en premier (par défaut) |
createdAt_ASC |
Le plus ancien en premier |
updatedAt_DESC |
Le plus récemment mis à jour en premier |
updatedAt_ASC |
Le moins récemment mis à jour en premier |
category_ASC |
Alphabétique par catégorie |
category_DESC |
Alphabétique inversé par catégorie |
Champs de réponse
Type d'activité
Champ | Type | Description |
---|---|---|
id |
ID! | Identifiant unique pour l'activité |
uid |
String! | Identifiant unique alternatif |
category |
ActivityCategory! | Type d'activité qui a eu lieu |
html |
String! | Description HTML riche de l'activité |
createdAt |
DateTime! | Quand l'activité a eu lieu |
updatedAt |
DateTime! | Quand l'activité a été mise à jour pour la dernière fois |
createdBy |
User! | Utilisateur ayant effectué l'action |
affectedBy |
User | Utilisateur affecté par l'action |
company |
Company | Entreprise associée |
project |
Project | Projet associé |
todo |
Todo | Tâche associée (le cas échéant) |
todoList |
TodoList | Liste de tâches associée (le cas échéant) |
comment |
Comment | Commentaire associé (le cas échéant) |
discussion |
Discussion | Discussion associée (le cas échéant) |
statusUpdate |
StatusUpdate | Mise à jour de statut associée (le cas échéant) |
metadata |
String | Métadonnées d'activité supplémentaires |
Réponse ActivityList
Champ | Type | Description |
---|---|---|
activities |
[Activity!]! | Tableau d'enregistrements d'activité |
pageInfo |
PageInfo! | Informations de pagination |
totalCount |
Int! | Nombre total d'activités correspondant aux filtres |
Mises à jour d'activité en temps réel
Abonnez-vous aux changements d'activité en utilisant la souscription subscribeToActivity
:
subscription ActivityUpdates($companyId: String!, $projectId: String) {
subscribeToActivity(companyId: $companyId, projectId: $projectId) {
mutation
node {
id
category
html
createdAt
createdBy {
id
name
email
}
project {
id
name
}
}
}
}
Paramètres de souscription
Paramètre | Type | Requis | Description |
---|---|---|---|
companyId |
String | Non | S'abonner aux activités de l'entreprise |
projectId |
String | Non | S'abonner aux activités d'un projet spécifique |
La souscription vous notifiera de :
ACTIVITY_CREATED
- Nouvelles activitésACTIVITY_UPDATED
- Activités modifiéesACTIVITY_DELETED
- Activités supprimées
Filtrage et confidentialité
Filtrage automatique
Le flux d'activité filtre automatiquement les résultats en fonction de :
- Paramètres du projet : Affiche uniquement les activités des projets avec le suivi d'activité activé
- Permissions des utilisateurs : Différents rôles d'utilisateur voient différents types d'activités
- Appartenance au projet : Les utilisateurs ne voient que les activités des projets auxquels ils ont accès
- Appartenance à l'entreprise : Les activités sont limitées aux entreprises des utilisateurs
Considérations de confidentialité
- Les utilisateurs ayant le rôle CLIENT ont une visibilité limitée sur certaines activités administratives
- Les activités respectent les paramètres de confidentialité au niveau du projet
- Les opérations sensibles peuvent ne pas générer d'activités publiques
Réponses d'erreur
Projet/Entreprise invalide
{
"errors": [{
"message": "Project not found",
"extensions": {
"code": "NOT_FOUND"
}
}]
}
Permission refusée
{
"errors": [{
"message": "You do not have permission to view activities for this project",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Plage de dates invalide
{
"errors": [{
"message": "Start date must be before end date",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Meilleures pratiques
- Utiliser la pagination : Les flux d'activité peuvent être volumineux, utilisez toujours le paramètre
first
- Filtrer par projet : Les flux d'activité à l'échelle de l'entreprise peuvent être écrasants
- Mises à jour en temps réel : Utilisez des souscriptions pour des flux d'activité en direct
- Filtrage par date : Utilisez des plages de dates pour l'analyse historique des activités
- Filtrage par catégorie : Filtrer par types d'activités spécifiques pour des flux ciblés
- Filtrage par utilisateur : Suivre les activités de membres spécifiques de l'équipe en utilisant
userIds
Notes importantes
- Les activités sont générées automatiquement et ne peuvent pas être créées manuellement via l'API
- Le texte des activités utilise un formatage HTML pour un affichage riche
- Le champ
text
est obsolète au profit dehtml
- Les activités sont stockées de manière permanente et fournissent une traçabilité complète
- Les souscriptions en temps réel nécessitent une authentification de connexion WebSocket