Zum Inhalt springen
Container-Display-Benachrichtigungen
WebSocket-Streaming
Benachrichtigungsverlauf
Dringlichkeitsstufen
Benutzerdefinierte Icons
Automatischer Ablauf
Kategorisierung
POST /notify
Container-Display-Benachrichtigungen
WebSocket-Streaming
Benachrichtigungsverlauf
Dringlichkeitsstufen
Benutzerdefinierte Icons
Automatischer Ablauf
Kategorisierung
POST /notify
Container-Display-Benachrichtigungen
WebSocket-Streaming
Benachrichtigungsverlauf
Dringlichkeitsstufen
Benutzerdefinierte Icons
Automatischer Ablauf
Kategorisierung
POST /notify
Container-Display-Benachrichtigungen
WebSocket-Streaming
Benachrichtigungsverlauf
Dringlichkeitsstufen
Benutzerdefinierte Icons
Automatischer Ablauf
Kategorisierung
POST /notify
NotificationsHoody-Benachrichtigungen

Desktop-Benachrichtigungen über HTTP.

Linux-Desktop-Benachrichtigungen mit einem einzigen HTTP-POST an jedes Container-Display senden. Der Notification-Server ruft notify-send auf dem angegebenen Display auf.

notify · hoody-n

# Benachrichtigung an Display 0 senden

curl -X POST "https://abc123-def456-n-1.node-us-1.containers.hoody.com/api/v1/notifications/notify"

-d '{"display":"0","summary":"Build Complete","urgency":"normal"}'

# Response

{"success":true}

Wie es funktioniert

Drei Schritte. Je ein HTTP-Aufruf.

Jede Benachrichtigung folgt dem gleichen Lifecycle: auslösen, Verlauf abrufen oder live streamen, dann beenden wenn erledigt.

01

Trigger

POST /notify sendet einen notify-send-Aufruf an das Ziel-X11-Display. display, summary und optional urgency, body, expire_time oder icon angeben.

notifications — auslösen

# Fire a notification

curl -X POST .../notify

{"display":"0",

"summary":"Build Complete",

"urgency":"normal"}

 

{"success":true}

02

Zustellen

notify-send übergibt den Alert an den Notification-Daemon des Systems auf dem Ziel-X11-Display. Er erscheint in jeder verbundenen Display-Session und läuft je nach urgency und expire_time automatisch ab.

notifications — deliver

# notify-send on display :0

notify-send → X11 :0

 

▸ Build Complete

normal · auto-expires

02

Abrufen oder streamen

GET /[display] ruft den Benachrichtigungsverlauf ab, mit optionalen Filtern für limit, since, username und session. Per WebSocket zu /stream?displays=0 verbinden für Echtzeit-Push-Updates.

notifications — abrufen

# Poll history

curl .../0?limit=50

 

# Or stream live

new WebSocket(

"wss://.../stream?displays=0"

)

Dringlichkeitsstufen

niedrig. normal. kritisch.

Drei Dringlichkeitsstufen sind direkt auf notify-send-Verhalten abgebildet. Die richtige auswählen und der Notification-Daemon erledigt den Rest.

low

Verschwindet schnell. expire_time: 3000 für Hintergrundaufgaben, Telemetrie oder Informations-Pings setzen, die nicht stoeren sollen.

"urgency": "low",

"expire_time": 3000

normal

Standard. Standardmäßig, wenn urgency weggelassen wird. Der Notification-Daemon zeigt sie beim konfigurierten Timeout und schließt sie automatisch.

"urgency": "normal"

// default — weglassen, um dies zu nutzen

critical

Persistent — erfordert manuelles Schließen. expire_time: 0 für Systemfehler, Build-Fehler oder alles, was sofortige Aufmerksamkeit braucht.

"urgency": "critical",

"expire_time": 0

Channels

Verlauf abrufen oder live streamen.

Zwei Lesekanaele für verschiedene Bedürfnisse: REST für Audit-Logs und Einmalabfragen, WebSocket für Dashboards und Echtzeit-Monitoring.

GETGET /[display]Fetch
WSWS /streamStream

Benachrichtigungsverlauf für ein Display abrufen. Nach limit, since-Zeitstempel, Benutzername oder Session-ID filtern.

Verlauf abrufen

# Letzte 50 für Display 0 abrufen

curl ".../0?limit=50"

# zeitgefiltert

curl ".../0?since=1749025000000"

JSON-Array von Benachrichtigungsobjekten mit id, summary, urgency, timestamp und icon_url.

Ein oder mehrere Displays mit displays=0,:1,2 oder displays=all abonnieren. Erhält Push-Nachrichten, wenn sie ankommen. Für Dashboards und Monitoring.

Live streamen

# Öffne einen WebSocket

const ws = new WebSocket(

"wss://.../stream?displays=0"

)

# bei Nachricht

ws.onmessage = (e) => {

const msg = JSON.parse(e.data)

// msg.summary, msg.body, msg.urgency

}

[ type: "notification", data: [ id, summary, urgency, timestamp ] ] pushed on every new notification.

Anwendungsfälle

Von Build-Pipelines bis ML-Jobs.

Überall wo ein lang laufender Prozess den Abschluss oder Fehler signalisieren muss, genügt ein HTTP-POST.

CI/CD-Alarme

Lang laufende Builds sind abgeschlossen. HTTP-POST löst eine Benachrichtigung auf dem Container-Display aus — sichtbar in jeder aktiven Display-Session.

System-Monitoring

Server-Alarme werden als Desktop-Benachrichtigung auf dem X11-Display des Containers weitergeleitet, sichtbar in jeder aktiven Display-Session.

Lang laufende Aufgaben

Datenexporte, Video-Rendering, ML-Modell-Training, Backup-Abschluss — benachrichtigen wenn fertig, ohne zu pollen.

Automatisierte Workflows

Cron-Jobs, geplante Aufgaben und Automatisierungs-Skripte benachrichtigen das Container-Display bei Abschluss oder Fehler.

API-REFERENZ

8 Endpoints. Ein Benachrichtigungsserver.

Auslösen, abrufen, streamen und verwerfen von Desktop-Benachrichtigungen — plus Icons und Überwachung — alles über einfaches HTTP.

Base-URL https://abc123-def456-n-1.node-us-1.containers.hoody.com

Auslösen

1 Endpoint

POST .../api/v1/notifications/notify

POST
/api/v1/notifications/notifyEine neue Desktop-Notification auf dem Ziel-Display via notify-send auslösen

Abrufen & Streamen

2 Endpoints

GET .../api/v1/notifications/{display}?limit=50

GET
/api/v1/notifications/{display}Notifications für ein oder mehrere angegebene Displays abrufen
WS
/api/v1/notifications/stream?displays=0,1Echtzeit-Notification-Stream über eine WebSocket-Verbindung

Icons

1 Endpoint

GET .../api/v1/notifications/icons/{iconId}

GET
/api/v1/notifications/icons/{iconId}Ein Notification-Icon per Icon-ID abrufen

Gesundheit & Metriken

1 Endpoint

GET .../api/v1/notifications/health

GET
/api/v1/notifications/healthService-Health-Check für den Notification-Server

Desktop-Benachrichtigungen über HTTP.

Jedes Skript, jeder Service oder jede Automatisierung, die eine HTTP-Anfrage stellen kann, kann eine Desktop-Benachrichtigung an dein Container-Display senden.

Docs lesen