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.
# 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]
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.
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.
# Fire a notification
POST /notify
# Request body
["display":"0","summary":"Build Complete",
"urgency":"normal","body":"All tests passed"]
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.
# Poll history
curl ".../0?limit=50"
# Or open a WebSocket
new WebSocket("wss://.../stream?displays=0")
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.
# Dismiss by ID
POST /dismiss
["displayId":"0","notificationIds":[10,11,12]]
# Clear dismissed state
DELETE /dismiss?displayId=0
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.
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
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
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
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.
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.
# 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.
# 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.
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.
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}
Buscar e Transmitir
{count, plural, =1 {# endpoint} other {# endpoints}'}GET .../api/v1/notifications/{display}?limit=50&since=...
Ícones
{count, plural, =1 {# endpoint} other {# endpoints}'}GET .../api/v1/notifications/icons/{iconId} → image/png
Saúde e Métricas
{count, plural, =1 {# endpoint} other {# endpoints}'}GET .../api/v1/notifications/health → {"status":"UP"}
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.