Pular para o conteúdo
kit / notifications / principal
NotificationsHoody Notifications

Notificações de Desktop via HTTP.

Envie notificações de desktop Linux para qualquer display de contêiner com um único HTTP POST. O servidor de notificações chama notify-send no display X11 do seu contêiner — dispare, busque o histórico ou transmita ao vivo.

notify · hoody-n

# Enviar uma notificação para o display 0

curl -X POST ".../notify"

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

# Resposta

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

kit / notifications / ciclo de vida
Como Funciona

Três Etapas. Uma Chamada HTTP Cada.

Toda notificação segue o mesmo ciclo de vida: dispare, busque o histórico ou transmita ao vivo, depois descarte quando terminar.

01

Disparar

POST /notify envia uma chamada notify-send para o display X11 de destino. Forneça display, summary e opcionalmente urgency, body, expire_time ou icon.

notifications — disparar

# Fire a notification

POST /notify

 

# Request body

["display":"0","summary":"Build Complete",

"urgency":"normal","body":"All tests passed"]

02

Buscar ou Transmitir

GET /[display] recupera o histórico de notificações com filtros opcionais de limit, since, username e session. Conecte via WebSocket a /stream?displays=0 para atualizações push em tempo real.

notifications — buscar

# Poll history

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

 

# Or open a WebSocket

new WebSocket("wss://.../stream?displays=0")

03

Descartar

POST /dismiss marca IDs de notificação como descartados — são filtrados das respostas GET subsequentes. DELETE /dismiss limpa o estado descartado, tornando-os visíveis novamente.

notifications — descartar

# Dismiss by ID

POST /dismiss

["displayId":"0","notificationIds":[10,11,12]]

 

# Clear dismissed state

DELETE /dismiss?displayId=0

kit / notifications / urgência
Níveis de Urgência

low. normal. critical.

Três níveis de urgência mapeiam diretamente para o comportamento do notify-send. Escolha o certo e o daemon de notificação cuida do resto.

low

Descarta rapidamente. Defina expire_time: 3000 para tarefas em segundo plano, telemetria ou pings informativos que não devem interromper o foco.

"urgency": "low",

"expire_time": 3000

normal

Padrão. Default quando urgency é omitido. O daemon de notificação exibe no timeout configurado e descarta automaticamente.

"urgency": "normal"

// padrão — omita para usar isso

critical

Persistente — requer descarte manual. Defina expire_time: 0 para falhas de sistema, erros de build ou qualquer coisa que exija ação imediata.

"urgency": "critical",

"expire_time": 0

kit / notifications / canais
Canais

Busque o Histórico ou Transmita ao Vivo.

Dois canais de leitura atendem a necessidades diferentes: REST para logs de auditoria e consultas pontuais, WebSocket para dashboards e monitores em tempo real.

GETGET /[display]Buscar
WSWS /streamTransmitir

Consulte o histórico de notificações de um display. Filtre por limit, since timestamp, username ou session ID. Use para logs de auditoria, consultas pontuais e processamento em lote.

buscar histórico

# obter últimos 50 do display 0

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

# tempo-filtrado

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

Array JSON de objetos de notificação com id, summary, urgency, timestamp e icon_url.

Assine um ou mais displays com displays=0,:1,2 ou displays=all. Recebe mensagens push assim que chegam. Use para dashboards e monitoramento em tempo real.

transmissão ao vivo

# abrir um WebSocket

const ws = new WebSocket(

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

)

# na mensagem

ws.onmessage = (e) => {

const msg = JSON.parse(e.data)

// msg.type === 'notification'

}

[ type: "notification", data: [ id, summary, urgency, timestamp ] ] enviado a cada nova notificação.

kit / notifications / casos de uso
Casos de Uso

De Pipelines de Build a Jobs de ML.

Onde quer que um processo de longa duração precise sinalizar conclusão ou falha, um HTTP POST é tudo que é preciso.

Alertas de CI/CD

Builds longos concluídos. HTTP POST dispara uma notificação no display do contêiner — visível em qualquer sessão de display ativa.

Monitoramento de Sistema

Alertas de servidor são roteados para uma notificação de desktop no display X11 do contêiner, visível em qualquer sessão de display ativa.

Tarefas de Longa Duração

Exportações de dados, renderização de vídeo, treinamento de modelos de ML, conclusão de backup — notifique quando terminar sem polling.

Fluxos de Trabalho Automatizados

Jobs cron, tarefas agendadas e scripts de automação notificam o display do contêiner na conclusão ou falha.

kit / notifications / api
REFERÊNCIA DE API

8 Endpoints. Um Servidor de Notificações.

Acione, busque, transmita e rejeite notificações de desktop — mais ícones e monitoramento de saúde — tudo via HTTP simples.

Acionar

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

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

POST
/api/v1/notifications/notifyEnviar uma notificação nativa de desktop para um display de alvo via notify-send

Buscar e Transmitir

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

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

GET
/api/v1/notifications/{display}Recuperar histórico de notificações para um ou mais displays
WS
/api/v1/notifications/stream?displays=0,:1Fluxo WebSocket em tempo real — atualizações push conforme as notificações chegam
POST
/api/v1/notifications/dismissMarcar IDs de notificação como rejeitadas; filtradas de respostas GET subsequentes
DELETE
/api/v1/notifications/dismissLimpar estado rejeitado — restaurar notificações para visível

Ícones

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

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

GET
/api/v1/notifications/icons/{iconId}Buscar ícone de notificação (JPEG, PNG ou SVG) por ID de ícone único

Saúde e Métricas

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

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

GET
/api/v1/notifications/healthVerificação de saúde aprimorada — status do sistema de arquivos, WebSocket e memória
GET
/api/v1/notifications/metricsMétricas compatíveis com Prometheus para notificações enviadas, falhadas e CPU/memória
kit / notifications / cta

Notificações a Um HTTP POST de Distância.

Qualquer script, serviço ou automação que possa fazer uma requisição HTTP pode enviar uma notificação de desktop para o display do seu contêiner.

Ler a Documentação