Recuperar y monitorear los feeds de actividad del proyecto utilizando la API de Blue.


Recuperar Actividad del Proyecto

La consulta activityList proporciona acceso a un feed de actividad integral para proyectos y empresas. Las actividades se generan automáticamente cuando los usuarios realizan acciones como crear tareas, comentarios o realizar cambios en el proyecto.

Ejemplo Básico

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
  }
}

Ejemplo Avanzado con Filtrado

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
  }
}

Parámetros de Entrada

Consulta activityList

Parámetro Tipo Requerido Descripción
companyId String No Filtrar actividades por ID de empresa o slug
projectId String No Filtrar actividades por ID de proyecto o slug
userId String No Filtrar actividades por un usuario específico
userIds [String!] No Filtrar actividades por múltiples usuarios
tagIds [String!] No Filtrar actividades por etiquetas de tareas
categories [ActivityCategory!] No Filtrar por tipos de actividad específicos
startDate DateTime No Filtrar actividades desde esta fecha
endDate DateTime No Filtrar actividades hasta esta fecha
skip Int No Omitir este número de registros (paginación de desplazamiento)
first Int No Devolver los primeros N registros (paginación de cursor)
last Int No Devolver los últimos N registros (paginación de cursor)
after String No Devolver registros después de este cursor
before String No Devolver registros antes de este cursor
orderBy ActivityOrderByInput No Orden de clasificación para resultados

Valores de ActivityCategory

El sistema rastrea varios tipos de actividades automáticamente:

Categoría Descripción
CREATE_TODO Se creó una nueva tarea
MARK_TODO_AS_COMPLETE Se marcó una tarea como completa
CREATE_COMMENT Se agregó un comentario
CREATE_DISCUSSION Se inició una discusión
CREATE_STATUS_UPDATE Se publicó una actualización de estado
CREATE_TODO_LIST Se creó una nueva lista de tareas
MOVE_TODO Se movió una tarea entre listas
COPY_TODO Se copió una tarea
ADD_USER_TO_PROJECT Se agregó un usuario al proyecto
REMOVE_USER_FROM_PROJECT Se eliminó un usuario del proyecto
ARCHIVE_PROJECT El proyecto fue archivado
UNARCHIVE_PROJECT El proyecto fue desarchivado
CREATE_INVITATION Se invitó a un usuario
ACCEPT_INVITATION Se aceptó una invitación
CREATE_CUSTOM_FIELD Se creó un campo personalizado
RECEIVE_FORM Se recibió una presentación de formulario

Valores de ActivityOrderByInput

Valor Descripción
createdAt_DESC Más reciente primero (predeterminado)
createdAt_ASC Más antiguo primero
updatedAt_DESC Más recientemente actualizado primero
updatedAt_ASC Menos recientemente actualizado primero
category_ASC Alfabético por categoría
category_DESC Alfabético inverso por categoría

Campos de Respuesta

Tipo de Actividad

Campo Tipo Descripción
id ID! Identificador único para la actividad
uid String! Identificador único alternativo
category ActivityCategory! Tipo de actividad que ocurrió
html String! Descripción HTML enriquecida de la actividad
createdAt DateTime! Cuándo ocurrió la actividad
updatedAt DateTime! Cuándo se actualizó por última vez la actividad
createdBy User! Usuario que realizó la acción
affectedBy User Usuario que fue afectado por la acción
company Company Empresa asociada
project Project Proyecto asociado
todo Todo Tarea asociada (si corresponde)
todoList TodoList Lista de tareas asociada (si corresponde)
comment Comment Comentario asociado (si corresponde)
discussion Discussion Discusión asociada (si corresponde)
statusUpdate StatusUpdate Actualización de estado asociada (si corresponde)
metadata String Metadatos adicionales de la actividad

Respuesta de ActivityList

Campo Tipo Descripción
activities [Activity!]! Array de registros de actividad
pageInfo PageInfo! Información de paginación
totalCount Int! Número total de actividades que coinciden con los filtros

Actualizaciones de Actividad en Tiempo Real

Suscríbete a los cambios de actividad utilizando la suscripción 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
      }
    }
  }
}

Parámetros de Suscripción

Parámetro Tipo Requerido Descripción
companyId String No Suscribirse a actividades a nivel de empresa
projectId String No Suscribirse a actividades de proyectos específicos

La suscripción te notificará sobre:

  • ACTIVITY_CREATED - Nuevas actividades
  • ACTIVITY_UPDATED - Actividades modificadas
  • ACTIVITY_DELETED - Actividades eliminadas

Filtrado y Privacidad

Filtrado Automático

El feed de actividad filtra automáticamente los resultados en función de:

  • Configuraciones del Proyecto: Solo muestra actividades de proyectos con seguimiento de actividad habilitado
  • Permisos de Usuario: Diferentes roles de usuario ven diferentes tipos de actividad
  • Membresía del Proyecto: Los usuarios solo ven actividades de proyectos a los que tienen acceso
  • Membresía de la Empresa: Las actividades se limitan a las empresas del usuario

Consideraciones de Privacidad

  • Los usuarios con rol CLIENTE tienen visibilidad limitada sobre ciertas actividades administrativas
  • Las actividades respetan las configuraciones de privacidad a nivel de proyecto
  • Las operaciones sensibles pueden no generar actividades públicas

Respuestas de Error

Proyecto/Empresa Inválido

{
  "errors": [{
    "message": "Project not found",
    "extensions": {
      "code": "NOT_FOUND"
    }
  }]
}

Permiso Denegado

{
  "errors": [{
    "message": "You do not have permission to view activities for this project",
    "extensions": {
      "code": "FORBIDDEN"
    }
  }]
}

Rango de Fechas Inválido

{
  "errors": [{
    "message": "Start date must be before end date",
    "extensions": {
      "code": "BAD_USER_INPUT"
    }
  }]
}

Mejores Prácticas

  1. Usar Paginación: Los feeds de actividad pueden ser grandes, siempre usa el parámetro first
  2. Filtrar por Proyecto: Los feeds de actividad a nivel de empresa pueden ser abrumadores
  3. Actualizaciones en Tiempo Real: Usa suscripciones para feeds de actividad en vivo
  4. Filtrado por Fecha: Usa rangos de fechas para análisis de actividad histórica
  5. Filtrado por Categoría: Filtra por tipos de actividad específicos para feeds enfocados
  6. Filtrado por Usuario: Rastrear las actividades de miembros específicos del equipo usando userIds

Notas Importantes

  • Las actividades se generan automáticamente y no se pueden crear manualmente a través de la API
  • El texto de la actividad utiliza formato HTML para una visualización enriquecida
  • El campo text está obsoleto en favor de html
  • Las actividades se almacenan de forma permanente y proporcionan un registro de auditoría completo
  • Las suscripciones en tiempo real requieren autenticación de conexión WebSocket

Asistente IA

Las respuestas son generadas por IA y pueden contener errores.

¿Cómo puedo ayudarte?

Pregúntame cualquier cosa sobre Blue o esta documentación.

Enter para enviar • Shift+Enter para nueva línea • ⌘I para abrir