extend type Mutation { createTask(input: NewTask!): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) deleteTask(input: DeleteTaskInput!): DeleteTaskPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) updateTaskDescription(input: UpdateTaskDescriptionInput!): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) updateTaskLocation(input: NewTaskLocation!): UpdateTaskLocationPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) updateTaskName(input: UpdateTaskName!): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) setTaskComplete(input: SetTaskComplete!): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) updateTaskDueDate(input: UpdateTaskDueDate!): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT) assignTask(input: AssignTaskInput): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: TASK) unassignTask(input: UnassignTaskInput): Task! @hasRole(roles: [ADMIN], level: PROJECT, type: TASK) } input NewTask { taskGroupID: String! name: String! position: Float! } 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! dueDate: Time } input SetTaskComplete { taskID: UUID! complete: Boolean! } input NewTaskLocation { taskID: UUID! taskGroupID: UUID! position: Float! } input DeleteTaskInput { taskID: String! } type DeleteTaskPayload { taskID: String! } input UpdateTaskName { taskID: String! name: String! }