enum RoleLevel { ADMIN MEMBER } enum ActionLevel { ORG TEAM PROJECT } enum ObjectType { ORG TEAM PROJECT TASK TASK_GROUP } directive @hasRole(roles: [RoleLevel!]!, level: ActionLevel!, type: ObjectType!) on FIELD_DEFINITION type Query { organizations: [Organization!]! users: [UserAccount!]! findUser(input: FindUser!): UserAccount! findProject(input: FindProject!): Project! findTask(input: FindTask!): Task! projects(input: ProjectsFilter): [Project!]! findTeam(input: FindTeam!): Team! teams: [Team!]! labelColors: [LabelColor!]! taskGroups: [TaskGroup!]! me: MePayload! } type Mutation type TeamRole { teamID: UUID! roleCode: RoleCode! } type ProjectRole { projectID: UUID! roleCode: RoleCode! } type MePayload { user: UserAccount! teamRoles: [TeamRole!]! projectRoles: [ProjectRole!]! } input ProjectsFilter { teamID: UUID } input FindUser { userId: String! } input FindProject { projectID: UUID! } input FindTask { taskID: UUID! } input FindTeam { teamID: UUID! }