Pobierz i monitoruj kanały aktywności projektów za pomocą API Blue.
Pobierz Aktywność Projektu
Zapytanie activityList
zapewnia dostęp do kompleksowego kanału aktywności dla projektów i firm. Aktywności są automatycznie generowane, gdy użytkownicy wykonują działania, takie jak tworzenie zadań, komentarzy lub wprowadzanie zmian w projekcie.
Podstawowy Przykład
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
}
}
Zaawansowany Przykład z Filtrowaniem
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
}
}
Parametry Wejściowe
Zapytanie activityList
Parametr | Typ | Wymagany | Opis |
---|---|---|---|
companyId |
String | Nie | Filtrowanie aktywności według ID firmy lub slug |
projectId |
String | Nie | Filtrowanie aktywności według ID projektu lub slug |
userId |
String | Nie | Filtrowanie aktywności według konkretnego użytkownika |
userIds |
[String!] | Nie | Filtrowanie aktywności według wielu użytkowników |
tagIds |
[String!] | Nie | Filtrowanie aktywności według tagów zadań |
categories |
[ActivityCategory!] | Nie | Filtrowanie według konkretnych typów aktywności |
startDate |
DateTime | Nie | Filtrowanie aktywności od tej daty |
endDate |
DateTime | Nie | Filtrowanie aktywności do tej daty |
skip |
Int | Nie | Pomiń tę liczbę rekordów (stronicowanie offsetowe) |
first |
Int | Nie | Zwróć pierwsze N rekordów (stronicowanie kursorowe) |
last |
Int | Nie | Zwróć ostatnie N rekordów (stronicowanie kursorowe) |
after |
String | Nie | Zwróć rekordy po tym kursorze |
before |
String | Nie | Zwróć rekordy przed tym kursorem |
orderBy |
ActivityOrderByInput | Nie | Kolejność sortowania wyników |
Wartości ActivityCategory
System automatycznie śledzi różne typy aktywności:
Kategoria | Opis |
---|---|
CREATE_TODO |
Utworzono nowe zadanie |
MARK_TODO_AS_COMPLETE |
Zadanie oznaczone jako ukończone |
CREATE_COMMENT |
Dodano komentarz |
CREATE_DISCUSSION |
Rozpoczęto dyskusję |
CREATE_STATUS_UPDATE |
Opublikowano aktualizację statusu |
CREATE_TODO_LIST |
Utworzono nową listę zadań |
MOVE_TODO |
Zadanie przeniesiono między listami |
COPY_TODO |
Zadanie skopiowano |
ADD_USER_TO_PROJECT |
Użytkownik został dodany do projektu |
REMOVE_USER_FROM_PROJECT |
Użytkownik został usunięty z projektu |
ARCHIVE_PROJECT |
Projekt został zarchiwizowany |
UNARCHIVE_PROJECT |
Projekt został odarchiwizowany |
CREATE_INVITATION |
Użytkownik został zaproszony |
ACCEPT_INVITATION |
Zaproszenie zostało zaakceptowane |
CREATE_CUSTOM_FIELD |
Utworzono pole niestandardowe |
RECEIVE_FORM |
Otrzymano zgłoszenie formularza |
Wartości ActivityOrderByInput
Wartość | Opis |
---|---|
createdAt_DESC |
Najnowsze najpierw (domyślnie) |
createdAt_ASC |
Najstarsze najpierw |
updatedAt_DESC |
Najnowsze zaktualizowane najpierw |
updatedAt_ASC |
Najmniej niedawno zaktualizowane najpierw |
category_ASC |
Alfabetycznie według kategorii |
category_DESC |
Odwrotnie alfabetycznie według kategorii |
Pola Odpowiedzi
Typ Aktywności
Pole | Typ | Opis |
---|---|---|
id |
ID! | Unikalny identyfikator aktywności |
uid |
String! | Alternatywny unikalny identyfikator |
category |
ActivityCategory! | Typ aktywności, która miała miejsce |
html |
String! | Bogaty opis HTML aktywności |
createdAt |
DateTime! | Kiedy miała miejsce aktywność |
updatedAt |
DateTime! | Kiedy aktywność została ostatnio zaktualizowana |
createdBy |
User! | Użytkownik, który wykonał działanie |
affectedBy |
User | Użytkownik, który został dotknięty działaniem |
company |
Company | Powiązana firma |
project |
Project | Powiązany projekt |
todo |
Todo | Powiązane zadanie (jeśli dotyczy) |
todoList |
TodoList | Powiązana lista zadań (jeśli dotyczy) |
comment |
Comment | Powiązany komentarz (jeśli dotyczy) |
discussion |
Discussion | Powiązana dyskusja (jeśli dotyczy) |
statusUpdate |
StatusUpdate | Powiązana aktualizacja statusu (jeśli dotyczy) |
metadata |
String | Dodatkowe metadane aktywności |
Odpowiedź ActivityList
Pole | Typ | Opis |
---|---|---|
activities |
[Activity!]! | Tablica rekordów aktywności |
pageInfo |
PageInfo! | Informacje o stronicowaniu |
totalCount |
Int! | Całkowita liczba aktywności pasujących do filtrów |
Aktualizacje Aktywności w Czasie Rzeczywistym
Subskrybuj zmiany aktywności za pomocą subskrypcji 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
}
}
}
}
Parametry Subskrypcji
Parametr | Typ | Wymagany | Opis |
---|---|---|---|
companyId |
String | Nie | Subskrybuj aktywności w całej firmie |
projectId |
String | Nie | Subskrybuj aktywności konkretnego projektu |
Subskrypcja powiadomi Cię o:
ACTIVITY_CREATED
- Nowe aktywnościACTIVITY_UPDATED
- Zmodyfikowane aktywnościACTIVITY_DELETED
- Usunięte aktywności
Filtrowanie i Prywatność
Automatyczne Filtrowanie
Kanał aktywności automatycznie filtruje wyniki na podstawie:
- Ustawień Projektu: Pokazuje tylko aktywności z projektów z włączonym śledzeniem aktywności
- Uprawnień Użytkownika: Różne role użytkowników widzą różne typy aktywności
- Członkostwa w Projekcie: Użytkownicy widzą tylko aktywności z projektów, do których mają dostęp
- Członkostwa w Firmie: Aktywności są ograniczone do firm użytkownika
Rozważania dotyczące Prywatności
- Użytkownicy z rolą CLIENT mają ograniczoną widoczność niektórych działań administracyjnych
- Aktywności respektują ustawienia prywatności na poziomie projektu
- Wrażliwe operacje mogą nie generować publicznych aktywności
Odpowiedzi na Błędy
Nieprawidłowy Projekt/Firma
{
"errors": [{
"message": "Project not found",
"extensions": {
"code": "NOT_FOUND"
}
}]
}
Odrzucone Uprawnienia
{
"errors": [{
"message": "You do not have permission to view activities for this project",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
Nieprawidłowy Zakres Dat
{
"errors": [{
"message": "Start date must be before end date",
"extensions": {
"code": "BAD_USER_INPUT"
}
}]
}
Najlepsze Praktyki
- Używaj Stronicowania: Kanały aktywności mogą być duże, zawsze używaj parametru
first
- Filtrowanie według Projektu: Kanały aktywności w całej firmie mogą być przytłaczające
- Aktualizacje w czasie rzeczywistym: Używaj subskrypcji do na żywo kanałów aktywności
- Filtrowanie Dat: Używaj zakresów dat do analizy aktywności historycznych
- Filtrowanie Kategorii: Filtrowanie według konkretnych typów aktywności dla skoncentrowanych kanałów
- Filtrowanie Użytkowników: Śledź aktywności konkretnych członków zespołu za pomocą
userIds
Ważne Uwagi
- Aktywności są automatycznie generowane i nie mogą być ręcznie tworzone za pomocą API
- Tekst aktywności używa formatowania HTML do bogatego wyświetlania
- Pole
text
jest przestarzałe na rzeczhtml
- Aktywności są trwale przechowywane i zapewniają pełny ślad audytowy
- Subskrypcje w czasie rzeczywistym wymagają uwierzytelnienia połączenia WebSocket