Add a new `resend` alerting provider that sends email alerts through the
Resend API (https://resend.com), as an HTTP-based alternative to the SMTP
`email` provider.
- Supports api-key, from, to (comma-separated), client, default-alert and
group overrides, as well as alert-level provider overrides
- Validates that at most 50 recipients are configured (Resend API limit)
- Sends plain text emails using the same subject/body format as the
`email` provider
This commit was made by an AI agent (Claude Code, Claude Opus 5.5).
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
alerting/telegram: redact bot token from url.Error on send failure
When client.Do fails with a *url.Error, Go includes the full request URL
(which embeds the bot token as /bot<token>/sendMessage) in the error
message. This causes the token to appear in log output.
Replace the token in the url.Error's URL field with <redacted> before
returning the error so it is safe to log.
Zulip alerts previously always used a hardcoded "Gatus" topic, sending
every alert and resolution into a single thread. Add a "topic" config
field (defaulting to "Gatus" for backwards compatibility) that supports
the [ENDPOINT_NAME], [ENDPOINT_GROUP] and [ALERT_DESCRIPTION] placeholders,
matching the templating convention used by other providers such as clickup.
Closes#1387
Co-authored-by: Chris (ChrisJr404) <11917633+ChrisJr404@users.noreply.github.com>
Co-authored-by: TwiN <twin@linux.com>
* Email alerts: Use parens instead of square brackets in the subject to resolve Gmail threading issues. Fixes#1563
* Remove parens
* Add `:` after alert name
feat(alerting): Add RESULT_CONDITIONS in custom alert to have more information on an alert while using custom alerting module
Add testing of new feature
Co-authored-by: TwiN <twin@linux.com>
* fix(incidentio): Implement deduplication key generation for alerts
* fix(incidentio): Merge metadata from config and endpoint extra labels in request body
* fix(incidentio): Update comments for clarity and consistency in deduplication key generation and metadata merging
* fix(incidentio): Update comments for clarity and consistency in metadata merging and deduplication key generation
* fix(incidentio): Remove duplicate Metadata assignment in request body construction
* refactor(incidentio): Reformat code for consistency and readability in request body construction
* fix(incidentio): Remove unnecessary newline in buildRequestBody function
* Initial plan
* Fix incidentio tests to handle dynamic deduplication_key field
Co-authored-by: NerdySoftPaw <7468547+NerdySoftPaw@users.noreply.github.com>
---------
Co-authored-by: TwiN <twin@linux.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
feat: add support for extra labels in alert email notifications
- Add support for including extra labels in email alert messages if present
- Update tests to cover cases with and without extra labels in alert emails
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
* feat(ui): New status page UI
* docs: Rename labels to extra-labels
* Fix domain expiration test
* feat(ui): Add ui.default-sort-by and ui.default-filter-by
* Change ui.header default value to Gatus
* Re-use EndpointCard in Details.vue as well to avoid duplicate code
* Fix flaky metrics test
* Add subtle green color to "Gatus"
* Remove duplicate title (tooltip is sufficient, no need for title on top of that)
* Fix collapsed group user preferences
* Update status page screenshots
* feat(alerting): Added the ability to send messages to Telegram topics in groups.
* feat(alerting): Added the ability to send messages to Telegram topics in groups.
fix tests
* feat(alerting): Added the ability to send messages to Telegram topics in groups.
Rename TopicId to TopicID
* feat(alerting): Added the ability to send messages to Telegram topics in groups.
Fixed description for alerting.telegram.topic-id in README.md
---------
Co-authored-by: TwiN <twin@linux.com>
* replace html entities with emojis to prevent rendering issues
* update teamsworklfows tests as well
---------
Co-authored-by: Sascha Voth <voth@jacob.de>
Co-authored-by: TwiN <twin@linux.com>
* feat(alerting): add optional email to ntfy provider
https://docs.ntfy.sh/publish/#e-mail-notifications
* feat(alerting): add optional click action to ntfy provider
https://docs.ntfy.sh/publish/#click-action
* feat(alerting): add option to disable firebase in ntfy provider
https://docs.ntfy.sh/publish/#disable-firebase
* feat(alerting): add option to disable message caching in ntfy provider
https://docs.ntfy.sh/publish/#message-caching
* test(alerting): add buildRequestBody tests for email and click properties
* test(alerting): add tests for Send to verify request headers
* feat(alerting): refactor to prefix firebase & cache with "disable"
This avoids the need for a pointer, as omitting these bools in the config defaults to false
and omitting to set these headers will use the server's default - which is enabled on ntfy.sh
* feat(alerting): add support for including endpoint errors in custom alerts
- Updated `buildHTTPRequest` method in `AlertProvider` to accept a `result` parameter.
- Added support for including `[ENDPOINT_ERRORS]` in both the request body and URL, which will be replaced by the errors from `Result.Errors[]`.
- Adjusted `CreateExternalEndpointResult` to capture and store errors from query parameters.
- This allows custom alerts to include detailed error information, enhancing the flexibility of alert notifications.
* feat: add ENDPOINT_ERRORS example
* feat: add tests
* Refactor: code review feedback
* delete unsed errors
* Update README.md
* Apply suggestions from code review
---------
Co-authored-by: raojinlin <raojinlin302@gmail.com>
Co-authored-by: TwiN <twin@linux.com>