Recupere, crie, atualize e exclua funções personalizadas de usuário com permissões granulares.
Funções Personalizadas
As funções personalizadas no Blue permitem que você defina conjuntos de permissões precisos adaptados às necessidades da sua equipe. Além dos níveis de acesso padrão (PROPRIETÁRIO, ADMINISTRADOR, MEMBRO, etc.), as funções personalizadas fornecem controle granular sobre o que os usuários podem ver e fazer dentro dos projetos.
Exemplo Básico - Listar Funções Personalizadas
Recupere todas as funções personalizadas para um projeto:
query GetProjectRoles {
projectUserRoles(filter: { projectId: "web-redesign" }) {
id
name
description
allowInviteOthers
canDeleteRecords
}
}
Exemplo Avançado - Criar Função Personalizada
Crie uma função de contratante com permissões específicas:
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
}
}
Operações Disponíveis
Consulta: projectUserRoles
Recupere todas as funções personalizadas para um projeto.
Parâmetros de Entrada
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
filter.projectId |
String | Não | ID ou slug do projeto (se não fornecido, retorna funções para todos os projetos acessíveis) |
Mutação: createProjectUserRole
Crie uma nova função personalizada com permissões específicas.
Parâmetros de Entrada
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
projectId |
String! | ✅ Sim | ID ou slug do projeto |
name |
String! | ✅ Sim | Nome da função |
description |
String | Não | Descrição da função |
Permission Flags | |||
allowInviteOthers |
Boolean | Não | Pode convidar novos usuários (padrão: falso) |
allowMarkRecordsAsDone |
Boolean | Não | Pode completar tarefas (padrão: falso) |
canDeleteRecords |
Boolean | Não | Pode excluir registros (padrão: verdadeiro) |
Feature Access | |||
isActivityEnabled |
Boolean | Não | Acesso à seção de Atividade (padrão: verdadeiro) |
isChatEnabled |
Boolean | Não | Acesso ao Chat (padrão: verdadeiro) |
isDocsEnabled |
Boolean | Não | Acesso a Docs (padrão: verdadeiro) |
isFilesEnabled |
Boolean | Não | Acesso a Arquivos (padrão: verdadeiro) |
isFormsEnabled |
Boolean | Não | Acesso a Formulários (padrão: verdadeiro) |
isWikiEnabled |
Boolean | Não | Acesso ao Wiki (padrão: verdadeiro) |
isRecordsEnabled |
Boolean | Não | Acesso a Registros (padrão: verdadeiro) |
isPeopleEnabled |
Boolean | Não | Acesso à seção de Pessoas (padrão: verdadeiro) |
Visibility Settings | |||
showOnlyAssignedTodos |
Boolean | Não | Somente ver tarefas atribuídas (padrão: falso) |
showOnlyMentionedComments |
Boolean | Não | Somente ver comentários mencionados (padrão: falso) |
Mutação: updateProjectUserRole
Atualize uma função personalizada existente.
Parâmetros de Entrada
Mesmos que createProjectUserRole
, além de:
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
roleId |
String! | ✅ Sim | ID da função a ser atualizada |
Mutação: deleteProjectUserRole
Exclua uma função personalizada.
Parâmetros de Entrada
Parâmetro | Tipo | Obrigatório | Descrição |
---|---|---|---|
roleId |
String! | ✅ Sim | ID da função a ser excluída |
projectId |
String! | ✅ Sim | ID ou slug do projeto |
Campos de Resposta
Objeto ProjectUserRole
Campo | Tipo | Descrição |
---|---|---|
id |
String! | Identificador único da função |
name |
String! | Nome da função |
description |
String | Descrição da função |
createdAt |
DateTime! | Timestamp de criação |
updatedAt |
DateTime! | Timestamp da última atualização |
Permissions | ||
allowInviteOthers |
Boolean! | Pode convidar usuários |
allowMarkRecordsAsDone |
Boolean! | Pode completar tarefas |
canDeleteRecords |
Boolean! | Pode excluir registros |
Feature Flags | ||
isActivityEnabled |
Boolean! | Acesso à seção de Atividade |
isChatEnabled |
Boolean! | Acesso ao Chat |
isDocsEnabled |
Boolean! | Acesso a Docs |
isFilesEnabled |
Boolean! | Acesso a Arquivos |
isFormsEnabled |
Boolean! | Acesso a Formulários |
isWikiEnabled |
Boolean! | Acesso ao Wiki |
isRecordsEnabled |
Boolean! | Acesso a Registros |
isPeopleEnabled |
Boolean! | Acesso à seção de Pessoas |
Visibility | ||
showOnlyAssignedTodos |
Boolean! | Filtro de visibilidade de tarefas |
showOnlyMentionedComments |
Boolean! | Filtro de visibilidade de comentários |
Permissões Necessárias
Operação | Permissão Necessária |
---|---|
projectUserRoles |
Any project member |
createProjectUserRole |
Project OWNER or ADMIN |
updateProjectUserRole |
Project OWNER or ADMIN |
deleteProjectUserRole |
Project OWNER or ADMIN |
Respostas de Erro
Permissões Insuficientes
{
"errors": [{
"message": "You don't have permission to manage custom roles",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Função Não Encontrada
{
"errors": [{
"message": "Custom role not found",
"extensions": {
"code": "PROJECT_USER_ROLE_NOT_FOUND"
}
}]
}
Limite de Funções Atingido
{
"errors": [{
"message": "Project user role limit reached.",
"extensions": {
"code": "PROJECT_USER_ROLE_LIMIT"
}
}]
}
Notas Importantes
- Permissões Padrão: Ao criar funções, permissões booleanas não especificadas têm como padrão o valor falso, exceto para
canDeleteRecords
, que tem como padrão o valor verdadeiro. - Atribuição de Funções: Atribua funções personalizadas definindo
accessLevel: MEMBER
e fornecendoroleId
na mutaçãoinviteUser
. - Hierarquia: Funções personalizadas são tratadas como nível de MEMBRO para fins de hierarquia.
- Limites de Funções: Cada projeto pode ter um máximo de 20 funções personalizadas.
- Acesso a Recursos: As flags de recursos controlam o acesso a seções inteiras da aplicação.
Casos de Uso
Função de Contratante
{
name: "Contractor",
allowInviteOthers: false,
canDeleteRecords: false,
showOnlyAssignedTodos: true,
isActivityEnabled: true,
isChatEnabled: false,
isPeopleEnabled: false
}
Líder de Departamento
{
name: "Department Lead",
allowInviteOthers: true,
allowMarkRecordsAsDone: true,
canDeleteRecords: true,
isActivityEnabled: true,
isWikiEnabled: true,
isPeopleEnabled: true
}
Observador Somente Leitura
{
name: "Observer",
allowMarkRecordsAsDone: false,
canDeleteRecords: false,
allowInviteOthers: false,
showOnlyMentionedComments: true,
isFormsEnabled: false
}
Operações Relacionadas
- Convidar Usuário - Atribuir funções personalizadas a usuários
- Listar Usuários - Visualizar usuários e suas funções
- Remover Usuário - Remover usuários de projetos