詳細な権限を持つカスタムユーザーロールを取得、作成、更新、削除します。
カスタムロール
Blueのカスタムロールを使用すると、チームのニーズに合わせた正確な権限セットを定義できます。標準のアクセスレベル(OWNER、ADMIN、MEMBERなど)を超えて、カスタムロールはユーザーがプロジェクト内で何を見たり、何をしたりできるかを細かく制御します。
基本例 - カスタムロールのリスト
プロジェクトのすべてのカスタムロールを取得します:
query GetProjectRoles {
projectUserRoles(filter: { projectId: "web-redesign" }) {
id
name
description
allowInviteOthers
canDeleteRecords
}
}
高度な例 - カスタムロールの作成
特定の権限を持つ契約者ロールを作成します:
mutation CreateContractorRole {
createProjectUserRole(
input: {
projectId: "web-redesign"
name: "External Contractor"
description: "Limited access for external contractors"
allowInviteOthers: false
allowMarkRecordsAsDone: true
canDeleteRecords: false
showOnlyAssignedTodos: true
isActivityEnabled: true
isFormsEnabled: false
isWikiEnabled: true
isChatEnabled: false
isDocsEnabled: true
isFilesEnabled: true
isRecordsEnabled: true
isPeopleEnabled: false
}
) {
id
name
}
}
利用可能な操作
クエリ: projectUserRoles
プロジェクトのすべてのカスタムロールを取得します。
入力パラメータ
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
filter.projectId |
String | いいえ | プロジェクトIDまたはスラグ(指定されていない場合、アクセス可能なすべてのプロジェクトのロールを返します) |
ミューテーション: createProjectUserRole
特定の権限を持つ新しいカスタムロールを作成します。
入力パラメータ
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
projectId |
String! | ✅ はい | プロジェクトIDまたはスラグ |
name |
String! | ✅ はい | ロール名 |
description |
String | いいえ | ロールの説明 |
Permission Flags | |||
allowInviteOthers |
Boolean | いいえ | 新しいユーザーを招待できる(デフォルト: false) |
allowMarkRecordsAsDone |
Boolean | いいえ | タスクを完了できる(デフォルト: false) |
canDeleteRecords |
Boolean | いいえ | レコードを削除できる(デフォルト: true) |
Feature Access | |||
isActivityEnabled |
Boolean | いいえ | アクティビティセクションへのアクセス(デフォルト: true) |
isChatEnabled |
Boolean | いいえ | チャットへのアクセス(デフォルト: true) |
isDocsEnabled |
Boolean | いいえ | ドキュメントへのアクセス(デフォルト: true) |
isFilesEnabled |
Boolean | いいえ | ファイルへのアクセス(デフォルト: true) |
isFormsEnabled |
Boolean | いいえ | フォームへのアクセス(デフォルト: true) |
isWikiEnabled |
Boolean | いいえ | ウィキへのアクセス(デフォルト: true) |
isRecordsEnabled |
Boolean | いいえ | レコードへのアクセス(デフォルト: true) |
isPeopleEnabled |
Boolean | いいえ | 人々セクションへのアクセス(デフォルト: true) |
Visibility Settings | |||
showOnlyAssignedTodos |
Boolean | いいえ | 割り当てられたタスクのみを表示(デフォルト: false) |
showOnlyMentionedComments |
Boolean | いいえ | 言及されたコメントのみを表示(デフォルト: false) |
ミューテーション: updateProjectUserRole
既存のカスタムロールを更新します。
入力パラメータ
createProjectUserRole
と同じ、さらに:
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
roleId |
String! | ✅ はい | 更新するロールのID |
ミューテーション: deleteProjectUserRole
カスタムロールを削除します。
入力パラメータ
パラメータ | タイプ | 必須 | 説明 |
---|---|---|---|
roleId |
String! | ✅ はい | 削除するロールのID |
projectId |
String! | ✅ はい | プロジェクトIDまたはスラグ |
レスポンスフィールド
ProjectUserRoleオブジェクト
フィールド | タイプ | 説明 |
---|---|---|
id |
String! | ユニークなロール識別子 |
name |
String! | ロール名 |
description |
String | ロールの説明 |
createdAt |
DateTime! | 作成タイムスタンプ |
updatedAt |
DateTime! | 最終更新タイムスタンプ |
Permissions | ||
allowInviteOthers |
Boolean! | ユーザーを招待できる |
allowMarkRecordsAsDone |
Boolean! | タスクを完了できる |
canDeleteRecords |
Boolean! | レコードを削除できる |
Feature Flags | ||
isActivityEnabled |
Boolean! | アクティビティセクションへのアクセス |
isChatEnabled |
Boolean! | チャットへのアクセス |
isDocsEnabled |
Boolean! | ドキュメントへのアクセス |
isFilesEnabled |
Boolean! | ファイルへのアクセス |
isFormsEnabled |
Boolean! | フォームへのアクセス |
isWikiEnabled |
Boolean! | ウィキへのアクセス |
isRecordsEnabled |
Boolean! | レコードへのアクセス |
isPeopleEnabled |
Boolean! | 人々セクションへのアクセス |
Visibility | ||
showOnlyAssignedTodos |
Boolean! | タスクの可視性フィルター |
showOnlyMentionedComments |
Boolean! | コメントの可視性フィルター |
必要な権限
操作 | 必要な権限 |
---|---|
projectUserRoles |
Any project member |
createProjectUserRole |
Project OWNER or ADMIN |
updateProjectUserRole |
Project OWNER or ADMIN |
deleteProjectUserRole |
Project OWNER or ADMIN |
エラーレスポンス
権限不足
{
"errors": [{
"message": "You don't have permission to manage custom roles",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
ロールが見つかりません
{
"errors": [{
"message": "Custom role not found",
"extensions": {
"code": "PROJECT_USER_ROLE_NOT_FOUND"
}
}]
}
ロールの制限に達しました
{
"errors": [{
"message": "Project user role limit reached.",
"extensions": {
"code": "PROJECT_USER_ROLE_LIMIT"
}
}]
}
重要な注意事項
- デフォルトの権限: ロールを作成する際、指定されていないブール権限はデフォルトでfalseになります。ただし、
canDeleteRecords
はデフォルトでtrueです。 - ロールの割り当て:
accessLevel: MEMBER
を設定し、roleId
をinviteUser
ミューテーションで提供することでカスタムロールを割り当てます。 - 階層: カスタムロールは階層目的のためにMEMBERレベルとして扱われます。
- ロールの制限: 各プロジェクトには最大20のカスタムロールを持つことができます。
- 機能アクセス: 機能フラグはアプリケーションの全セクションへのアクセスを制御します。
ユースケース
契約者ロール
{
name: "Contractor",
allowInviteOthers: false,
canDeleteRecords: false,
showOnlyAssignedTodos: true,
isActivityEnabled: true,
isChatEnabled: false,
isPeopleEnabled: false
}
部門リーダー
{
name: "Department Lead",
allowInviteOthers: true,
allowMarkRecordsAsDone: true,
canDeleteRecords: true,
isActivityEnabled: true,
isWikiEnabled: true,
isPeopleEnabled: true
}
読み取り専用オブザーバー
{
name: "Observer",
allowMarkRecordsAsDone: false,
canDeleteRecords: false,
allowInviteOthers: false,
showOnlyMentionedComments: true,
isFormsEnabled: false
}