Add Unraid UI project documentation and research
Some checks failed
Master CI / yarn_install_and_build (push) Has been cancelled

- Complete Unraid WebGUI inventory (~100 pages documented)
- Unraid GraphQL API research and documentation
- Homarr architecture documentation
- Orchis GTK theme design tokens (TypeScript)
- Project README with implementation plan

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Kaloyan Danchev
2026-02-06 07:44:52 +02:00
parent ce336311b1
commit e881ec6cb5
5 changed files with 3123 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
# Unraid API Research (Live from XTRM-Unraid v7.2.3)
## API: unraid-api v4.29.2 (NestJS + Apollo GraphQL)
### Connection
- HTTP: `http://192.168.10.20/graphql`
- WebSocket: `ws://192.168.10.20/graphql` (graphql-ws protocol)
- Unix socket: `/var/run/unraid-api.sock`
- Auth: `x-api-key` header
### GraphQL Queries
| Query | Description |
|-------|-------------|
| `info` | System info (cpu, memory, os, baseboard, devices, display, versions) |
| `array` | Array state, capacity, disks, parities, caches, parity check status |
| `disks` / `disk(id)` | Physical disks with SMART status, temp, serial |
| `docker` | Containers (id, names, state, status, image, ports, autoStart) + networks |
| `vms` | VMs (id, name, state) |
| `shares` | Shares (name, free, used, size, include, exclude, cache, color) |
| `notifications` | Notifications (title, subject, description, importance, type, timestamp) |
| `vars` | Server variables (version, name, timezone, network, SMB/NFS settings) |
| `services` | Running services (name, online, uptime, version) |
| `flash` | Flash drive (guid, vendor, product) |
| `registration` | License (type, state, keyFile, expiration) |
| `network` | Network info (accessUrls) |
| `server` | Server details (owner, guid, wanip, lanip, localurl, remoteurl) |
| `connect` | Connect status (dynamicRemoteAccess, settings) |
| `plugins` | Installed plugins (name, version) |
| `logFiles` / `logFile(path)` | Log file listing and content |
| `upsDevices` / `upsConfiguration` | UPS monitoring |
| `apiKeys` | API key management |
| `customization` | Theme + activation code |
| `me` / `owner` | Current user / server owner |
### GraphQL Mutations
| Mutation | Description |
|----------|-------------|
| `array.setState` | Start/stop array |
| `array.addDiskToArray` / `removeDiskFromArray` | Disk management |
| `array.mountArrayDisk` / `unmountArrayDisk` | Mount/unmount |
| `docker.start(id)` / `docker.stop(id)` | Container start/stop |
| `vm.start/stop/pause/resume/forceStop/reboot/reset(id)` | VM power management |
| `parityCheck.start/pause/resume/cancel` | Parity check control |
| `notification.create/delete/archive/unread` | Notification CRUD |
| `apiKey.create/update/delete` | API key management |
| `customization.setTheme` | Theme switching |
| `connectSignIn/SignOut` | Unraid Connect |
| `setupRemoteAccess` | Remote access config |
### GraphQL Subscriptions (Real-time)
- `systemMetricsCpu` / `systemMetricsCpuTelemetry` / `systemMetricsMemory`
- `arraySubscription` / `parityHistorySubscription`
- `notificationAdded` / `notificationsOverview`
- `logFile` (live log streaming)
- `upsUpdates`
- `ownerSubscription` / `serversSubscription`
### Enums
- ArrayState: STARTED, STOPPED, NEW_ARRAY, RECON_DISK, DISABLE_DISK, etc.
- ArrayDiskStatus: DISK_NP, DISK_OK, DISK_INVALID, DISK_WRONG, DISK_DSBL, etc.
- ArrayDiskType: DATA, PARITY, FLASH, CACHE
- ContainerState: RUNNING, EXITED
- VmState: NOSTATE, RUNNING, IDLE, PAUSED, SHUTDOWN, SHUTOFF, CRASHED, PMSUSPENDED
- DiskFsType: XFS, BTRFS, VFAT, ZFS, EXT4, NTFS
- DiskInterfaceType: SAS, SATA, USB, PCIE, UNKNOWN
- ThemeName: azure, black, gray, white
### Legacy PHP/Nchan Endpoints
- Nchan WebSocket channels: `/sub/var`, `/sub/docker`, `/sub/update1-3`, `/sub/diskload`, etc.
- PHP includes: DashboardApps.php, Control.php, SmartInfo.php, Syslog.php, etc.
- State INI files at `/var/local/emhttp/`: var.ini, disks.ini, shares.ini, etc.
- Legacy control: POST to `/update.htm` for commands
### NOT Available via GraphQL
- Docker create/delete/restart/logs
- VM create/delete
- Share CRUD, User CRUD
- Detailed SMART attributes
- Disk format/clear, spin up/down
- System reboot/shutdown
- Mover operations