195 lines
4.1 KiB
GraphQL
Executable File
195 lines
4.1 KiB
GraphQL
Executable File
type ProjectPermission {
|
|
team: RoleCode!
|
|
project: RoleCode!
|
|
org: RoleCode!
|
|
}
|
|
|
|
type Project {
|
|
id: ID!
|
|
shortId: String!
|
|
createdAt: Time!
|
|
name: String!
|
|
team: Team
|
|
taskGroups: [TaskGroup!]!
|
|
members: [Member!]!
|
|
invitedMembers: [InvitedMember!]!
|
|
publicOn: Time
|
|
permission: ProjectPermission!
|
|
labels: [ProjectLabel!]!
|
|
}
|
|
|
|
type ProjectLabel {
|
|
id: ID!
|
|
createdDate: Time!
|
|
labelColor: LabelColor!
|
|
name: String
|
|
}
|
|
|
|
type LabelColor {
|
|
id: ID!
|
|
name: String!
|
|
position: Float!
|
|
colorHex: String!
|
|
}
|
|
|
|
type Member {
|
|
id: ID!
|
|
role: Role!
|
|
fullName: String!
|
|
username: String!
|
|
profileIcon: ProfileIcon!
|
|
owned: OwnedList!
|
|
member: MemberList!
|
|
}
|
|
|
|
type InvitedMember {
|
|
email: String!
|
|
invitedOn: Time!
|
|
}
|
|
|
|
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)
|
|
}
|
|
|
|
input NewProjectLabel {
|
|
projectID: UUID!
|
|
labelColorID: UUID!
|
|
name: String
|
|
}
|
|
|
|
input DeleteProjectLabel {
|
|
projectLabelID: UUID!
|
|
}
|
|
|
|
input UpdateProjectLabelName {
|
|
projectLabelID: UUID!
|
|
name: String!
|
|
}
|
|
|
|
input UpdateProjectLabel {
|
|
projectLabelID: UUID!
|
|
labelColorID: UUID!
|
|
name: String!
|
|
}
|
|
|
|
input UpdateProjectLabelColor {
|
|
projectLabelID: UUID!
|
|
labelColorID: UUID!
|
|
}
|
|
|
|
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!
|
|
}
|
|
|
|
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!]!
|
|
}
|
|
|
|
input DeleteProjectMember {
|
|
projectID: UUID!
|
|
userID: UUID!
|
|
}
|
|
|
|
type DeleteProjectMemberPayload {
|
|
ok: Boolean!
|
|
member: Member!
|
|
projectID: UUID!
|
|
}
|
|
|
|
input UpdateProjectMemberRole {
|
|
projectID: UUID!
|
|
userID: UUID!
|
|
roleCode: RoleCode!
|
|
}
|
|
|
|
type UpdateProjectMemberRolePayload {
|
|
ok: Boolean!
|
|
member: Member!
|
|
}
|
|
|
|
extend type Query {
|
|
findProject(input: FindProject!): Project!
|
|
}
|
|
|
|
input FindProject {
|
|
projectID: UUID
|
|
projectShortID: String
|
|
}
|
|
|
|
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)
|
|
toggleProjectVisibility(input: ToggleProjectVisibility!): ToggleProjectVisibilityPayload! @hasRole(roles: [ADMIN], level: PROJECT, type: PROJECT)
|
|
}
|
|
|
|
input ToggleProjectVisibility {
|
|
projectID: UUID!
|
|
isPublic: Boolean!
|
|
}
|
|
|
|
type ToggleProjectVisibilityPayload {
|
|
project: Project!
|
|
}
|
|
|
|
input NewProject {
|
|
teamID: UUID
|
|
name: String!
|
|
}
|
|
|
|
input UpdateProjectName {
|
|
projectID: UUID!
|
|
name: String!
|
|
}
|
|
|
|
input DeleteProject {
|
|
projectID: UUID!
|
|
}
|
|
|
|
type DeleteProjectPayload {
|
|
ok: Boolean!
|
|
project: Project!
|
|
}
|
|
|