コンテンツにスキップ
コンテナディスプレイ通知
WebSocketストリーミング
通知履歴
緊急度レベル
カスタムアイコン
自動有効期限
カテゴライズ
POST /notify
コンテナディスプレイ通知
WebSocketストリーミング
通知履歴
緊急度レベル
カスタムアイコン
自動有効期限
カテゴライズ
POST /notify
コンテナディスプレイ通知
WebSocketストリーミング
通知履歴
緊急度レベル
カスタムアイコン
自動有効期限
カテゴライズ
POST /notify
コンテナディスプレイ通知
WebSocketストリーミング
通知履歴
緊急度レベル
カスタムアイコン
自動有効期限
カテゴライズ
POST /notify
NotificationsHoody通知

HTTP経由のデスクトップ通知。

1回のHTTP POSTで任意のコンテナディスプレイにLinuxデスクトップ通知を送信。通知サービスがX11ディスプレイを管理します。

notify · hoody-n

# ディスプレイ0に通知を送信

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"}'

# レスポンス

{"success":true}

仕組み

3ステップ。各1回のHTTPコール。

すべての通知は同じライフサイクルに従います:トリガー、履歴のフェッチまたはストリーム、終了。

01

トリガー

POST /notifyがターゲットX11ディスプレイにnotify-sendコールを送信。ディスプレイ、サマリー、緊急度などを指定。

通知 — トリガー

# Fire a notification

curl -X POST .../notify

{"display":"0",

"summary":"Build Complete",

"urgency":"normal"}

 

{"success":true}

02

配信

notify-send が、対象の X11 ディスプレイ上のシステム通知デーモンにアラートを渡します。接続中のどのディスプレイセッションにも表示され、urgency と expire_time に応じて自動的に消えます。

notifications — deliver

# notify-send on display :0

notify-send → X11 :0

 

▸ Build Complete

normal · auto-expires

02

フェッチまたはストリーム

GET /[display]は通知履歴をlimit、since、username、severityフィルターでオプション付きで取得。

通知 — フェッチ

# Poll history

curl .../0?limit=50

 

# Or stream live

new WebSocket(

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

)

緊急度レベル

低。通常。緊急。

3つの緊急度レベルはnotify-sendの動作に直接マップ。適切なものを選ぶと通知は正しく動作します。

low

素早く消えます。バックグラウンドタスクや情報メッセージにはexpire_time: 3000を設定。

"urgency": "low",

"expire_time": 3000

normal

標準。緊急度省略時のデフォルト。通知デーモンが設定された時間表示します。

"urgency": "normal"

// default — omit to use this

critical

手動で却下するまで表示。システム障害やビルドエラーにはexpire_time: 0を設定。

"urgency": "critical",

"expire_time": 0

チャンネル

履歴をフェッチまたはライブストリーム。

2つの読み取りチャンネルが異なるニーズに対応:REST監査ログと一時的クエリ用、WebSocketリアルタイムサブスクリプション用。

GETGET /[display]フェッチ
WSWS /streamストリーム

ディスプレイの通知履歴を取得。limit、sinceタイムスタンプ、username、severityでフィルター。

履歴を取得

# ディスプレイ0の最後の50件を取得

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

# 時間でフィルター

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

id、summary、urgency、timestamp、icon_urlを含む通知オブジェクトのJSON配列。

displays=0,:1,2またはdisplays=allで1つ以上のディスプレイにサブスクライブ。新しい通知ごとにプッシュメッセージを受信。

ライブストリーム

# WebSocketを開く

const ws = new WebSocket(

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

)

# メッセージ受信時

ws.onmessage = (e) => {

const msg = JSON.parse(e.data)

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

}

新しい通知ごとに[ type: "notification", data: [ id, summary, urgency, timestamp ] ]がプッシュされます。

ユースケース

ビルドパイプラインからMLジョブまで。

長時間実行プロセスが完了または失敗をシグナルする必要がある場合、1回のHTTP POSTで十分です。

CI/CDアラート

長時間のビルドが完了。HTTP POSTがコンテナディスプレイに通知をトリガー — ブラウザのどこからでも確認可能。

システムモニタリング

サーバーアラートがコンテナのX11ディスプレイのデスクトップ通知にルーティングされ、ブラウザウィンドウで表示。

長時間タスク

データエクスポート、動画レンダリング、MLモデルトレーニング、バックアップ完了 — 完了時に通知。

自動化ワークフロー

Cronジョブ、スケジュールタスク、自動化スクリプトが完了時にコンテナディスプレイに通知。

APIリファレンス

8エンドポイント。1つの通知サーバー。

トリガー、取得、ストリーム、却下デスクトップ通知 — アイコンとヘルスモニタリング — すべてプレーンHTTPで。

ベース URL https://abc123-def456-n-1.node-us-1.containers.hoody.com

トリガー

1 エンドポイント

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

POST
/api/v1/notifications/notifynotify-send 経由で、対象のディスプレイに新しいデスクトップ通知を表示

取得 & ストリーム

2 エンドポイント

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

GET
/api/v1/notifications/{display}指定した 1 つ以上のディスプレイの通知を取得
WS
/api/v1/notifications/stream?displays=0,1WebSocket 接続によるリアルタイムの通知ストリーム

アイコン

1 エンドポイント

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

GET
/api/v1/notifications/icons/{iconId}アイコン ID で通知アイコンを取得

ヘルス & メトリクス

1 エンドポイント

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

GET
/api/v1/notifications/health通知サーバーのサービスヘルスチェック

通知は1回のHTTP POSTで。

HTTPリクエストを送れるすべてのスクリプト、サービス、自動化がデスクトップ通知を送信できます。

ドキュメントを読む