Recupere e monitore feeds de atividade de projetos usando a API Blue.
Recuperar Atividade do Projeto
A consulta activityList
fornece acesso a um feed de atividade abrangente para projetos e empresas. As atividades são geradas automaticamente quando os usuários realizam ações como criar tarefas, comentários ou fazer alterações no projeto.
Exemplo 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
}
}
Exemplo Avançado com Filtragem
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 | Obrigatório | Descrição |
---|---|---|---|
companyId |
String | Não | Filtrar atividades por ID ou slug da empresa |
projectId |
String | Não | Filtrar atividades por ID ou slug do projeto |
userId |
String | Não | Filtrar atividades por um usuário específico |
userIds |
[String!] | Não | Filtrar atividades por múltiplos usuários |
tagIds |
[String!] | Não | Filtrar atividades por tags de tarefas |
categories |
[ActivityCategory!] | Não | Filtrar por tipos de atividades específicas |
startDate |
DateTime | Não | Filtrar atividades a partir desta data |
endDate |
DateTime | Não | Filtrar atividades até esta data |
skip |
Int | Não | Pular este número de registros (paginação de offset) |
first |
Int | Não | Retornar os primeiros N registros (paginação de cursor) |
last |
Int | Não | Retornar os últimos N registros (paginação de cursor) |
after |
String | Não | Retornar registros após este cursor |
before |
String | Não | Retornar registros antes deste cursor |
orderBy |
ActivityOrderByInput | Não | Ordem de classificação para resultados |
Valores de ActivityCategory
O sistema rastreia automaticamente vários tipos de atividades:
Categoria | Descrição |
---|---|
CREATE_TODO |
Uma nova tarefa foi criada |
MARK_TODO_AS_COMPLETE |
Uma tarefa foi marcada como completa |
CREATE_COMMENT |
Um comentário foi adicionado |
CREATE_DISCUSSION |
Uma discussão foi iniciada |
CREATE_STATUS_UPDATE |
Uma atualização de status foi postada |
CREATE_TODO_LIST |
Uma nova lista de tarefas foi criada |
MOVE_TODO |
Uma tarefa foi movida entre listas |
COPY_TODO |
Uma tarefa foi copiada |
ADD_USER_TO_PROJECT |
Um usuário foi adicionado ao projeto |
REMOVE_USER_FROM_PROJECT |
Um usuário foi removido do projeto |
ARCHIVE_PROJECT |
O projeto foi arquivado |
UNARCHIVE_PROJECT |
O projeto foi desarquivado |
CREATE_INVITATION |
Um usuário foi convidado |
ACCEPT_INVITATION |
Um convite foi aceito |
CREATE_CUSTOM_FIELD |
Um campo personalizado foi criado |
RECEIVE_FORM |
Uma submissão de formulário foi recebida |
Valores de ActivityOrderByInput
Valor | Descrição |
---|---|
createdAt_DESC |
Mais recente primeiro (padrão) |
createdAt_ASC |
Mais antigo primeiro |
updatedAt_DESC |
Mais recentemente atualizado primeiro |
updatedAt_ASC |
Menos recentemente atualizado primeiro |
category_ASC |
Alfabético por categoria |
category_DESC |
Alfabético reverso por categoria |
Campos de Resposta
Tipo de Atividade
Campo | Tipo | Descrição |
---|---|---|
id |
ID! | Identificador único para a atividade |
uid |
String! | Identificador único alternativo |
category |
ActivityCategory! | Tipo de atividade que ocorreu |
html |
String! | Descrição rica em HTML da atividade |
createdAt |
DateTime! | Quando a atividade ocorreu |
updatedAt |
DateTime! | Quando a atividade foi atualizada pela última vez |
createdBy |
User! | Usuário que realizou a ação |
affectedBy |
User | Usuário que foi afetado pela ação |
company |
Company | Empresa associada |
project |
Project | Projeto associado |
todo |
Todo | Tarefa associada (se aplicável) |
todoList |
TodoList | Lista de tarefas associada (se aplicável) |
comment |
Comment | Comentário associado (se aplicável) |
discussion |
Discussion | Discussão associada (se aplicável) |
statusUpdate |
StatusUpdate | Atualização de status associada (se aplicável) |
metadata |
String | Metadados adicionais da atividade |
Resposta ActivityList
Campo | Tipo | Descrição |
---|---|---|
activities |
[Activity!]! | Array de registros de atividade |
pageInfo |
PageInfo! | Informações de paginação |
totalCount |
Int! | Número total de atividades que correspondem aos filtros |
Atualizações de Atividade em Tempo Real
Inscreva-se para mudanças de atividade usando a assinatura 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 Assinatura
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
companyId |
String | Não | Inscrever-se em atividades de toda a empresa |
projectId |
String | Não | Inscrever-se em atividades de projetos específicos |
A assinatura notificará você sobre:
ACTIVITY_CREATED
- Novas atividadesACTIVITY_UPDATED
- Atividades modificadasACTIVITY_DELETED
- Atividades removidas
Filtragem e Privacidade
Filtragem Automática
O feed de atividade filtra automaticamente os resultados com base em:
- Configurações do Projeto: Mostra apenas atividades de projetos com rastreamento de atividade habilitado
- Permissões do Usuário: Diferentes funções de usuário veem diferentes tipos de atividades
- Membresia do Projeto: Usuários só veem atividades de projetos aos quais têm acesso
- Membresia da Empresa: As atividades são limitadas às empresas do usuário
Considerações de Privacidade
- Usuários com função CLIENTE têm visibilidade limitada sobre certas atividades administrativas
- As atividades respeitam as configurações de privacidade em nível de projeto
- Operações sensíveis podem não gerar atividades públicas
Respostas de Erro
Projeto/Empresa Inválido
{
"errors": [{
"message": "Project not found",
"extensions": {
"code": "NOT_FOUND"
}
}]
}
Permissão Negada
{
"errors": [{
"message": "You do not have permission to view activities for this project",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Intervalo de Data Inválido
{
"errors": [{
"message": "Start date must be before end date",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Melhores Práticas
- Use Paginação: Os feeds de atividade podem ser grandes, sempre use o parâmetro
first
- Filtrar por Projeto: Feeds de atividades de toda a empresa podem ser esmagadores
- Atualizações em Tempo Real: Use assinaturas para feeds de atividades ao vivo
- Filtragem por Data: Use intervalos de datas para análise de atividades históricas
- Filtragem por Categoria: Filtrar por tipos de atividades específicas para feeds focados
- Filtragem por Usuário: Rastreie as atividades de membros específicos da equipe usando
userIds
Notas Importantes
- As atividades são geradas automaticamente e não podem ser criadas manualmente via API
- O texto da atividade usa formatação HTML para exibição rica
- O campo
text
está obsoleto em favor dehtml
- As atividades são armazenadas permanentemente e fornecem um registro de auditoria completo
- Assinaturas em tempo real requerem autenticação de conexão WebSocket