Blue APIを使用してレコードからユーザーを割り当て、追加、または削除します
レコードのアサイン先を管理する
Blue APIは、レコードのアサイン先を管理するための3つの操作を提供します:アサイン先の設定(スマート置換)、アサイン先の追加、アサイン先の削除。これらの操作は、アクティビティの追跡、通知、Webhook、およびリアルタイムの更新を自動的に処理します。
レコードのアサイン先を設定する(スマートアサインメント)
現在のアサイン先を新しいリストで置き換えます。システムは、必要な変更をインテリジェントに計算し、新しいリストに含まれないユーザーを削除し、新しいユーザーを追加します。
mutation SetRecordAssignees {
setTodoAssignees(input: {
todoId: "record_abc123"
assigneeIds: ["user_123", "user_456", "user_789"]
}) {
success
operationId
}
}
レコードのアサイン先を追加する
既存のアサイン先を削除することなく、新しいアサイン先を追加します。すでにアサインされていないユーザーのみが追加されます。
mutation AddRecordAssignees {
addTodoAssignees(input: {
todoId: "record_abc123"
assigneeIds: ["user_999", "user_111"]
}) {
success
operationId
}
}
レコードのアサイン先を削除する
特定のアサイン先をレコードから削除します。
mutation RemoveRecordAssignees {
removeTodoAssignees(input: {
todoId: "record_abc123"
assigneeIds: ["user_456"]
}) {
success
operationId
}
}
入力パラメータ
SetTodoAssigneesInput
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
todoId |
String! | ✅ はい | ユーザーを割り当てるレコードのID |
assigneeIds |
[String!]! | ✅ はい | アサインするユーザーIDの配列(すべての現在のアサイン先を置き換えます) |
AddTodoAssigneesInput
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
todoId |
String! | ✅ はい | ユーザーを割り当てるレコードのID |
assigneeIds |
[String!]! | ✅ はい | アサイン先として追加するユーザーIDの配列 |
RemoveTodoAssigneesInput
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
todoId |
String! | ✅ はい | アサイン先を削除するレコードのID |
assigneeIds |
[String!]! | ✅ はい | アサイン先から削除するユーザーIDの配列 |
レスポンスフィールド
フィールド | タイプ | 説明 |
---|---|---|
success |
Boolean! | 操作が成功裏に完了したかどうか |
operationId |
String | この操作を追跡するための一意の識別子 |
必要な権限
アサイン先の設定/削除
役割 | アサイン/削除可能 |
---|---|
OWNER |
✅ はい |
ADMIN |
✅ はい |
MEMBER |
✅ はい |
CLIENT |
✅ はい |
VIEW_ONLY |
❌ いいえ |
COMMENT_ONLY |
❌ いいえ |
アサイン先の追加
役割 | アサイン先を追加できる |
---|---|
OWNER |
✅ はい |
ADMIN |
✅ はい |
MEMBER |
✅ はい |
CLIENT |
✅ はい |
VIEW_ONLY |
✅ はい |
COMMENT_ONLY |
✅ はい |
エラー応答
レコードが見つかりません
{
"errors": [{
"message": "Todo was not found.",
"extensions": {
"code": "TODO_NOT_FOUND"
}
}]
}
権限が不足しています
{
"errors": [{
"message": "You don't have permission to modify this record",
"extensions": {
"code": "FORBIDDEN"
}
}]
}
無効な入力
{
"errors": [{
"message": "Variable '$input' got invalid value; Expected non-nullable type 'String!' not to be null.",
"extensions": {
"code": "GRAPHQL_VALIDATION_FAILED"
}
}]
}
操作の比較
機能 | アサイン先の設定 | アサイン先の追加 | アサイン先の削除 |
---|---|---|---|
Logic | Smart replacement | Incremental addition | Selective removal |
Activity Tracking | ✅ はい | ❌ いいえ | ❌ いいえ |
通知 | ✅ はい | ❌ いいえ | ❌ いいえ |
Webhooks | ✅ はい | ❌ いいえ | ❌ いいえ |
Automations | ✅ はい | ❌ いいえ | ❌ いいえ |
Permission Level | Stricter | More permissive | Stricter |
ビジネスロジック
スマートアサインメント(setTodoAssignees)
setTodoAssignees
を使用すると、システムは:
- リストの比較:現在のアサイン先と新しいアサイン先リストを分析します
- 変更の計算:削除、保持、追加するユーザーを決定します
- ユーザーの削除:新しいリストに含まれないユーザーのアサインを解除します
- ユーザーの追加:以前にアサインされていなかった新しいリストのユーザーをアサインします
- アクティビティの追跡:各変更のためのアクティビティログエントリを作成します
- 通知の送信:新しくアサインされたユーザーに通知します
- Webhookのトリガー:アサイン先の追加/削除Webhookを発火します
- チャートの更新:分析チャートを更新のためにマークします
- リアルタイムの更新:接続されたクライアントに更新を公開します
シンプルな操作(追加/削除)
addTodoAssignees
およびremoveTodoAssignees
操作は、setTodoAssignees
の包括的な追跡および通知機能なしで基本的な機能を提供します。
重要な注意事項
- プロジェクトメンバーシップ:アサイン先は、レコードを含むプロジェクトのメンバーである必要があります
- アサイン制限なし:レコードごとのアサイン先の最大数はありません
- 自己アサイン:ユーザーは適切な権限があれば自分自身をアサインできます
- 空の配列:空の
assigneeIds
配列をsetTodoAssignees
に提供すると、すべてのアサイン先が削除されます - 重複防止:システムは自動的に重複アサインを防ぎます
- データベースの効率性:スケーラブルな多対多関係のために結合テーブル(
TodoUser
)を使用します - リアルタイムの更新:すべての接続されたクライアントは、アサインが変更されると即座に更新を受け取ります
利用可能なアサイン先を取得する
プロジェクト内のレコードに割り当て可能なユーザーのリストを取得するには:
query GetAssignees {
assignees(projectId: "project_abc123") {
id
name
email
avatar
}
}
このクエリは、レコードに割り当て可能なすべてのプロジェクトメンバーを返します。