Skip to content

Instantly share code, notes, and snippets.

@h22k
Created August 25, 2025 19:41
Show Gist options
  • Select an option

  • Save h22k/b928f69f44e8ad71bbaaf516f98d2518 to your computer and use it in GitHub Desktop.

Select an option

Save h22k/b928f69f44e8ad71bbaaf516f98d2518 to your computer and use it in GitHub Desktop.
graphql schema for internal onboarding and offboarding process manager project
scalar UUID
scalar DateTime
enum EmployeeStatus {
ACTIVE
ONBOARDING
OFFBOARDING
DEACTIVE
}
enum ProcessType {
ONBOARDING
OFFBOARDING
}
type Employee {
id: UUID!
name: String!
address: String
salary: Float
status: EmployeeStatus!
team: Team!
roles: [Role!]!
permissions: [Permission!]!
processes: [Process]!
manager: Employee
informationPage: InformationPage
}
type EmployeePublic {
name: String!
}
type Team {
id: UUID!
name: String!
manager: Employee!
members: [Employee!]!
workflow: Workflow
}
type Role {
id: UUID!
name: String!
permissions: [Permission!]!
employees: [Employee!]!
}
type Permission {
id: UUID!
name: String!
roles: [Role!]!
employees: [Employee!]!
}
type Task {
id: UUID!
name: String!
team: Team!
dynamicDeadline: String
workflows: [Workflow!]!
}
type Workflow {
id: UUID!
name: String!
team: Team!
tasks: [Task!]!
}
type Process {
id: UUID!
employee: Employee!
team: Team!
type: ProcessType!
dateStart: DateTime!
dateEnd: DateTime
tasks: [Task!]!
}
type ProcessTask {
id: UUID!
process: Process!
task: Task!
taskDeadline: DateTime!
taskAssignee: Employee!
isCompleted: Boolean!
connectedTo: ProcessTask
}
type ProcessTaskPublic {
taskDeadline: DateTime!
taskAssignee: EmployeePublic!
isCompleted: Boolean!
connectedTo: ProcessTaskPublic
}
type ProcessInformation {
processTasks: [ProcessTaskPublic!]!
}
type InformationPage {
id: UUID!
employee: Employee!
url: String!
}
input EmployeeFilter {
status: EmployeeStatus
teamId: UUID
roleId: UUID
text: String
}
input CreateEmployeeInput {
name: String!
address: String
salary: Float
teamId: UUID!
roleIds: [UUID!]
permissionIds: [UUID!]
status: EmployeeStatus = ONBOARDING
}
input UpdateEmployeeInput {
id: UUID!
name: String
address: String
salary: Float
status: EmployeeStatus
teamId: UUID
roleIds: [UUID!]
permissionIds: [UUID!]
}
input CreateTeamInput {
name: String!
managerId: UUID!
}
input CreateRoleInput {
name: String!
permissionIds: [UUID!]
}
input CreatePermissionInput {
name: String!
}
input CreateTaskInput {
name: String!
teamId: UUID!
dynamicDeadline: String!
}
input UpdateTaskInput {
id: UUID!
name: String
teamId: UUID
dynamicDeadline: String
}
input CreateWorkflowInput {
teamId: UUID!
name: String!
taskIds: [UUID!]
}
input UpdateWorkflowTasksInput {
workflowId: UUID!
addTaskIds: [UUID!]
removeTaskIds: [UUID!]
}
input StartProcessInput {
employeeId: UUID!
teamId: UUID
type: ProcessType!
}
input CompleteProcessTaskInput {
processTaskId: UUID!
}
input AssignProcessTaskInput {
processTaskId: UUID!
assigneeEmployeeId: UUID
taskDeadline: DateTime
}
type Query {
employee(id: UUID!): Employee
team(id: UUID!): Team
role(id: UUID!): Role
permission(id: UUID!): Permission
task(id: UUID!): Task
workflow(id: UUID!): Workflow
process(id: UUID!): Process
processTask(id: UUID!): ProcessTask
informationPage(processID: UUID!): InformationPage
processInformation(processID: UUID!): ProcessInformation
employees: [Employee!]!
teams: [Team!]!
roles: [Role!]!
permissions: [Permission!]!
tasks: [Task!]!
workflows: [Workflow!]!
processes: [Process!]!
}
type Mutation {
createEmployee(input: CreateEmployeeInput!): Employee!
updateEmployee(input: UpdateEmployeeInput!): Employee!
addRoleToEmployee(employeeId: UUID!, roleId: UUID!): Employee!
removeRoleFromEmployee(employeeId: UUID!, roleId: UUID!): Employee!
grantPermissionToEmployee(employeeId: UUID!, permissionId: UUID!): Employee!
revokePermissionFromEmployee(employeeId: UUID!, permissionId: UUID!): Employee!
createTeam(input: CreateTeamInput!): Team!
createWorkflow(input: CreateWorkflowInput!): Workflow!
updateWorkflowTasks(input: UpdateWorkflowTasksInput!): Workflow!
createTask(input: CreateTaskInput!): Task!
updateTask(input: UpdateTaskInput!): Task!
startProcess(input: StartProcessInput!): Process!
assignProcessTask(input: AssignProcessTaskInput!): ProcessTask!
completeProcessTask(input: CompleteProcessTaskInput!): ProcessTask!
createRole(input: CreateRoleInput!): Role!
createPermission(input: CreatePermissionInput!): Permission!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment