← BACK TO DASHBOARD
SKROBBE HUB API
All endpoints are behind Cloudflare Access (email OTP). Requests require valid session credentials.
Base URL: https://api.skrobbe.com
System
GET /api/status Health check
Response
{ "status": "ok" }
GET /api/system Pi hardware stats
Response
{
  "cpu_percent": 2.5,
  "mem_percent": 8.0,
  "mem_used": 319614976,
  "mem_total": 3980124160,
  "disk_percent": 2.1,
  "disk_used": 4964769792,
  "disk_total": 245681999872,
  "temp_c": 42.4,
  "uptime": "17h 35m"
}
Pi-hole
GET /api/pihole/stats DNS blocking statistics
Response
{
  "total_queries": 2163,
  "blocked": 5,
  "percent_blocked": 0.23
}
Laptop Control
GET /api/laptop/status Check laptop power state
Response
{
  "status": "online | offline | booting | not_configured",
  "message": "..."
}
Shelly smart plug not yet configured. Returns "not_configured" until setup.
POST /api/laptop/power-on Power on via Shelly plug
Response
{ "status": "ok | not_configured" }
Triggers Shelly smart plug to power on the Razer Blade 14.
POST /api/laptop/shutdown Shut down laptop
Response
{ "status": "ok | not_configured" }
File Manager
GET /api/files List directory contents
Parameters
NameTypeRequiredDescription
path string OPTIONAL Relative path within storage. Defaults to root.
Response
{
  "path": "",
  "entries": [
    {
      "name": "photos",
      "type": "dir",
      "size": null,
      "modified": 1711100000.0
    },
    {
      "name": "notes.txt",
      "type": "file",
      "size": 1024,
      "modified": 1711100000.0
    }
  ]
}
GET /api/files/download Download a file
Parameters
NameTypeRequiredDescription
path string REQUIRED Relative path to file within storage.
Response
Binary file download (Content-Disposition: attachment)
POST /api/files/upload Upload a file
Parameters
NameTypeRequiredDescription
path string OPTIONAL Target directory. Defaults to root.
file multipart/form-data REQUIRED The file to upload.
Response
{
  "uploaded": "notes.txt",
  "path": "notes.txt"
}
DELETE /api/files Delete a file or directory
Parameters
NameTypeRequiredDescription
path string REQUIRED Relative path to file or directory.
Response
{ "deleted": "notes.txt" }
Directories are deleted recursively. Cannot delete the storage root.
PUT /api/files/rename Rename a file or directory
Parameters
NameTypeRequiredDescription
path string REQUIRED Current relative path.
new_name string REQUIRED New filename (not a path, just the name).
Response
{
  "renamed": "old-name.txt",
  "new_name": "new-name.txt"
}