extend type Query { findTask(input: FindTask!): Task! } input FindTask { taskID: UUID taskShortID: String } extend type Mutation { createTask(input: NewTask!): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP) deleteTask(input: DeleteTaskInput!): DeleteTaskPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) updateTaskDescription(input: UpdateTaskDescriptionInput!): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) updateTaskLocation(input: NewTaskLocation!): UpdateTaskLocationPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) updateTaskName(input: UpdateTaskName!): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) setTaskComplete(input: SetTaskComplete!): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) updateTaskDueDate(input: UpdateTaskDueDate!): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) toggleTaskWatch(input: ToggleTaskWatch!): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) assignTask(input: AssignTaskInput): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) unassignTask(input: UnassignTaskInput): Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK) createTaskDueDateNotifications(input: [CreateTaskDueDateNotification!]!): CreateTaskDueDateNotificationsResult! updateTaskDueDateNotifications(input: [UpdateTaskDueDateNotification!]!): UpdateTaskDueDateNotificationsResult! deleteTaskDueDateNotifications(input: [DeleteTaskDueDateNotification!]!): DeleteTaskDueDateNotificationsResult! } input DeleteTaskDueDateNotification { id: UUID! } type DeleteTaskDueDateNotificationsResult { notifications: [UUID!]! } input UpdateTaskDueDateNotification { id: UUID! period: Int! duration: DueDateNotificationDuration! } type UpdateTaskDueDateNotificationsResult { notifications: [DueDateNotification!]! } input CreateTaskDueDateNotification { taskID: UUID! period: Int! duration: DueDateNotificationDuration! } type CreateTaskDueDateNotificationsResult { notifications: [DueDateNotification!]! } input ToggleTaskWatch { taskID: UUID! } input NewTask { taskGroupID: UUID! name: String! position: Float! assigned: [UUID!] } input AssignTaskInput { taskID: UUID! userID: UUID! } input UnassignTaskInput { taskID: UUID! userID: UUID! } input UpdateTaskDescriptionInput { taskID: UUID! description: String! } type UpdateTaskLocationPayload { previousTaskGroupID: UUID! task: Task! } input UpdateTaskDueDate { taskID: UUID! hasTime: Boolean! dueDate: Time } input SetTaskComplete { taskID: UUID! complete: Boolean! } input NewTaskLocation { taskID: UUID! taskGroupID: UUID! position: Float! } input DeleteTaskInput { taskID: UUID! } type DeleteTaskPayload { taskID: UUID! } input UpdateTaskName { taskID: UUID! name: String! }