إشعارات سطح المكتب عبر HTTP.
أرسل إشعارات سطح مكتب Linux إلى أي عرض حاوية بـ HTTP POST واحد. يستدعي خادم الإشعارات notify-send على شاشة X11 للحاوية — أطلق إشعاراً أو اجلب السجل أو دفق مباشرةً.
# Send a notification to display 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"}'
# Response
{"success":true}
ثلاث خطوات. استدعاء HTTP واحد لكل منها.
كل إشعار يتبع نفس دورة الحياة: أطلقه، اجلب التاريخ أو ابثّ حياً، ارفضه. استدعاء HTTP واحد لكل خطوة.
إطلاق
يستدعي طلب POST إلى /notify الأمر notify-send على شاشة X11 المستهدفة. مرّر summary وdisplay، إضافةً إلى body وcategory وurgency وexpire_time وicon الاختيارية.
# Fire a notification
curl -X POST .../notify
{"display":"0",
"summary":"Build Complete",
"urgency":"normal"}
{"success":true}
التسليم
يُسلّم notify-send التنبيه إلى daemon الإشعارات في النظام على شاشة X11 المستهدَفة. يظهر في أي جلسة display متصلة وينتهي تلقائيًا حسب درجة إلحاحه وقيمة expire_time.
# notify-send on display :0
notify-send → X11 :0
▸ Build Complete
normal · auto-expires
جلب أو بث
GET /[display] retrieves notification history with optional limit, since, username, and session filters. Connect via WebSocket to /stream?displays=0 for real-time push updates.
# Poll history
curl .../0?limit=50
# Or stream live
new WebSocket(
"wss://.../stream?displays=0"
)
منخفض. عادي. حرج.
ثلاثة مستويات إلحاح تتوافق مباشرةً مع سلوك notify-send. اختر المناسب وتصرّف تلقائياً بناءً عليه.
يُرفَض سريعاً. اضبط expire_time: 3000 للمهام الخلفية وقياسات الأداء والمعلومات.
"urgency": "low",
"expire_time": 3000
قياسي. الافتراضي عند حذف urgency. برنامج الإشعارات يعرضه بالإعدادات الافتراضية.
"urgency": "normal"
// افتراضي — احذفه لاستخدام هذا
دائم — يتطلب الرفض اليدوي. اضبط expire_time: 0 لأعطال النظام والإجراءات التي تتطلب التدخل.
"urgency": "critical",
"expire_time": 0
اسحب التاريخ أو بثّه حياً.
قناتان للقراءة تخدمان احتياجات مختلفة: REST لسجلات التدقيق والاستعلامات الفردية، وSSE للتدفق الحي.
اسحب تاريخ الإشعارات لعرض. فلتر حسب الحد والطابع الزمني واسم المستخدم.
# احصل على آخر 50 للعرض 0
curl ".../0?limit=50"
# مُصفَّى حسب الوقت
curl ".../0?since=1749025000000"
مصفوفة JSON من كائنات الإشعارات مع id وsummary وurgency وtimestamp وicon.
اشترك في عرض واحد أو أكثر بـ displays=0,:1,2 أو displays=all. يستقبل إشعارات حية.
# فتح 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.
في أي مكان تحتاج عملية طويلة الأمد إلى الإشارة بالاكتمال أو الفشل، HTTP POST واحد يكفي.
تنبيهات CI/CD
تكتمل البنيات طويلة الأمد. HTTP POST يطلق إشعاراً على عرض الحاوية.
مراقبة النظام
تنبيهات الخادم تُوجَّه إلى إشعار سطح مكتب على عرض X11 للحاوية.
المهام طويلة الأمد
تصدير البيانات، تصيير الفيديو، تدريب نماذج ML، اكتمال النسخ الاحتياطي — أرسل إشعاراً عند الانتهاء.
سير العمل الآلي
مهام cron والمهام المجدولة وسكربتات الأتمتة ترسل إشعاراً لعرض الحاوية عند الاكتمال.
8 نقاط نهاية. خادم إشعارات واحد.
أطلق، اجلب، ابثّ مباشرةً، والرفض — بالإضافة إلى الأيقونات والمراقبة الصحية — كل ذلك عبر HTTP عادي.
الـ Base URL https://abc123-def456-n-1.node-us-1.containers.hoody.com
الإطلاق
1 نقطة نهايةPOST .../api/v1/notifications/notify
الجلب والبث
2 نقاط نهايةGET .../api/v1/notifications/{display}?limit=50
الأيقونات
1 نقطة نهايةGET .../api/v1/notifications/icons/{iconId}
الصحة والمقاييس
1 نقطة نهايةGET .../api/v1/notifications/health
الإشعارات على بُعد HTTP POST واحد.
أي سكربت أو خدمة أو أتمتة يمكنها إرسال طلب HTTP يمكنها إرسال إشعار سطح مكتب.