scalar Time scalar UUID scalar Upload enum RoleCode { owner admin member observer } type Role { code: String! name: String! } type ProfileIcon { url: String initials: String bgColor: String } type OwnersList { projects: [UUID!]! teams: [UUID!]! } type OwnedList { teams: [Team!]! projects: [Project!]! } type MemberList { teams: [Team!]! projects: [Project!]! } type Organization { id: ID! name: String! } 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 directive @requiresUser on FIELD_DEFINITION type Query { organizations: [Organization!]! users: [UserAccount!]! invitedUsers: [InvitedUserAccount!]! findUser(input: FindUser!): UserAccount! findProject(input: FindProject!): 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 Subscription 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! organization: RoleCode teamRoles: [TeamRole!]! projectRoles: [ProjectRole!]! } input ProjectsFilter { teamID: UUID } input FindUser { userID: UUID! } input FindProject { projectID: UUID! } input FindTask { taskID: UUID! } input FindTeam { teamID: UUID! }