APIs used by status.boysare.moe
As you may have seen, status.boysare.moe hosts live metrics, with some stats about my servers and also a small health feed with various data about me, anyone can access this if they want, and obsessively track me if desired...
This page is a short guide about the endpoints.
Endpoints
- status.boysare.moe - server data UI (CPU, memory, storage, network...)
-
status.boysare.moe/health - various related health
stats
- API breakdown here: boysare.moe/health
-
status.boysare.moe/activity - my desktop activity
for the day, split into categories
- API breakdown at boysare.moe/activity, and a small summary bar on the home page
Server metrics
Server endpoints return the same structure of data, and are polled every few seconds on the dashboard.
| Field | Type | Description |
|---|---|---|
cpu |
number | Overall CPU utilisation as a percentage |
ram |
number | RAM utilisation as a percentage |
ram_used_mb / ram_total_mb |
number | RAM used and total available RAM, in MB |
uptime_s |
number | System uptime, in seconds |
proc_count |
number | Number of running processes |
timestamp |
number | Unix timestamp from when the data was collected |
power_w |
number | CPU package power draw in watts, null if unavailable |
disks[] |
array |
Disk usage per-mount: dev, used/total (in KB) and
pct
|
net |
object | Aggregate rx_bps/tx_bps, plus breakdown by
interfaces[], with cumulative
rx_bytes_total/tx_bytes_total
|
top_cpu[] / top_mem[] |
array | Top processes by CPU/memory: name, cpu, mem_mb and
procs
|
Health feed
A daily log of weight and sleep stats. How this data is collected is a mystery, but I definitely didn't reverse engineer the Suunto API (*sobs*)...
Sleep data might take a while to appear for the current date, and my sleep is seems to be split into naps because I'm stupid...
| Field | Type | Description |
|---|---|---|
current |
object | Most recent day's row |
previous[] |
array | All earlier rows, newest first |
<row>.date |
string | YYYY-MM-DD |
<row>.weight_kg |
number | Omitted on days with no weigh-in |
<row>.sleep |
object | from/to (HH:MM), hours, stages breakdown
in hours (optional) |
<row>.naps |
object | Keyed by start time (HH:MM), each entry shaped like sleep minus
stages (optional)
|
sleep_error |
string | Shows an error message if the sleep source failed |
Activity feed
The desktop activity for the day, in categories set for ActivityWatch. Seen on the home page in the form of a small bar.
| Field | Type | Description |
|---|---|---|
host |
string | The device the data is from |
date |
string | In YYYY-MM-DD |
day_start |
string | ISO timestamp the day began. ActivityWatch treats a day
as 04:00 to 04:00 rather than
midnight to midnight, so this is not on the same date as
date before 04:00 |
day_end |
string | ISO timestamp the day ends, one day on from
day_start |
generated_at |
string | ISO timestamp of when the data was collected |
source |
string | URL of the ActivityWatch instance the data was read from |
partial |
boolean | true while the day is still being recorded |
totals |
object | active_seconds, afk_seconds,
tracked_seconds, and also app_switches and
distinct_apps
|
categories[] |
array | Time per activitywatch category: category,
active_seconds, afk_seconds, plus
color and color_light to draw the
bar without hardcoding a palette. Both are omitted on days
recorded before the colours were added. The colour is the
top-level family's, so a category and its parent share
one; color_light is the same hue darkened to
clear 3:1 on a light background, for use inside
light-dark()
|
apps[] |
array | Time per app: app, name,
active_seconds, afk_seconds
|
hours[] |
array | One entry per hour of the day: hour (0–23),
active_seconds, afk_seconds
|
Errors
Errors are returned in JSON. If a server isn't responding or if data is unavailable.