# 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