taskcafe/internal/graph/schema.graphqls

1003 lines
19 KiB
GraphQL
Raw Normal View History

2020-04-10 04:40:22 +02:00
scalar Time
scalar UUID
2020-06-13 00:21:58 +02:00
scalar Upload
2020-04-10 04:40:22 +02:00
enum RoleCode {
owner
admin
member
observer
}
2020-04-21 01:04:27 +02:00
type ProjectLabel {
2020-05-27 02:53:31 +02:00
id: ID!
2020-04-21 01:04:27 +02:00
createdDate: Time!
2020-05-27 23:18:50 +02:00
labelColor: LabelColor!
2020-04-21 01:04:27 +02:00
name: String
}
2020-05-27 23:18:50 +02:00
type LabelColor {
id: ID!
name: String!
position: Float!
colorHex: String!
}
2020-04-20 05:02:55 +02:00
type TaskLabel {
2020-05-27 02:53:31 +02:00
id: ID!
2020-05-31 06:11:19 +02:00
projectLabel: ProjectLabel!
2020-04-21 01:04:27 +02:00
assignedDate: Time!
2020-04-20 05:02:55 +02:00
}
type ProfileIcon {
url: String
initials: String
2020-04-21 01:04:27 +02:00
bgColor: String
2020-04-20 05:02:55 +02:00
}
2020-07-12 09:06:11 +02:00
type OwnersList {
projects: [UUID!]!
teams: [UUID!]!
}
type Member {
2020-05-27 02:53:31 +02:00
id: ID!
role: Role!
2020-06-13 00:21:58 +02:00
fullName: String!
username: String!
2020-04-20 05:02:55 +02:00
profileIcon: ProfileIcon!
owned: OwnedList!
member: MemberList!
2020-04-20 05:02:55 +02:00
}
type Role {
code: String!
name: String!
}
type OwnedList {
teams: [Team!]!
projects: [Project!]!
}
type MemberList {
teams: [Team!]!
projects: [Project!]!
}
2020-04-10 04:40:22 +02:00
type UserAccount {
2020-05-27 02:53:31 +02:00
id: ID!
2020-04-10 04:40:22 +02:00
email: String!
createdAt: Time!
2020-06-13 00:21:58 +02:00
fullName: String!
initials: String!
2020-09-11 20:54:43 +02:00
bio: String!
role: Role!
2020-04-10 04:40:22 +02:00
username: String!
2020-04-20 05:02:55 +02:00
profileIcon: ProfileIcon!
owned: OwnedList!
member: MemberList!
2020-04-10 04:40:22 +02:00
}
type InvitedUserAccount {
id: ID!
email: String!
invitedOn: Time!
member: MemberList!
}
2020-04-10 04:40:22 +02:00
type Team {
2020-05-27 02:53:31 +02:00
id: ID!
2020-04-10 04:40:22 +02:00
createdAt: Time!
name: String!
permission: TeamPermission!
members: [Member!]!
2020-04-10 04:40:22 +02:00
}
type InvitedMember {
email: String!
invitedOn: Time!
}
type TeamPermission {
team: RoleCode!
org: RoleCode!
}
type ProjectPermission {
team: RoleCode!
project: RoleCode!
org: RoleCode!
}
2020-04-10 04:40:22 +02:00
type Project {
2020-05-27 02:53:31 +02:00
id: ID!
2020-04-10 04:40:22 +02:00
createdAt: Time!
name: String!
team: Team
2020-04-10 04:40:22 +02:00
taskGroups: [TaskGroup!]!
members: [Member!]!
invitedMembers: [InvitedMember!]!
2021-05-01 05:55:37 +02:00
publicOn: Time
permission: ProjectPermission!
2020-04-21 01:04:27 +02:00
labels: [ProjectLabel!]!
2020-04-10 04:40:22 +02:00
}
type TaskGroup {
2020-05-27 02:53:31 +02:00
id: ID!
2020-04-10 04:40:22 +02:00
projectID: String!
createdAt: Time!
name: String!
position: Float!
tasks: [Task!]!
}
2020-06-19 01:12:15 +02:00
type ChecklistBadge {
complete: Int!
total: Int!
}
2021-10-25 22:14:24 +02:00
type CommentsBadge {
total: Int!
unread: Boolean!
}
2020-06-19 01:12:15 +02:00
type TaskBadges {
checklist: ChecklistBadge
2021-10-25 22:14:24 +02:00
comments: CommentsBadge
2020-06-19 01:12:15 +02:00
}
2020-12-19 03:34:35 +01:00
type CausedBy {
id: ID!
fullName: String!
profileIcon: ProfileIcon
}
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!
}
2020-04-10 04:40:22 +02:00
type Task {
2020-05-27 02:53:31 +02:00
id: ID!
taskGroup: TaskGroup!
2020-04-10 04:40:22 +02:00
createdAt: Time!
name: String!
position: Float!
2020-04-20 05:02:55 +02:00
description: String
2020-06-16 00:36:59 +02:00
dueDate: Time
2021-01-01 21:51:40 +01:00
hasTime: Boolean!
2020-06-19 01:12:15 +02:00
complete: Boolean!
completedAt: Time
assigned: [Member!]!
2020-04-20 05:02:55 +02:00
labels: [TaskLabel!]!
2020-06-19 01:12:15 +02:00
checklists: [TaskChecklist!]!
badges: TaskBadges!
2020-12-19 03:34:35 +01:00
activity: [TaskActivity!]!
comments: [TaskComment!]!
}
type CreatedBy {
id: ID!
fullName: String!
profileIcon: ProfileIcon!
}
type TaskComment {
id: ID!
createdAt: Time!
updatedAt: Time
message: String!
createdBy: CreatedBy!
pinned: Boolean!
2020-04-10 04:40:22 +02:00
}
type Organization {
id: ID!
name: String!
2020-04-20 05:02:55 +02:00
}
type TaskChecklistItem {
id: ID!
name: String!
taskChecklistID: UUID!
complete: Boolean!
position: Float!
dueDate: Time!
}
type TaskChecklist {
id: ID!
name: String!
position: Float!
items: [TaskChecklistItem!]!
}
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
2021-05-01 05:55:37 +02:00
directive @requiresUser on FIELD_DEFINITION
2020-04-10 04:40:22 +02:00
type Query {
organizations: [Organization!]!
2020-04-10 04:40:22 +02:00
users: [UserAccount!]!
invitedUsers: [InvitedUserAccount!]!
2020-04-10 04:40:22 +02:00
findUser(input: FindUser!): UserAccount!
findProject(input: FindProject!):
2021-05-01 05:55:37 +02:00
Project!
2020-04-20 05:02:55 +02:00
findTask(input: FindTask!): Task!
2020-04-10 04:40:22 +02:00
projects(input: ProjectsFilter): [Project!]!
findTeam(input: FindTeam!): Team!
teams: [Team!]!
2020-12-31 03:56:59 +01:00
myTasks(input: MyTasks!): MyTasksPayload!
2020-05-27 23:18:50 +02:00
labelColors: [LabelColor!]!
2020-04-10 04:40:22 +02:00
taskGroups: [TaskGroup!]!
2021-05-01 05:55:37 +02:00
me: MePayload
2020-04-10 04:40:22 +02:00
}
2020-12-31 03:56:59 +01:00
type Mutation
2020-12-31 03:56:59 +01:00
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!
2020-04-10 04:40:22 +02:00
}
input FindProject {
projectID: UUID!
2020-04-10 04:40:22 +02:00
}
input FindTask {
taskID: UUID!
2020-04-10 04:40:22 +02:00
}
input FindTeam {
2020-04-20 05:02:55 +02:00
teamID: UUID!
2020-04-10 04:40:22 +02:00
}
extend type Query {
notifications: [Notification!]!
}
enum EntityType {
TASK
}
enum ActorType {
USER
}
enum ActionType {
TASK_MEMBER_ADDED
}
type NotificationActor {
id: UUID!
type: ActorType!
name: String!
}
type NotificationEntity {
id: UUID!
type: EntityType!
name: String!
}
type Notification {
id: ID!
entity: NotificationEntity!
actionType: ActionType!
actor: NotificationActor!
read: Boolean!
createdAt: Time!
}
extend type Mutation {
createProject(input: NewProject!): Project! @hasRole(roles: [ADMIN], level: TEAM, type: TEAM)
deleteProject(input: DeleteProject!):
DeleteProjectPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
updateProjectName(input: UpdateProjectName):
Project! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
2021-05-01 05:55:37 +02:00
toggleProjectVisibility(input: ToggleProjectVisibility!): ToggleProjectVisibilityPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
}
input ToggleProjectVisibility {
projectID: UUID!
isPublic: Boolean!
}
type ToggleProjectVisibilityPayload {
project: Project!
2020-04-10 04:40:22 +02:00
}
input NewProject {
teamID: UUID
2020-04-10 04:40:22 +02:00
name: String!
}
input UpdateProjectName {
projectID: UUID!
name: String!
2020-04-10 04:40:22 +02:00
}
input DeleteProject {
projectID: UUID!
2020-04-10 04:40:22 +02:00
}
type DeleteProjectPayload {
ok: Boolean!
project: Project!
2020-04-10 04:40:22 +02:00
}
extend type Mutation {
createProjectLabel(input: NewProjectLabel!):
ProjectLabel! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT)
deleteProjectLabel(input: DeleteProjectLabel!):
ProjectLabel! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT)
updateProjectLabel(input: UpdateProjectLabel!):
ProjectLabel! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT)
updateProjectLabelName(input: UpdateProjectLabelName!):
ProjectLabel! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT)
updateProjectLabelColor(input: UpdateProjectLabelColor!):
ProjectLabel! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: PROJECT)
2020-04-11 21:24:45 +02:00
}
input NewProjectLabel {
projectID: UUID!
labelColorID: UUID!
name: String
2020-04-11 21:24:45 +02:00
}
input DeleteProjectLabel {
projectLabelID: UUID!
2020-06-19 01:12:15 +02:00
}
input UpdateProjectLabelName {
projectLabelID: UUID!
2020-06-19 01:12:15 +02:00
name: String!
}
input UpdateProjectLabel {
projectLabelID: UUID!
labelColorID: UUID!
2020-06-19 01:12:15 +02:00
name: String!
}
input UpdateProjectLabelColor {
projectLabelID: UUID!
labelColorID: UUID!
2020-04-20 05:02:55 +02:00
}
extend type Mutation {
inviteProjectMembers(input: InviteProjectMembers!):
InviteProjectMembersPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
deleteProjectMember(input: DeleteProjectMember!):
DeleteProjectMemberPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
updateProjectMemberRole(input: UpdateProjectMemberRole!):
UpdateProjectMemberRolePayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
deleteInvitedProjectMember(input: DeleteInvitedProjectMember!):
DeleteInvitedProjectMemberPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
}
input DeleteInvitedProjectMember {
projectID: UUID!
email: String!
2020-04-21 01:04:27 +02:00
}
type DeleteInvitedProjectMemberPayload {
invitedMember: InvitedMember!
}
input MemberInvite {
userID: UUID
email: String
}
input InviteProjectMembers {
projectID: UUID!
members: [MemberInvite!]!
}
type InviteProjectMembersPayload {
ok: Boolean!
projectID: UUID!
members: [Member!]!
invitedMembers: [InvitedMember!]!
2020-04-20 05:02:55 +02:00
}
input DeleteProjectMember {
projectID: UUID!
userID: UUID!
2020-04-20 05:02:55 +02:00
}
type DeleteProjectMemberPayload {
ok: Boolean!
member: Member!
projectID: UUID!
2020-04-20 05:02:55 +02:00
}
input UpdateProjectMemberRole {
2020-04-21 01:04:27 +02:00
projectID: UUID!
userID: UUID!
roleCode: RoleCode!
2020-04-21 01:04:27 +02:00
}
type UpdateProjectMemberRolePayload {
ok: Boolean!
member: Member!
}
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)
assignTask(input: AssignTaskInput):
Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
unassignTask(input: UnassignTaskInput):
Task! @hasRole(roles: [ADMIN, MEMBER], level: PROJECT, type: TASK)
}
input NewTask {
taskGroupID: UUID!
name: String!
position: Float!
2020-12-31 03:56:59 +01:00
assigned: [UUID!]
}
input AssignTaskInput {
2020-05-31 06:11:19 +02:00
taskID: UUID!
userID: UUID!
2020-05-31 06:11:19 +02:00
}
input UnassignTaskInput {
taskID: UUID!
userID: UUID!
2020-05-31 06:11:19 +02:00
}
input UpdateTaskDescriptionInput {
taskID: UUID!
description: String!
2020-05-31 06:11:19 +02:00
}
type UpdateTaskLocationPayload {
previousTaskGroupID: UUID!
task: Task!
}
2020-06-13 00:21:58 +02:00
2020-06-16 00:36:59 +02:00
input UpdateTaskDueDate {
taskID: UUID!
2021-01-01 21:51:40 +01:00
hasTime: Boolean!
2020-06-16 00:36:59 +02:00
dueDate: Time
}
2020-06-19 01:12:15 +02:00
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!
}
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)
2020-07-12 09:06:11 +02:00
}
input UpdateTaskChecklistItemLocation {
taskChecklistID: UUID!
taskChecklistItemID: UUID!
2020-07-12 09:06:11 +02:00
position: Float!
}
type UpdateTaskChecklistItemLocationPayload {
taskChecklistID: UUID!
2020-07-12 09:06:11 +02:00
prevChecklistID: UUID!
checklistItem: TaskChecklistItem!
}
input UpdateTaskChecklistLocation {
taskChecklistID: UUID!
2020-07-12 09:06:11 +02:00
position: Float!
}
type UpdateTaskChecklistLocationPayload {
checklist: TaskChecklist!
}
2020-06-19 01:12:15 +02:00
input CreateTaskChecklist {
taskID: UUID!
name: String!
position: Float!
}
type DeleteTaskChecklistItemPayload {
ok: Boolean!
taskChecklistItem: TaskChecklistItem!
}
2020-06-19 01:12:15 +02:00
input CreateTaskChecklistItem {
taskChecklistID: UUID!
name: String!
position: Float!
}
input SetTaskChecklistItemComplete {
taskChecklistItemID: UUID!
complete: Boolean!
}
2020-06-19 01:12:15 +02:00
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!
}
2020-12-19 03:34:35 +01:00
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 Mutation {
deleteTeam(input: DeleteTeam!):
DeleteTeamPayload! @hasRole(roles:[ ADMIN], level: TEAM, type: TEAM)
createTeam(input: NewTeam!):
Team! @hasRole(roles: [ADMIN], level: ORG, type: ORG)
}
input NewTeam {
name: String!
organizationID: UUID!
}
input DeleteTeam {
teamID: UUID!
}
type DeleteTeamPayload {
ok: Boolean!
team: Team!
projects: [Project!]!
}
extend type Mutation {
createTeamMember(input: CreateTeamMember!):
CreateTeamMemberPayload! @hasRole(roles: [ADMIN], level: TEAM, type: TEAM)
updateTeamMemberRole(input: UpdateTeamMemberRole!):
UpdateTeamMemberRolePayload! @hasRole(roles: [ADMIN], level: TEAM, type: TEAM)
deleteTeamMember(input: DeleteTeamMember!):
DeleteTeamMemberPayload! @hasRole(roles: [ADMIN], level: TEAM, type: TEAM)
}
input DeleteTeamMember {
teamID: UUID!
userID: UUID!
2020-07-12 09:06:11 +02:00
newOwnerID: UUID
}
type DeleteTeamMemberPayload {
teamID: UUID!
userID: UUID!
2020-07-12 09:06:11 +02:00
affectedProjects: [Project!]!
}
input CreateTeamMember {
userID: UUID!
teamID: UUID!
}
type CreateTeamMemberPayload {
team: Team!
teamMember: Member!
}
input UpdateTeamMemberRole {
teamID: UUID!
userID: UUID!
roleCode: RoleCode!
}
type UpdateTeamMemberRolePayload {
ok: Boolean!
teamID: UUID!
member: Member!
}
extend type Mutation {
createUserAccount(input: NewUserAccount!):
UserAccount! @hasRole(roles: [ADMIN], level: ORG, type: ORG)
deleteUserAccount(input: DeleteUserAccount!):
DeleteUserAccountPayload! @hasRole(roles: [ADMIN], level: ORG, type: ORG)
deleteInvitedUserAccount(input: DeleteInvitedUserAccount!):
DeleteInvitedUserAccountPayload! @hasRole(roles: [ADMIN], level: ORG, type: ORG)
logoutUser(input: LogoutUser!): Boolean!
2020-06-13 00:21:58 +02:00
clearProfileAvatar: UserAccount!
2020-07-12 09:06:11 +02:00
2020-07-16 01:20:08 +02:00
updateUserPassword(input: UpdateUserPassword!): UpdateUserPasswordPayload!
updateUserRole(input: UpdateUserRole!):
UpdateUserRolePayload! @hasRole(roles: [ADMIN], level: ORG, type: ORG)
2020-09-11 20:54:43 +02:00
updateUserInfo(input: UpdateUserInfo!):
UpdateUserInfoPayload! @hasRole(roles: [ADMIN], level: ORG, type: ORG)
}
extend type Query {
searchMembers(input: MemberSearchFilter!): [MemberSearchResult!]!
}
input DeleteInvitedUserAccount {
invitedUserID: UUID!
}
type DeleteInvitedUserAccountPayload {
invitedUser: InvitedUserAccount!
}
input MemberSearchFilter {
searchFilter: String!
projectID: UUID
}
type MemberSearchResult {
similarity: Int!
id: String!
user: UserAccount
status: ShareStatus!
}
2020-09-11 20:54:43 +02:00
type UpdateUserInfoPayload {
user: UserAccount!
}
input UpdateUserInfo {
name: String!
initials: String!
email: String!
bio: String!
2020-07-12 09:06:11 +02:00
}
2020-07-16 01:20:08 +02:00
input UpdateUserPassword {
userID: UUID!
password: String!
}
type UpdateUserPasswordPayload {
ok: Boolean!
user: UserAccount!
}
2020-07-12 09:06:11 +02:00
input UpdateUserRole {
userID: UUID!
roleCode: RoleCode!
}
type UpdateUserRolePayload {
user: UserAccount!
}
2020-04-11 21:24:45 +02:00
input NewUserAccount {
username: String!
email: String!
fullName: String!
initials: String!
password: String!
roleCode: String!
}
2020-04-20 05:02:55 +02:00
input LogoutUser {
userID: UUID!
}
2020-06-19 01:12:15 +02:00
input DeleteUserAccount {
userID: UUID!
2020-07-18 04:55:38 +02:00
newOwnerID: UUID
}
2020-04-11 21:24:45 +02:00
type DeleteUserAccountPayload {
ok: Boolean!
userAccount: UserAccount!
2020-04-10 04:40:22 +02:00
}