Получение, создание, обновление и удаление пользовательских ролей с детализированными разрешениями.


Пользовательские роли

Пользовательские роли в Blue позволяют вам определять точные наборы разрешений, адаптированные к потребностям вашей команды. Помимо стандартных уровней доступа (ВЛАДЕЛЕЦ, АДМИН, УЧАСТНИК и т.д.), пользовательские роли предоставляют детализированный контроль над тем, что пользователи могут видеть и делать в рамках проектов.

Простой пример - Список пользовательских ролей

Получите все пользовательские роли для проекта:

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 Нет Идентификатор проекта или его слаг (если не предоставлен, возвращает роли для всех доступных проектов)

Мутация: createProjectUserRole

Создайте новую пользовательскую роль с конкретными разрешениями.

Входные параметры

Параметр Тип Обязательный Описание
projectId String! ✅ Да Идентификатор проекта или его слаг
name String! ✅ Да Название роли
description String Нет Описание роли
Permission Flags
allowInviteOthers Boolean Нет Может приглашать новых пользователей (по умолчанию: ложь)
allowMarkRecordsAsDone Boolean Нет Может выполнять задачи (по умолчанию: ложь)
canDeleteRecords Boolean Нет Может удалять записи (по умолчанию: истина)
Feature Access
isActivityEnabled Boolean Нет Доступ к разделу "Активность" (по умолчанию: истина)
isChatEnabled Boolean Нет Доступ к чату (по умолчанию: истина)
isDocsEnabled Boolean Нет Доступ к документам (по умолчанию: истина)
isFilesEnabled Boolean Нет Доступ к файлам (по умолчанию: истина)
isFormsEnabled Boolean Нет Доступ к формам (по умолчанию: истина)
isWikiEnabled Boolean Нет Доступ к вики (по умолчанию: истина)
isRecordsEnabled Boolean Нет Доступ к записям (по умолчанию: истина)
isPeopleEnabled Boolean Нет Доступ к разделу "Люди" (по умолчанию: истина)
Visibility Settings
showOnlyAssignedTodos Boolean Нет Видеть только назначенные задачи (по умолчанию: ложь)
showOnlyMentionedComments Boolean Нет Видеть только упомянутые комментарии (по умолчанию: ложь)

Мутация: updateProjectUserRole

Обновите существующую пользовательскую роль.

Входные параметры

То же самое, что и createProjectUserRole, плюс:

Параметр Тип Обязательный Описание
roleId String! ✅ Да Идентификатор роли для обновления

Мутация: deleteProjectUserRole

Удалите пользовательскую роль.

Входные параметры

Параметр Тип Обязательный Описание
roleId String! ✅ Да Идентификатор роли для удаления
projectId String! ✅ Да Идентификатор проекта или его слаг

Поля ответа

Объект 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"
    }
  }]
}

Важные заметки

  • Стандартные разрешения: При создании ролей неуказанные булевы разрешения по умолчанию равны ложь, за исключением canDeleteRecords, которое по умолчанию равно истина
  • Назначение ролей: Назначайте пользовательские роли, устанавливая accessLevel: MEMBER и предоставляя roleId в мутации inviteUser
  • Иерархия: Пользовательские роли рассматриваются как роли уровня УЧАСТНИК для целей иерархии
  • Лимиты ролей: В каждом проекте может быть максимум 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
}

Связанные операции

AI Ассистент

Ответы генерируются с использованием ИИ и могут содержать ошибки.

Как я могу вам помочь?

Спросите меня о чем угодно, связанном с Blue или этой документацией.

Введите для отправки • Shift+Enter для новой строки • ⌘I для открытия