* feat(integrations): add Gotify notifications integration Closes #4186 > "It would be really useful if Homarr could integrate with Gotify — > view notifications from Gotify right inside the Homarr dashboard, > maybe as a widget or a small panel. A widget that displays the latest > messages from Gotify (with title, message, time)." > — #4186: feat: Gotify Integration - display notifications in Homarr - `gotify/gotify-schema.ts` — Zod schema validating the `GET /message` API response from the Gotify server, including id, date, title, message body, and optional priority fields. - `gotify/gotify-integration.ts` — `GotifyIntegration` class extending the base `Integration` and implementing `INotificationsIntegration`. Authenticates via HTTP Basic Auth (username + password) and fetches the latest 100 messages from the `/message` endpoint. Connection testing hits `/health`. - `index.ts` — exports `GotifyIntegration` from the package public API. - `base/creator.ts` — registers `GotifyIntegration` in the integration creator map so it can be instantiated at runtime. - `integration.ts` — registers the `gotify` integration definition with: - `secretKinds: [["username", "password"]]` (Basic Auth credentials) - `category: ["notifications"]` (picked up automatically by the Notifications widget via `getIntegrationKindsByCategory`) - Icon sourced from `homarr-labs/dashboard-icons` - Documentation URL pointing to `/docs/integrations/gotify` - `docs/homarr-docs-sitemap.ts` — adds `/docs/integrations/gotify` to the `HomarrDocumentationPath` union type so the documentation link passes the TypeScript path validation check. Because `gotify` is registered under the `notifications` category, the existing Notifications widget automatically supports it with no widget code changes required. Users add the integration via Settings → Integrations, supply their Gotify server URL, username, and password, then attach it to a Notifications widget on any board. * refactor(integrations): inline json parse and add error handling in Gotify integration Address PR review feedback: remove intermediate `as unknown` cast by inlining response.json() directly, and use safeParseAsync to handle deserialization failures gracefully instead of throwing unhandled.
390 lines
12 KiB
TypeScript
390 lines
12 KiB
TypeScript
// This file is auto-generated by the codegen script
|
|
// it uses the sitemap.xml to generate the HomarrDocumentationPath type
|
|
export type HomarrDocumentationPath =
|
|
| "/about-us"
|
|
| "/api-reference"
|
|
| "/blog"
|
|
| "/blog/2023/01/11/version0.11"
|
|
| "/blog/2023/04/16/version0.12-more-widgets"
|
|
| "/blog/2023/11/10/authentication"
|
|
| "/blog/2023/12/22/updated-documentation"
|
|
| "/blog/2024/09/23/version-1.0"
|
|
| "/blog/2024/12/17/open-beta-1.0"
|
|
| "/blog/2025/01/19/migration-guide-1.0"
|
|
| "/blog/2025/08/02/using-argus"
|
|
| "/blog/archive"
|
|
| "/blog/authors"
|
|
| "/blog/authors/ajnart"
|
|
| "/blog/authors/manuel-rw"
|
|
| "/blog/authors/meierschlumpf"
|
|
| "/blog/authors/tagashi"
|
|
| "/blog/authors/walkx"
|
|
| "/blog/documentation-migration"
|
|
| "/blog/tags"
|
|
| "/blog/tags/authentication"
|
|
| "/blog/tags/breaking-changes"
|
|
| "/blog/tags/contributions"
|
|
| "/blog/tags/design"
|
|
| "/blog/tags/dnd"
|
|
| "/blog/tags/docs"
|
|
| "/blog/tags/documentation"
|
|
| "/blog/tags/gridstack"
|
|
| "/blog/tags/homarr"
|
|
| "/blog/tags/migration"
|
|
| "/blog/tags/notepad"
|
|
| "/blog/tags/security"
|
|
| "/blog/tags/translations"
|
|
| "/blog/tags/update"
|
|
| "/blog/tags/version"
|
|
| "/blog/translations"
|
|
| "/carbon-test"
|
|
| "/search"
|
|
| "/docs/tags"
|
|
| "/docs/tags/active-directory"
|
|
| "/docs/tags/administration"
|
|
| "/docs/tags/advanced"
|
|
| "/docs/tags/ai"
|
|
| "/docs/tags/analytics"
|
|
| "/docs/tags/api"
|
|
| "/docs/tags/apps"
|
|
| "/docs/tags/automation"
|
|
| "/docs/tags/background"
|
|
| "/docs/tags/backup"
|
|
| "/docs/tags/boards"
|
|
| "/docs/tags/bookmarks"
|
|
| "/docs/tags/caddy"
|
|
| "/docs/tags/certificates"
|
|
| "/docs/tags/code"
|
|
| "/docs/tags/community"
|
|
| "/docs/tags/configuration"
|
|
| "/docs/tags/connections"
|
|
| "/docs/tags/custom-widgets"
|
|
| "/docs/tags/customization"
|
|
| "/docs/tags/data-sources"
|
|
| "/docs/tags/data"
|
|
| "/docs/tags/database"
|
|
| "/docs/tags/developer"
|
|
| "/docs/tags/development"
|
|
| "/docs/tags/docker"
|
|
| "/docs/tags/donation"
|
|
| "/docs/tags/edit-mode"
|
|
| "/docs/tags/env"
|
|
| "/docs/tags/environment-variables"
|
|
| "/docs/tags/getting-started"
|
|
| "/docs/tags/google"
|
|
| "/docs/tags/groups"
|
|
| "/docs/tags/help"
|
|
| "/docs/tags/icon-picker"
|
|
| "/docs/tags/icon-repositories"
|
|
| "/docs/tags/icons"
|
|
| "/docs/tags/installation"
|
|
| "/docs/tags/integration"
|
|
| "/docs/tags/integrations"
|
|
| "/docs/tags/interface"
|
|
| "/docs/tags/jobs"
|
|
| "/docs/tags/jsx"
|
|
| "/docs/tags/layout"
|
|
| "/docs/tags/ldap"
|
|
| "/docs/tags/management"
|
|
| "/docs/tags/mcp"
|
|
| "/docs/tags/media"
|
|
| "/docs/tags/oidc"
|
|
| "/docs/tags/open-collective"
|
|
| "/docs/tags/permissions"
|
|
| "/docs/tags/pgid"
|
|
| "/docs/tags/ping"
|
|
| "/docs/tags/programming"
|
|
| "/docs/tags/proxy"
|
|
| "/docs/tags/puid"
|
|
| "/docs/tags/redis"
|
|
| "/docs/tags/responsive"
|
|
| "/docs/tags/restore"
|
|
| "/docs/tags/roles"
|
|
| "/docs/tags/search-engines"
|
|
| "/docs/tags/search"
|
|
| "/docs/tags/secrets"
|
|
| "/docs/tags/security"
|
|
| "/docs/tags/self-signed"
|
|
| "/docs/tags/seo"
|
|
| "/docs/tags/server"
|
|
| "/docs/tags/settings"
|
|
| "/docs/tags/sq-lite"
|
|
| "/docs/tags/sso"
|
|
| "/docs/tags/tasks"
|
|
| "/docs/tags/technical-documentation"
|
|
| "/docs/tags/traefik"
|
|
| "/docs/tags/translations"
|
|
| "/docs/tags/unraid"
|
|
| "/docs/tags/uploads"
|
|
| "/docs/tags/users"
|
|
| "/docs/tags/variables"
|
|
| "/docs/tags/widgets"
|
|
| "/docs/advanced/command-line"
|
|
| "/docs/advanced/command-line/fix-usernames"
|
|
| "/docs/advanced/command-line/integrations"
|
|
| "/docs/advanced/command-line/password-recovery"
|
|
| "/docs/advanced/command-line/users"
|
|
| "/docs/advanced/development/getting-started"
|
|
| "/docs/advanced/development/kubernetes"
|
|
| "/docs/advanced/environment-variables"
|
|
| "/docs/advanced/icons"
|
|
| "/docs/advanced/keyboard-shortcuts"
|
|
| "/docs/advanced/proxy"
|
|
| "/docs/advanced/running-as-different-user"
|
|
| "/docs/advanced/single-sign-on"
|
|
| "/docs/advanced/styling"
|
|
| "/docs/category/advanced"
|
|
| "/docs/category/community"
|
|
| "/docs/category/developer-guides"
|
|
| "/docs/category/getting-started"
|
|
| "/docs/category/installation-1"
|
|
| "/docs/category/installation"
|
|
| "/docs/category/integrations"
|
|
| "/docs/category/management"
|
|
| "/docs/category/widgets"
|
|
| "/docs/community/donate"
|
|
| "/docs/community/faq"
|
|
| "/docs/community/get-in-touch"
|
|
| "/docs/community/license"
|
|
| "/docs/community/translations"
|
|
| "/docs/getting-started"
|
|
| "/docs/getting-started/after-the-installation"
|
|
| "/docs/getting-started/glossary"
|
|
| "/docs/getting-started/installation/docker"
|
|
| "/docs/getting-started/installation/easy-panel"
|
|
| "/docs/getting-started/installation/helm"
|
|
| "/docs/getting-started/installation/home-assistant"
|
|
| "/docs/getting-started/installation/pika-pods"
|
|
| "/docs/getting-started/installation/portainer"
|
|
| "/docs/getting-started/installation/proxmox"
|
|
| "/docs/getting-started/installation/qnap"
|
|
| "/docs/getting-started/installation/railway"
|
|
| "/docs/getting-started/installation/runtipi"
|
|
| "/docs/getting-started/installation/saltbox"
|
|
| "/docs/getting-started/installation/source"
|
|
| "/docs/getting-started/installation/synology"
|
|
| "/docs/getting-started/installation/unraid"
|
|
| "/docs/integrations/adguard-home"
|
|
| "/docs/integrations/anchor"
|
|
| "/docs/integrations/aria2"
|
|
| "/docs/integrations/audiobookshelf"
|
|
| "/docs/integrations/beszel"
|
|
| "/docs/integrations/codeberg"
|
|
| "/docs/integrations/coolify"
|
|
| "/docs/integrations/dash-dot"
|
|
| "/docs/integrations/deluge"
|
|
| "/docs/integrations/docker-hub"
|
|
| "/docs/integrations/docker"
|
|
| "/docs/integrations/emby"
|
|
| "/docs/integrations/github-containerregistry"
|
|
| "/docs/integrations/github"
|
|
| "/docs/integrations/gotify"
|
|
| "/docs/integrations/gitlab"
|
|
| "/docs/integrations/glances"
|
|
| "/docs/integrations/home-assistant"
|
|
| "/docs/integrations/ical"
|
|
| "/docs/integrations/immich"
|
|
| "/docs/integrations/jellyfin"
|
|
| "/docs/integrations/jellyseerr"
|
|
| "/docs/integrations/kubernetes"
|
|
| "/docs/integrations/lidarr"
|
|
| "/docs/integrations/linux-server-io"
|
|
| "/docs/integrations/navidrome"
|
|
| "/docs/integrations/nextcloud"
|
|
| "/docs/integrations/npm"
|
|
| "/docs/integrations/ntfy"
|
|
| "/docs/integrations/nzbget"
|
|
| "/docs/integrations/open-media-vault"
|
|
| "/docs/integrations/opnsense"
|
|
| "/docs/integrations/overseerr"
|
|
| "/docs/integrations/paperless-ngx"
|
|
| "/docs/integrations/peanut"
|
|
| "/docs/integrations/pi-hole"
|
|
| "/docs/integrations/plex"
|
|
| "/docs/integrations/prowlarr"
|
|
| "/docs/integrations/proxmox"
|
|
| "/docs/integrations/q-bittorent"
|
|
| "/docs/integrations/quay"
|
|
| "/docs/integrations/radarr"
|
|
| "/docs/integrations/readarr"
|
|
| "/docs/integrations/sabnzbd"
|
|
| "/docs/integrations/search-ch"
|
|
| "/docs/integrations/seerr"
|
|
| "/docs/integrations/slskd"
|
|
| "/docs/integrations/sonarr"
|
|
| "/docs/integrations/speedtest-tracker"
|
|
| "/docs/integrations/tdarr"
|
|
| "/docs/integrations/technitium-dns"
|
|
| "/docs/integrations/tracearr"
|
|
| "/docs/integrations/transmission"
|
|
| "/docs/integrations/truenas"
|
|
| "/docs/integrations/umami"
|
|
| "/docs/integrations/unifi-controller"
|
|
| "/docs/integrations/unraid"
|
|
| "/docs/integrations/uptime-kuma"
|
|
| "/docs/management/api"
|
|
| "/docs/management/apps"
|
|
| "/docs/management/backup"
|
|
| "/docs/management/boards"
|
|
| "/docs/management/certificates"
|
|
| "/docs/management/custom-widgets"
|
|
| "/docs/management/integrations"
|
|
| "/docs/management/mcp"
|
|
| "/docs/management/media"
|
|
| "/docs/management/search-engines"
|
|
| "/docs/management/settings"
|
|
| "/docs/management/tasks"
|
|
| "/docs/management/tools/backup"
|
|
| "/docs/management/users"
|
|
| "/docs/widgets/anchor-note"
|
|
| "/docs/widgets/app"
|
|
| "/docs/widgets/audio-stats"
|
|
| "/docs/widgets/beszel-alerts"
|
|
| "/docs/widgets/beszel-system-grid"
|
|
| "/docs/widgets/beszel-system-stats"
|
|
| "/docs/widgets/beszel-system-table"
|
|
| "/docs/widgets/bookmarks"
|
|
| "/docs/widgets/calendar"
|
|
| "/docs/widgets/clock"
|
|
| "/docs/widgets/coolify"
|
|
| "/docs/widgets/custom-api"
|
|
| "/docs/widgets/dns-hole-controls"
|
|
| "/docs/widgets/dns-hole-summary"
|
|
| "/docs/widgets/docker-containers"
|
|
| "/docs/widgets/downloads"
|
|
| "/docs/widgets/firewall"
|
|
| "/docs/widgets/health-monitoring"
|
|
| "/docs/widgets/iframe"
|
|
| "/docs/widgets/immich-album-carousel"
|
|
| "/docs/widgets/immich-server-stats"
|
|
| "/docs/widgets/indexer-manager"
|
|
| "/docs/widgets/media-releases"
|
|
| "/docs/widgets/media-request-list"
|
|
| "/docs/widgets/media-request-stats"
|
|
| "/docs/widgets/media-server"
|
|
| "/docs/widgets/media-transcoding"
|
|
| "/docs/widgets/minecraft-server-status"
|
|
| "/docs/widgets/network-controller-status"
|
|
| "/docs/widgets/network-controller-summary"
|
|
| "/docs/widgets/notebook"
|
|
| "/docs/widgets/notifications"
|
|
| "/docs/widgets/paperless-ngx"
|
|
| "/docs/widgets/releases"
|
|
| "/docs/widgets/rss-feed"
|
|
| "/docs/widgets/smart-home-entity-state"
|
|
| "/docs/widgets/smart-home-execute-automation"
|
|
| "/docs/widgets/speedtest-tracker"
|
|
| "/docs/widgets/stock-price"
|
|
| "/docs/widgets/system-resources"
|
|
| "/docs/widgets/timetable"
|
|
| "/docs/widgets/tracearr"
|
|
| "/docs/widgets/umami"
|
|
| "/docs/widgets/ups"
|
|
| "/docs/widgets/uptime-kuma"
|
|
| "/docs/widgets/video"
|
|
| "/docs/widgets/weather"
|
|
| ""
|
|
| "/sitemap.xml"
|
|
| "/docs/integrations/sabnzbd"
|
|
| "/docs/integrations/nzbget"
|
|
| "/docs/integrations/deluge"
|
|
| "/docs/integrations/transmission"
|
|
| "/docs/integrations/q-bittorent"
|
|
| "/docs/integrations/aria2"
|
|
| "/docs/integrations/slskd"
|
|
| "/docs/integrations/sonarr"
|
|
| "/docs/integrations/radarr"
|
|
| "/docs/integrations/lidarr"
|
|
| "/docs/integrations/readarr"
|
|
| "/docs/integrations/prowlarr"
|
|
| "/docs/integrations/jellyfin"
|
|
| "/docs/integrations/emby"
|
|
| "/docs/integrations/plex"
|
|
| "/docs/integrations/jellyseerr"
|
|
| "/docs/integrations/seerr"
|
|
| "/docs/integrations/overseerr"
|
|
| "/docs/integrations/pi-hole"
|
|
| "/docs/integrations/adguard-home"
|
|
| "/docs/integrations/technitium-dns"
|
|
| "/docs/integrations/home-assistant"
|
|
| "/docs/integrations/open-media-vault"
|
|
| "/docs/integrations/dash-dot"
|
|
| "/docs/integrations/glances"
|
|
| "/docs/integrations/tdarr"
|
|
| "/docs/integrations/proxmox"
|
|
| "/docs/integrations/nextcloud"
|
|
| "/docs/integrations/unifi-controller"
|
|
| "/docs/integrations/opnsense"
|
|
| "/docs/integrations/github"
|
|
| "/docs/integrations/docker-hub"
|
|
| "/docs/integrations/gitlab"
|
|
| "/docs/integrations/npm"
|
|
| "/docs/integrations/codeberg"
|
|
| "/docs/integrations/linux-server-io"
|
|
| "/docs/integrations/github-containerregistry"
|
|
| "/docs/integrations/quay"
|
|
| "/docs/integrations/ntfy"
|
|
| "/docs/integrations/ical"
|
|
| "/docs/integrations/anchor"
|
|
| "/docs/integrations/truenas"
|
|
| "/docs/integrations/unraid"
|
|
| "/docs/integrations/coolify"
|
|
| "/docs/integrations/search-ch"
|
|
| "/docs/integrations/immich"
|
|
| "/docs/integrations/paperless-ngx"
|
|
| "/docs/integrations/tracearr"
|
|
| "/docs/integrations/speedtest-tracker"
|
|
| "/docs/integrations/uptime-kuma"
|
|
| "/docs/integrations/audiobookshelf"
|
|
| "/docs/integrations/navidrome"
|
|
| "/docs/integrations/umami"
|
|
| "/docs/integrations/peanut"
|
|
| "/docs/integrations/beszel"
|
|
| "/docs/widgets/clock"
|
|
| "/docs/widgets/weather"
|
|
| "/docs/widgets/app"
|
|
| "/docs/widgets/iframe"
|
|
| "/docs/widgets/video"
|
|
| "/docs/widgets/notebook"
|
|
| "/docs/widgets/anchor-note"
|
|
| "/docs/widgets/dns-hole-summary"
|
|
| "/docs/widgets/dns-hole-controls"
|
|
| "/docs/widgets/smart-home-entity-state"
|
|
| "/docs/widgets/smart-home-execute-automation"
|
|
| "/docs/widgets/stock-price"
|
|
| "/docs/widgets/media-server"
|
|
| "/docs/widgets/calendar"
|
|
| "/docs/widgets/downloads"
|
|
| "/docs/widgets/media-request-list"
|
|
| "/docs/widgets/media-request-stats"
|
|
| "/docs/widgets/media-transcoding"
|
|
| "/docs/widgets/minecraft-server-status"
|
|
| "/docs/widgets/network-controller-summary"
|
|
| "/docs/widgets/network-controller-status"
|
|
| "/docs/widgets/rss-feed"
|
|
| "/docs/widgets/bookmarks"
|
|
| "/docs/widgets/indexer-manager"
|
|
| "/docs/widgets/health-monitoring"
|
|
| "/docs/widgets/releases"
|
|
| "/docs/widgets/media-releases"
|
|
| "/docs/widgets/docker-containers"
|
|
| "/docs/widgets/firewall"
|
|
| "/docs/widgets/notifications"
|
|
| "/docs/widgets/system-resources"
|
|
| "/docs/widgets/coolify"
|
|
| "/docs/widgets/timetable"
|
|
| "/docs/widgets/immich-server-stats"
|
|
| "/docs/widgets/immich-album-carousel"
|
|
| "/docs/widgets/paperless-ngx"
|
|
| "/docs/widgets/tracearr"
|
|
| "/docs/widgets/speedtest-tracker"
|
|
| "/docs/widgets/uptime-kuma"
|
|
| "/docs/widgets/audio-stats"
|
|
| "/docs/widgets/umami"
|
|
| "/docs/widgets/ups"
|
|
| "/docs/widgets/beszel-system-table"
|
|
| "/docs/widgets/beszel-system-grid"
|
|
| "/docs/widgets/beszel-alerts"
|
|
| "/docs/widgets/beszel-system-stats"
|
|
| "/docs/widgets/custom-api";
|