Blue APIを使用してプロジェクトアクティビティフィードを取得および監視します。


プロジェクトアクティビティの取得

activityList クエリは、プロジェクトおよび企業の包括的なアクティビティフィードにアクセスするためのものです。アクティビティは、ユーザーがTODOの作成、コメント、またはプロジェクトの変更を行うと自動的に生成されます。

基本的な例

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

フィルタリングを使用した高度な例

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

入力パラメータ

activityList クエリ

パラメータ 必須 説明
companyId String いいえ 会社IDまたはスラグでアクティビティをフィルタリング
projectId String いいえ プロジェクトIDまたはスラグでアクティビティをフィルタリング
userId String いいえ 特定のユーザーでアクティビティをフィルタリング
userIds [String!] いいえ 複数のユーザーでアクティビティをフィルタリング
tagIds [String!] いいえ TODOタグでアクティビティをフィルタリング
categories [ActivityCategory!] いいえ 特定のアクティビティタイプでフィルタリング
startDate DateTime いいえ この日付以降のアクティビティをフィルタリング
endDate DateTime いいえ この日付までのアクティビティをフィルタリング
skip Int いいえ この数のレコードをスキップ(オフセットページネーション)
first Int いいえ 最初のNレコードを返す(カーソルページネーション)
last Int いいえ 最後のNレコードを返す(カーソルページネーション)
after String いいえ このカーソル以降のレコードを返す
before String いいえ このカーソル以前のレコードを返す
orderBy ActivityOrderByInput いいえ 結果のソート順

ActivityCategory 値

システムはさまざまなタイプのアクティビティを自動的に追跡します:

カテゴリ 説明
CREATE_TODO 新しいTODO/タスクが作成されました
MARK_TODO_AS_COMPLETE TODOが完了としてマークされました
CREATE_COMMENT コメントが追加されました
CREATE_DISCUSSION 議論が開始されました
CREATE_STATUS_UPDATE ステータス更新が投稿されました
CREATE_TODO_LIST 新しいTODOリストが作成されました
MOVE_TODO TODOがリスト間で移動されました
COPY_TODO TODOがコピーされました
ADD_USER_TO_PROJECT ユーザーがプロジェクトに追加されました
REMOVE_USER_FROM_PROJECT ユーザーがプロジェクトから削除されました
ARCHIVE_PROJECT プロジェクトがアーカイブされました
UNARCHIVE_PROJECT プロジェクトがアーカイブ解除されました
CREATE_INVITATION ユーザーが招待されました
ACCEPT_INVITATION 招待が受け入れられました
CREATE_CUSTOM_FIELD カスタムフィールドが作成されました
RECEIVE_FORM フォームの提出が受信されました

ActivityOrderByInput 値

説明
createdAt_DESC 最新のものが最初(デフォルト)
createdAt_ASC 古いものが最初
updatedAt_DESC 最も最近更新されたものが最初
updatedAt_ASC 最も最近更新されていないものが最初
category_ASC カテゴリ別のアルファベット順
category_DESC カテゴリ別の逆アルファベット順

レスポンスフィールド

アクティビティタイプ

フィールド 説明
id ID! アクティビティの一意の識別子
uid String! 代替の一意の識別子
category ActivityCategory! 発生したアクティビティのタイプ
html String! アクティビティのリッチHTML説明
createdAt DateTime! アクティビティが発生した時刻
updatedAt DateTime! アクティビティが最後に更新された時刻
createdBy User! アクションを実行したユーザー
affectedBy User アクションの影響を受けたユーザー
company Company 関連会社
project Project 関連プロジェクト
todo Todo 関連TODO(該当する場合)
todoList TodoList 関連TODOリスト(該当する場合)
comment Comment 関連コメント(該当する場合)
discussion Discussion 関連議論(該当する場合)
statusUpdate StatusUpdate 関連ステータス更新(該当する場合)
metadata String 追加のアクティビティメタデータ

ActivityList レスポンス

フィールド 説明
activities [Activity!]! アクティビティレコードの配列
pageInfo PageInfo! ページネーション情報
totalCount Int! フィルターに一致するアクティビティの総数

リアルタイムアクティビティ更新

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

サブスクリプションパラメータ

パラメータ 必須 説明
companyId String いいえ 会社全体のアクティビティを購読
projectId String いいえ 特定のプロジェクトアクティビティを購読

サブスクリプションは次の通知を行います:

  • ACTIVITY_CREATED - 新しいアクティビティ
  • ACTIVITY_UPDATED - 修正されたアクティビティ
  • ACTIVITY_DELETED - 削除されたアクティビティ

フィルタリングとプライバシー

自動フィルタリング

アクティビティフィードは次の基準に基づいて結果を自動的にフィルタリングします:

  • プロジェクト設定: アクティビティトラッキングが有効なプロジェクトからのアクティビティのみを表示
  • ユーザー権限: 異なるユーザーロールは異なるアクティビティタイプを表示
  • プロジェクトメンバーシップ: ユーザーはアクセス権のあるプロジェクトからのアクティビティのみを表示
  • 会社メンバーシップ: アクティビティはユーザーの会社にスコープされます

プライバシーに関する考慮事項

  • CLIENTロールのユーザーは特定の管理アクティビティに対する可視性が制限されています
  • アクティビティはプロジェクトレベルのプライバシー設定を尊重します
  • 機密操作は公開アクティビティを生成しない場合があります

エラー応答

無効なプロジェクト/会社

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

権限が拒否されました

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

無効な日付範囲

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

ベストプラクティス

  1. ページネーションを使用する: アクティビティフィードは大きくなる可能性があるため、常に first パラメータを使用してください
  2. プロジェクトでフィルタリングする: 会社全体のアクティビティフィードは圧倒的になる可能性があります
  3. リアルタイム更新: ライブアクティビティフィードにはサブスクリプションを使用してください
  4. 日付フィルタリング: 歴史的アクティビティ分析には日付範囲を使用してください
  5. カテゴリフィルタリング: 特定のアクティビティタイプでフィルタリングして集中したフィードを得る
  6. ユーザーフィルタリング: userIds を使用して特定のチームメンバーのアクティビティを追跡する

重要な注意事項

  • アクティビティは自動的に生成され、APIを介して手動で作成することはできません
  • アクティビティテキストはリッチ表示のためにHTMLフォーマットを使用します
  • text フィールドは html に代わって非推奨です
  • アクティビティは永久に保存され、完全な監査証跡を提供します
  • リアルタイムサブスクリプションにはWebSocket接続の認証が必要です

AIアシスタント

回答はAIを使用して生成されており、間違いが含まれる可能性があります。

どのようにお手伝いできますか?

Blueやこのドキュメントについて何でも聞いてください。

送信するにはEnterを押してください • 新しい行を作成するにはShift+Enterを押してください • ⌘Iで開く