Files
coder/coderd/database/migrations/000368_add_custom_notifications.up.sql
T
Susana Ferreira eec6c8c120 feat: support custom notifications (#19751)
## Description

Adds support for sending an ad‑hoc custom notification to the
authenticated user via API and CLI. This is useful for surfacing the
result of scripts or long‑running tasks. Notifications are delivered
through the configured method and the dashboard Inbox, respecting
existing preferences and delivery settings.

## Changes

* New notification template: “Custom Notification” with a label for a
custom title and a custom message.
* New API endpoint: `POST /api/v2/notifications/custom` to send a custom
notification to the requesting user.
* New API endpoint: `GET /notifications/templates/custom` to get custom
notification template.
* New CLI subcommand: `coder notifications custom <title> <message>` to
send a custom notification to the requesting user.
* Documentation updates: Add a “Custom notifications” section under
Administration > Monitoring > Notifications, including instructions on
sending custom notifications and examples of when to use them.

Closes: https://github.com/coder/coder/issues/19611
2025-09-11 15:08:57 +02:00

39 lines
1015 B
SQL

-- Create new enum with 'custom' value
CREATE TYPE new_notification_template_kind AS ENUM (
'system',
'custom'
);
-- Update the notification_templates table to use new enum
ALTER TABLE notification_templates
ALTER COLUMN kind DROP DEFAULT,
ALTER COLUMN kind TYPE new_notification_template_kind USING (kind::text::new_notification_template_kind),
ALTER COLUMN kind SET DEFAULT 'system'::new_notification_template_kind;
-- Drop old enum and rename new one
DROP TYPE notification_template_kind;
ALTER TYPE new_notification_template_kind RENAME TO notification_template_kind;
-- Insert new Custom Notification template with 'custom' kind
INSERT INTO notification_templates (
id,
name,
title_template,
body_template,
actions,
"group",
method,
kind,
enabled_by_default
) VALUES (
'39b1e189-c857-4b0c-877a-511144c18516',
'Custom Notification',
'{{.Labels.custom_title}}',
'{{.Labels.custom_message}}',
'[]',
'Custom Events',
NULL,
'custom'::notification_template_kind,
true
);