492 lines
11 KiB
GraphQL
Executable File
492 lines
11 KiB
GraphQL
Executable File
enum DueDateNotificationDuration {
|
|
MINUTE
|
|
HOUR
|
|
DAY
|
|
WEEK
|
|
}
|
|
|
|
type TaskLabel {
|
|
id: ID!
|
|
projectLabel: ProjectLabel!
|
|
assignedDate: Time!
|
|
}
|
|
|
|
type ChecklistBadge {
|
|
complete: Int!
|
|
total: Int!
|
|
}
|
|
|
|
type CommentsBadge {
|
|
total: Int!
|
|
unread: Boolean!
|
|
}
|
|
|
|
type TaskBadges {
|
|
checklist: ChecklistBadge
|
|
comments: CommentsBadge
|
|
}
|
|
|
|
type DueDateNotification {
|
|
id: ID!
|
|
period: Int!
|
|
duration: DueDateNotificationDuration!
|
|
}
|
|
|
|
type DueDate {
|
|
at: Time
|
|
notifications: [DueDateNotification!]!
|
|
}
|
|
|
|
|
|
type Task {
|
|
id: ID!
|
|
shortId: String!
|
|
taskGroup: TaskGroup!
|
|
createdAt: Time!
|
|
name: String!
|
|
position: Float!
|
|
description: String
|
|
watched: Boolean!
|
|
dueDate: DueDate!
|
|
hasTime: Boolean!
|
|
complete: Boolean!
|
|
completedAt: Time
|
|
assigned: [Member!]!
|
|
labels: [TaskLabel!]!
|
|
checklists: [TaskChecklist!]!
|
|
badges: TaskBadges!
|
|
activity: [TaskActivity!]!
|
|
comments: [TaskComment!]!
|
|
}
|
|
|
|
type TaskActivityData {
|
|
name: String!
|
|
value: String!
|
|
}
|
|
|
|
enum ActivityType {
|
|
TASK_ADDED
|
|
TASK_MOVED
|
|
TASK_MARKED_COMPLETE
|
|
TASK_MARKED_INCOMPLETE
|
|
TASK_DUE_DATE_CHANGED
|
|
TASK_DUE_DATE_ADDED
|
|
TASK_DUE_DATE_REMOVED
|
|
TASK_CHECKLIST_CHANGED
|
|
TASK_CHECKLIST_ADDED
|
|
TASK_CHECKLIST_REMOVED
|
|
}
|
|
|
|
type TaskActivity {
|
|
id: ID!
|
|
type: ActivityType!
|
|
data: [TaskActivityData!]!
|
|
causedBy: CausedBy!
|
|
createdAt: Time!
|
|
}
|
|
|
|
type CausedBy {
|
|
id: ID!
|
|
fullName: String!
|
|
profileIcon: ProfileIcon
|
|
}
|
|
|
|
|
|
type CreatedBy {
|
|
id: ID!
|
|
fullName: String!
|
|
profileIcon: ProfileIcon!
|
|
}
|
|
|
|
type TaskComment {
|
|
id: ID!
|
|
createdAt: Time!
|
|
updatedAt: Time
|
|
message: String!
|
|
createdBy: CreatedBy!
|
|
pinned: Boolean!
|
|
}
|
|
|
|
type TaskChecklistItem {
|
|
id: ID!
|
|
name: String!
|
|
taskChecklistID: UUID!
|
|
complete: Boolean!
|
|
position: Float!
|
|
dueDate: Time!
|
|
}
|
|
|
|
type TaskChecklist {
|
|
id: ID!
|
|
name: String!
|
|
position: Float!
|
|
items: [TaskChecklistItem!]!
|
|
}
|
|
|
|
extend type Mutation {
|
|
createTaskChecklist(input: CreateTaskChecklist!):
|
|
TaskChecklist! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
deleteTaskChecklist(input: DeleteTaskChecklist!):
|
|
DeleteTaskChecklistPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST)
|
|
updateTaskChecklistName(input: UpdateTaskChecklistName!):
|
|
TaskChecklist! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST)
|
|
createTaskChecklistItem(input: CreateTaskChecklistItem!):
|
|
TaskChecklistItem! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST)
|
|
updateTaskChecklistLocation(input: UpdateTaskChecklistLocation!):
|
|
UpdateTaskChecklistLocationPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST)
|
|
|
|
updateTaskChecklistItemName(input: UpdateTaskChecklistItemName!):
|
|
TaskChecklistItem! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST_ITEM)
|
|
setTaskChecklistItemComplete(input: SetTaskChecklistItemComplete!):
|
|
TaskChecklistItem! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST_ITEM)
|
|
deleteTaskChecklistItem(input: DeleteTaskChecklistItem!):
|
|
DeleteTaskChecklistItemPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST_ITEM)
|
|
updateTaskChecklistItemLocation(input: UpdateTaskChecklistItemLocation!):
|
|
UpdateTaskChecklistItemLocationPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_CHECKLIST_ITEM)
|
|
|
|
}
|
|
|
|
input UpdateTaskChecklistItemLocation {
|
|
taskChecklistID: UUID!
|
|
taskChecklistItemID: UUID!
|
|
position: Float!
|
|
}
|
|
|
|
type UpdateTaskChecklistItemLocationPayload {
|
|
taskChecklistID: UUID!
|
|
prevChecklistID: UUID!
|
|
checklistItem: TaskChecklistItem!
|
|
}
|
|
|
|
input UpdateTaskChecklistLocation {
|
|
taskChecklistID: UUID!
|
|
position: Float!
|
|
}
|
|
|
|
type UpdateTaskChecklistLocationPayload {
|
|
checklist: TaskChecklist!
|
|
}
|
|
|
|
input CreateTaskChecklist {
|
|
taskID: UUID!
|
|
name: String!
|
|
position: Float!
|
|
}
|
|
|
|
type DeleteTaskChecklistItemPayload {
|
|
ok: Boolean!
|
|
taskChecklistItem: TaskChecklistItem!
|
|
}
|
|
|
|
input CreateTaskChecklistItem {
|
|
taskChecklistID: UUID!
|
|
name: String!
|
|
position: Float!
|
|
}
|
|
|
|
input SetTaskChecklistItemComplete {
|
|
taskChecklistItemID: UUID!
|
|
complete: Boolean!
|
|
}
|
|
|
|
input DeleteTaskChecklistItem {
|
|
taskChecklistItemID: UUID!
|
|
}
|
|
|
|
input UpdateTaskChecklistItemName {
|
|
taskChecklistItemID: UUID!
|
|
name: String!
|
|
}
|
|
|
|
input UpdateTaskChecklistName {
|
|
taskChecklistID: UUID!
|
|
name: String!
|
|
}
|
|
input DeleteTaskChecklist {
|
|
taskChecklistID: UUID!
|
|
}
|
|
type DeleteTaskChecklistPayload {
|
|
ok: Boolean!
|
|
taskChecklist: TaskChecklist!
|
|
}
|
|
|
|
extend type Mutation {
|
|
createTaskComment(input: CreateTaskComment):
|
|
CreateTaskCommentPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
deleteTaskComment(input: DeleteTaskComment):
|
|
DeleteTaskCommentPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
updateTaskComment(input: UpdateTaskComment):
|
|
UpdateTaskCommentPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
}
|
|
|
|
input CreateTaskComment {
|
|
taskID: UUID!
|
|
message: String!
|
|
}
|
|
|
|
type CreateTaskCommentPayload {
|
|
taskID: UUID!
|
|
comment: TaskComment!
|
|
}
|
|
|
|
input UpdateTaskComment {
|
|
commentID: UUID!
|
|
message: String!
|
|
}
|
|
|
|
type UpdateTaskCommentPayload {
|
|
taskID: UUID!
|
|
comment: TaskComment!
|
|
}
|
|
|
|
input DeleteTaskComment {
|
|
commentID: UUID!
|
|
}
|
|
|
|
type DeleteTaskCommentPayload {
|
|
taskID: UUID!
|
|
commentID: UUID!
|
|
}
|
|
|
|
extend type Mutation {
|
|
createTaskGroup(input: NewTaskGroup!):
|
|
TaskGroup! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT)
|
|
updateTaskGroupLocation(input: NewTaskGroupLocation!):
|
|
TaskGroup! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP)
|
|
updateTaskGroupName(input: UpdateTaskGroupName!):
|
|
TaskGroup! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP)
|
|
deleteTaskGroup(input: DeleteTaskGroupInput!):
|
|
DeleteTaskGroupPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP)
|
|
duplicateTaskGroup(input: DuplicateTaskGroup!):
|
|
DuplicateTaskGroupPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP)
|
|
sortTaskGroup(input: SortTaskGroup!):
|
|
SortTaskGroupPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP)
|
|
deleteTaskGroupTasks(input: DeleteTaskGroupTasks!):
|
|
DeleteTaskGroupTasksPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK_GROUP)
|
|
}
|
|
|
|
input DeleteTaskGroupTasks {
|
|
taskGroupID: UUID!
|
|
}
|
|
|
|
type DeleteTaskGroupTasksPayload {
|
|
taskGroupID: UUID!
|
|
tasks: [UUID!]!
|
|
}
|
|
|
|
input TaskPositionUpdate {
|
|
taskID: UUID!
|
|
position: Float!
|
|
}
|
|
|
|
type SortTaskGroupPayload {
|
|
taskGroupID: UUID!
|
|
tasks: [Task!]!
|
|
}
|
|
|
|
input SortTaskGroup {
|
|
taskGroupID: UUID!
|
|
tasks: [TaskPositionUpdate!]!
|
|
}
|
|
|
|
input DuplicateTaskGroup {
|
|
projectID: UUID!
|
|
taskGroupID: UUID!
|
|
name: String!
|
|
position: Float!
|
|
}
|
|
|
|
type DuplicateTaskGroupPayload {
|
|
taskGroup: TaskGroup!
|
|
}
|
|
|
|
input NewTaskGroupLocation {
|
|
taskGroupID: UUID!
|
|
position: Float!
|
|
}
|
|
|
|
input UpdateTaskGroupName {
|
|
taskGroupID: UUID!
|
|
name: String!
|
|
}
|
|
|
|
input DeleteTaskGroupInput {
|
|
taskGroupID: UUID!
|
|
}
|
|
|
|
type DeleteTaskGroupPayload {
|
|
ok: Boolean!
|
|
affectedRows: Int!
|
|
taskGroup: TaskGroup!
|
|
}
|
|
|
|
input NewTaskGroup {
|
|
projectID: UUID!
|
|
name: String!
|
|
position: Float!
|
|
}
|
|
|
|
extend type Mutation {
|
|
addTaskLabel(input: AddTaskLabelInput):
|
|
Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
removeTaskLabel(input: RemoveTaskLabelInput):
|
|
Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
toggleTaskLabel(input: ToggleTaskLabelInput!):
|
|
ToggleTaskLabelPayload! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
|
|
|
|
}
|
|
|
|
input AddTaskLabelInput {
|
|
taskID: UUID!
|
|
projectLabelID: UUID!
|
|
}
|
|
|
|
input RemoveTaskLabelInput {
|
|
taskID: UUID!
|
|
taskLabelID: UUID!
|
|
}
|
|
|
|
input ToggleTaskLabelInput {
|
|
taskID: UUID!
|
|
projectLabelID: UUID!
|
|
}
|
|
|
|
type ToggleTaskLabelPayload {
|
|
active: Boolean!
|
|
task: Task!
|
|
}
|
|
|
|
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!
|
|
}
|
|
|