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és
  • ACTIVITY_UPDATED - Activités modifiées
  • ACTIVITY_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

  1. Utiliser la pagination : Les flux d'activité peuvent être volumineux, utilisez toujours le paramètre first
  2. Filtrer par projet : Les flux d'activité à l'échelle de l'entreprise peuvent être écrasants
  3. Mises à jour en temps réel : Utilisez des souscriptions pour des flux d'activité en direct
  4. Filtrage par date : Utilisez des plages de dates pour l'analyse historique des activités
  5. Filtrage par catégorie : Filtrer par types d'activités spécifiques pour des flux ciblés
  6. 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 de html
  • 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

Assistant IA

Les réponses sont générées par l'IA et peuvent contenir des erreurs.

Comment puis-je vous aider ?

Posez-moi toutes vos questions sur Blue ou cette documentation.

Entrez pour envoyer • Maj+Entrée pour une nouvelle ligne • ⌘I pour ouvrir