Aller au contenu
kit / notifications / principal
NotificationsHoody Notifications

Notifications de bureau via HTTP.

Envoyez des notifications de bureau Linux à n'importe quel affichage de conteneur avec un simple HTTP POST. Le serveur de notifications appelle notify-send sur l'affichage X11 de votre conteneur — déclenchez, récupérez l'historique ou diffusez en temps réel.

notify · hoody-n

# Envoyer une notification à l'affichage 0

curl -X POST ".../notify"

-d '["display":"0","summary":"Build Complete","urgency":"normal"]'

# Réponse

["message":"Notification sent successfully","success":true]

kit / notifications / cycle-de-vie
Fonctionnement

Trois étapes. Un appel HTTP chacune.

Chaque notification suit le même cycle de vie : la déclencher, récupérer l'historique ou la diffuser en temps réel, puis la rejeter quand c'est fait.

01

Déclencher

POST /notify envoie un appel notify-send à l'affichage X11 cible. Fournissez display, summary, et optionnellement urgency, body, expire_time ou icon.

notifications — déclenchement

{"display":"0",

"summary":"Build Complete",

"urgency":"normal"}

 

'{'"success":true'}'

02

Récupérer ou diffuser

GET /[display] récupère l'historique des notifications avec des filtres optionnels limit, since, username et session. Connectez-vous via WebSocket à /stream?displays=0 pour les mises à jour en temps réel.

notifications — récupération

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

 

# Or open a WebSocket

new WebSocket(

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

)

03

Rejeter

POST /dismiss marque les IDs de notification comme rejetés — ils sont filtrés des réponses GET suivantes. DELETE /dismiss efface l'état rejeté, les rendant à nouveau visibles.

notifications — rejet

# Dismiss by ID

POST /dismiss

{"displayId":"0",

"notificationIds":[10,11,12]}

 

# Clear dismissed state

DELETE /dismiss?displayId=0

kit / notifications / urgence
Niveaux d'urgence

low. normal. critical.

Trois niveaux d'urgence correspondent directement au comportement de notify-send. Choisissez le bon et le démon de notifications s'occupe du reste.

low

Se rejette rapidement. Définissez expire_time: 3000 pour les tâches en arrière-plan, la télémétrie ou les pings informatifs qui ne doivent pas interrompre la concentration.

"urgency": "low",

"expire_time": 3000

normal

Standard. Par défaut quand urgency est omis. Le démon de notifications l'affiche au délai configuré et le rejette automatiquement.

"urgency": "normal"

// par défaut — omettez pour utiliser ceci

critical

Persistant — nécessite un rejet manuel. Définissez expire_time: 0 pour les défaillances système, les erreurs de build ou tout ce qui nécessite une action immédiate.

"urgency": "critical",

"expire_time": 0

kit / notifications / canaux
Canaux

Récupérer l'historique ou diffuser en temps réel.

Deux canaux de lecture répondent à des besoins différents : REST pour les journaux d'audit et les requêtes ponctuelles, WebSocket pour les tableaux de bord et les moniteurs en temps réel.

GETGET /[display]Récupérer
WSWS /streamDiffuser

Récupère l'historique des notifications pour un affichage. Filtrez par limit, horodatage since, username ou ID de session. Utilisez pour les journaux d'audit, les requêtes ponctuelles et le traitement par lots.

fetch history

# get last 50 for display 0

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

# time-filtered

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

Tableau JSON d'objets notification avec id, summary, urgency, timestamp et icon_url.

Abonnez-vous à un ou plusieurs affichages avec displays=0,:1,2 ou displays=all. Reçoit les messages push à leur arrivée. Utilisez pour les tableaux de bord et la surveillance en temps réel.

stream live

# open a WebSocket

const ws = new WebSocket(

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

)

# on message

ws.onmessage = (e) => {

const msg = JSON.parse(e.data)

// msg.type === 'notification'

}

[ type: "notification", data: [ id, summary, urgency, timestamp ] ] poussé à chaque nouvelle notification.

kit / notifications / cas-d-usage
Cas d'usage

Des pipelines de build aux jobs ML.

Partout où un processus longue durée doit signaler son achèvement ou son échec, un simple HTTP POST suffit.

Alertes CI/CD

Les builds longue durée se terminent. HTTP POST déclenche une notification sur l'affichage du conteneur — visible dans toute session d'affichage active.

Surveillance système

Les alertes serveur sont routées vers une notification de bureau sur l'affichage X11 du conteneur, visible dans toute session d'affichage active.

Tâches longue durée

Exports de données, rendu vidéo, entraînement de modèles ML, achèvement de sauvegardes — notifiez à la fin sans polling.

Workflows automatisés

Les jobs cron, tâches planifiées et scripts d'automatisation notifient l'affichage du conteneur à l'achèvement ou en cas d'échec.

kit / notifications / api
RÉFÉRENCE API

8 Endpoints. Un serveur de notifications.

Déclenchez, récupérez, diffusez et rejetez les notifications de bureau — plus les icônes et la surveillance de santé — tout sur HTTP brut.

Déclencher

{count, plural, =1 {# endpoint} other {# endpoints}'}

POST .../api/v1/notifications/notify → {"success":true}

POST
/api/v1/notifications/notifyEnvoyer une notification de bureau native à un affichage cible via notify-send

Récupérer & Diffuser

{count, plural, =1 {# endpoint} other {# endpoints}'}

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

GET
/api/v1/notifications/{display}Récupérer l'historique des notifications pour un ou plusieurs affichages
WS
/api/v1/notifications/stream?displays=0,:1Flux WebSocket temps réel — mises à jour push à l'arrivée des notifications
POST
/api/v1/notifications/dismissMarquer les IDs de notification comme rejetés ; filtrés des réponses GET suivantes
DELETE
/api/v1/notifications/dismissEffacer l'état rejeté — restaurer les notifications visibles

Icônes

{count, plural, =1 {# endpoint} other {# endpoints}'}

GET .../api/v1/notifications/icons/{iconId} → image/png

GET
/api/v1/notifications/icons/{iconId}Récupérer l'icône de notification (JPEG, PNG ou SVG) par ID unique

Santé & Métriques

{count, plural, =1 {# endpoint} other {# endpoints}'}

GET .../api/v1/notifications/health → {"status":"UP"}

GET
/api/v1/notifications/healthVérification de santé améliorée — système de fichiers, WebSocket et statut mémoire
GET
/api/v1/notifications/metricsMétriques compatibles Prometheus pour notifications envoyées, échouées et CPU/mémoire
kit / notifications / cta

Les notifications sont à un HTTP POST.

Tout script, service ou automatisation capable de faire une requête HTTP peut envoyer une notification de bureau à l'affichage de votre conteneur.

Lire la documentation