enum ShareStatus { INVITED JOINED } enum RoleLevel { ADMIN MEMBER } enum ActionLevel { ORG TEAM PROJECT } enum ObjectType { ORG TEAM PROJECT TASK TASK_GROUP TASK_CHECKLIST TASK_CHECKLIST_ITEM } directive @hasRole(roles: [RoleLevel!]!, level: ActionLevel!, type: ObjectType!) on FIELD_DEFINITION type Query { organizations: [Organization!]! users: [UserAccount!]! invitedUsers: [InvitedUserAccount!]! findUser(input: FindUser!): UserAccount! findProject(input: FindProject!): Project! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT) findTask(input: FindTask!): Task! projects(input: ProjectsFilter): [Project!]! findTeam(input: FindTeam!): Team! teams: [Team!]! myTasks(input: MyTasks!): MyTasksPayload! labelColors: [LabelColor!]! taskGroups: [TaskGroup!]! me: MePayload! } type Mutation enum MyTasksStatus { ALL INCOMPLETE COMPLETE_ALL COMPLETE_TODAY COMPLETE_YESTERDAY COMPLETE_ONE_WEEK COMPLETE_TWO_WEEK COMPLETE_THREE_WEEK } enum MyTasksSort { NONE PROJECT DUE_DATE } input MyTasks { status: MyTasksStatus! sort: MyTasksSort! } type ProjectTaskMapping { projectID: UUID! taskID: UUID! } type MyTasksPayload { tasks: [Task!]! projects: [ProjectTaskMapping!]! } 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: UUID! } input FindProject { projectID: UUID! } input FindTask { taskID: UUID! } input FindTeam { teamID: UUID! }