GraphQL API
Complete GraphQL API reference for Infinibay - queries, mutations, types, and schema
GraphQL API
GraphQL API for Infinibay VDI platform. Apollo Server 4 + TypeGraphQL 2. 50+ queries, 40+ mutations. Real-time updates via Socket.io.
Endpoint
http://localhost:4000/graphql (HTTP POST, application/json, JWT in Authorization: Bearer <token>)
Authentication
See authentication.md for details. Login mutation returns JWT token. Include in header for all requests.
Type System
Scalars: ID, String, Int, Float, Boolean, DateTime (ISO 8601), JSON Enums: UserRole (USER/ADMIN/SUPER_ADMIN), MachineStatus (RUNNING/STOPPED/PAUSED/SUSPENDED), etc.
Queries
User
currentUser: Get authenticated useruser(id): Get specific user (ADMIN)users: List all users (ADMIN)
Machine (VM)
machine(id): Get VM by IDmachines(filter, pagination): List VMs with filteringmachineConfiguration(id): Get VM hardware configvmStatistics(id): Get VM stats
Department
department(id): Get departmentdepartments: List departmentsdepartmentMembers(id): List department members
Health & Monitoring
healthSnapshots(vmId, filter): VM health historyrecommendations(vmId): Automated recommendationssystemMetrics(vmId, timeRange): System metrics
Firewall
firewallRuleSets(vmId): Get firewall ruleseffectiveFirewallRules(vmId): Computed effective rulesservicePresets: Available service presetsblockedConnections(vmId): Recent blocked traffic
Maintenance
maintenanceTasks(vmId, filter): Scheduled tasksmaintenanceHistory(vmId): Task execution history
Templates & ISOs
machineTemplates(filter): VM templatesisos(filter): Available ISOsosAvailability: Supported operating systems
Applications
applications(filter): Application catalogmachineApplications(vmId): Installed apps on VMapplicationUsage(vmId, appId): App usage stats
Network & Snapshots
networks: Libvirt networkssnapshots(vmId): VM snapshotspackages(vmId, search): Guest OS packages
Mutations
User Management
login(email, password): Authenticate usercreateUser(data): Create user (ADMIN)updateUser(id, data): Update userdeleteUser(id): Delete user (ADMIN)changePassword(currentPassword, newPassword): Change own password
VM Lifecycle
createMachine(data): Create VMupdateMachine(id, data): Update VM configdeleteMachine(id): Delete VMstartMachine(id): Start VMstopMachine(id): Stop VMrestartMachine(id): Restart VMpauseMachine(id): Pause VMresumeMachine(id): Resume VM
VM Configuration
updateMachineConfiguration(id, data): Update hardwareattachISO(vmId, isoId): Attach ISOdetachISO(vmId): Detach ISO
Firewall
createFirewallRule(input): Create firewall ruleupdateFirewallRule(id, input): Update ruledeleteFirewallRule(id): Delete ruletoggleServicePreset(vmId, presetId, enabled): Enable/disable service presetapplyFirewallTemplate(vmId, templateId): Apply template
Health & Maintenance
scheduleHealthCheck(vmId, type): Schedule health checkscheduleMaintenanceTask(vmId, data): Schedule maintenanceexecuteMaintenanceTask(id): Execute task immediatelycancelMaintenanceTask(id): Cancel scheduled task
Snapshots
createSnapshot(vmId, name, description): Create VM snapshotrestoreSnapshot(snapshotId): Restore snapshotdeleteSnapshot(snapshotId): Delete snapshot
Applications
installApplication(vmId, appId): Install app on VMuninstallApplication(vmId, appId): Uninstall appupdateApplication(id, data): Update app metadata
Packages (Guest OS)
installPackage(vmId, packageName): Install packageremovePackage(vmId, packageName): Remove packageupdatePackages(vmId, packageNames): Update packages
Department
createDepartment(name, description): Create departmentupdateDepartment(id, data): Update departmentdeleteDepartment(id): Delete department
Templates
createMachineTemplate(data): Create VM templateupdateMachineTemplate(id, data): Update templatedeleteMachineTemplate(id): Delete template
Common Input Types
CreateMachineInput: name, departmentId, templateId, cpus, memoryMB, diskGB, osType UpdateMachineInput: name, description, cpus, memoryMB CreateFirewallRuleInput: action (ACCEPT/DROP), direction (INBOUND/OUTBOUND), protocol (TCP/UDP/ICMP), srcIP, destIP, srcPort, destPort MaintenanceTaskInput: type (DISK_CLEANUP/DEFRAG/WINDOWS_UPDATE/DEFENDER_SCAN), schedule, priority
Error Handling
Error codes: UNAUTHORIZED (auth failure), FORBIDDEN (insufficient permissions), BAD_USER_INPUT (validation error), NOT_FOUND (resource not found).
See authentication.md for detailed error handling.
Pagination
Queries support skip and take parameters for pagination:
machines(skip: 0, take: 20)
Filtering
Queries support filtering via where parameter:
machines(where: { status: RUNNING, departmentId: "dept-123" })
Real-Time Updates
GraphQL API does not use subscriptions. Real-time updates delivered via Socket.io. See architecture.md for Socket.io details.
Schema Generation
Schema generated from TypeGraphQL decorators, emitted to backend/app/schema.graphql. Frontend codegen uses this schema.
For detailed authentication flow, see authentication.md. For architectural details, see architecture.md.