{"id":13590152,"url":"https://github.com/jellyfin/jellyfin-plugin-webhook","last_synced_at":"2025-04-04T06:09:47.558Z","repository":{"id":37483506,"uuid":"294811423","full_name":"jellyfin/jellyfin-plugin-webhook","owner":"jellyfin","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-26T18:17:43.000Z","size":318,"stargazers_count":149,"open_issues_count":79,"forks_count":47,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-10-30T00:00:38.453Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jellyfin.png","metadata":{"funding":{"open_collective":"jellyfin"},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-11T21:01:57.000Z","updated_at":"2024-10-26T18:17:02.000Z","dependencies_parsed_at":"2023-10-12T07:16:17.594Z","dependency_job_id":"47c5516a-7a6b-4c9a-82d0-d8268e4ef320","html_url":"https://github.com/jellyfin/jellyfin-plugin-webhook","commit_stats":{"total_commits":177,"total_committers":25,"mean_commits":7.08,"dds":0.5593220338983051,"last_synced_commit":"f613b552efc73ba975ef933289dfd7c925069263"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-plugin-webhook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-plugin-webhook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-plugin-webhook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jellyfin%2Fjellyfin-plugin-webhook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jellyfin","download_url":"https://codeload.github.com/jellyfin/jellyfin-plugin-webhook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246741315,"owners_count":20826104,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest"],"created_at":"2024-08-01T16:00:40.301Z","updated_at":"2025-04-04T06:09:47.487Z","avatar_url":"https://github.com/jellyfin.png","language":"C#","funding_links":["https://opencollective.com/jellyfin"],"categories":["C# #"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eJellyfin Webhook Plugin\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003ePart of the \u003ca href=\"https://jellyfin.org\"\u003eJellyfin Project\u003c/a\u003e\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Plugin Banner\" src=\"https://raw.githubusercontent.com/jellyfin/jellyfin-ux/master/plugins/SVG/jellyfin-plugin-webhook.svg?sanitize=true\"/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin-plugin-webhook/actions?query=workflow%3A%22Test+Build+Plugin%22\"\u003e\n\u003cimg alt=\"GitHub Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/jellyfin/jellyfin-plugin-webhook/.github/workflows/test.yaml?branch=main\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin-plugin-webhook\"\u003e\n\u003cimg alt=\"GPLv3 License\" src=\"https://img.shields.io/github/license/jellyfin/jellyfin-plugin-webhook.svg\"/\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/jellyfin/jellyfin-plugin-webhook/releases\"\u003e\n\u003cimg alt=\"Current Release\" src=\"https://img.shields.io/github/release/jellyfin/jellyfin-plugin-webhook.svg\"/\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n## Debugging:\n#### My webhook isn't working!\nChange your `logging.json` file to output `debug` logs for `Jellyfin.Plugin.Webhook`. Make sure to add a comma to the end of `\"System\": \"Warning\"`\n```diff\n{\n    \"Serilog\": {\n        \"MinimumLevel\": {\n            \"Default\": \"Information\",\n            \"Override\": {\n                \"Microsoft\": \"Warning\",\n                \"System\": \"Warning\",\n+               \"Jellyfin.Plugin.Webhook\": \"Debug\"\n            }\n        }\n\n```\n\n\n## Documentation:\nUse [Handlebars](https://handlebarsjs.com/guide/) templating engine to format notifications however you wish.\n\nSee [Templates](Jellyfin.Plugin.Webhook/Templates) for sample templates.\n\n#### Helpers:\n\n- if_equals\n    - if first parameter equals second parameter case insensitive\n- if_exist\n    - if the value of the parameter is not null or empty\n- link_to\n    - wrap the $url and $text in an `\u003ca\u003e` tag\n- url_encode\n    - encode the given text to url-encoded format (useful for including text with spaces in urls)\n\n#### Variables:\n\n- Every Notifier: Server\n    - ServerId\n        - Server ID\n    - ServerName\n        - Server name\n    - ServerVersion\n        - `$major.$minor.$build`\n    - ServerUrl\n        - Server url\n    - NotificationType\n        - The [NotificationType](Jellyfin.Plugin.Webhook/Destinations/NotificationType.cs)\n\n- Every Notifier: User\n    - NotificationUsername\n        - Current user name\n    - Username\n        - Current user name\n    - UserId\n        - User ID\n    - LastLoginDate\n        - Last user login date\n    - LastActivityDate\n        - Last user activity date\n\n- Every Notifier: Device\n    - DeviceName\n        - Playback device name\n    - DeviceId\n        - Playback device ID\n\n- Every Notifier: Client\n    - ClientName\n        - Playback client name\n    - Client\n        - Playback client name\n    - RemoteEndPoint \n        - IP Address of client\n        \n- BaseItem:\n    - Timestamp\n        - Current server time local\n    - UtcTimestamp\n        - Current server time utc\n    - Name\n        - Item name\n    - Overview\n        - Item overview\n    - Tagline\n        - Item tagline\n    - ItemId\n        - Item id\n    - ItemType\n        - \"Movie\" \"Episode\" \"Season\" \"Series\" \"Album\" \"Song\"\n    - RunTimeTicks\n        - The media runtime, in [Ticks](https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks)\n    - RunTime\n        - The media runtime, as `hh:mm:ss`\n    - Year\n        - Item production year\n    - PremiereDate\n        - Item premiere year\n    - Genres\n        - item Genre\n    - AspectRatio\n        - Item aspect ratio\n    - MediaSourceId\n        - The media source id\n    - Provider_{providerId_lowercase}\n        - \"Provider_tvdb\" \"Provider_tmdb\" \"Provider_imdb\"\n\n- BaseItem: Season\n    - SeriesName\n        - TV series name\n    - Year\n        - Season production year\n    - SeriesId\n        - Season Series ID\n    - SeriesPremiereDate\n        - Series premiere date\n    - SeasonNumber\n        - Series number - direct format\n    - SeasonNumber00\n        - Series number - padded 00\n    - SeasonNumber000\n        - Series number - padded 000\n\n- BaseItem: Episode\n    - EpisodeNumber\n        - Episode number - direct format\n    - EpisodeNumber00\n        - Episode number - padded 00\n    - EpisodeNumber000 -\n        - Episode number - padded 000\n    - EpisodeNumberEnd\n        - Episode number end - direct format\n    - EpisodeNumberEnd00\n        - Episode number end - padded 00\n    - EpisodeNumberEnd000\n        - Episode number end - padded 000\n    - AirTime\n        - Episode series airtime\n    - Year\n        - Episode production year\n\n- BaseItem: Audio\n    - Album\n        - Audio album\n    - Artist\n        - Audio artist\n    - Year\n        - Audio production year\n\n- BaseItem: Album\n    - Artist\n        - Album artist\n    - Year\n        - Album production year\n\n- Playback\n    - PlaybackPositionTicks\n        - The current playback position, in [Ticks](https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks)\n    - PlaybackPosition\n        - The current playback position, as `hh:mm:ss`\n    - PlayMethod\n        - \"Transcode\" \"DirectStream\" \"DirectPlay\"\n    - PlayedToCompletion\n        - `true/false`, Only when `NotificationType == PlaybackStop`\n    - IsPaused\n        - If playback is paused\n    - IsAutomated\n        - If notification is automated, or user triggered\n    - Likes\n        - likes\n    - Rating\n        - rating\n    - PlayCount\n        - Total playcount\n    - Favorite\n        - Favorite\n    - Played\n        - Completely played\n    - AudioStreamIndex\n        - Audio stream index\n    - SubtitleStreamIndex\n        - Subtitle stream index\n    - LastPlayedDate\n        - Last played date\n\n- Audio info\n    - Audio_0_Title\n        - Display title\n    - Audio_0_Type\n        - Audio type\n    - Audio_0_Language\n        - Audio language\n    - Audio_0_Codec\n        - Audio codec\n    - Audio_0_Channels\n        - Number of audio channels\n    - Audio_0_Bitrate\n        - Audio bitrate\n    - Audio_0_SampleRate\n        - Audio samplerate\n    - Audio_0_Default\n        - default audio\n\n- Video info\n    - Video_0_Title\n        - Display title\n    - Video_0_Type\n        - Video type\n    - Video_0_Codec\n        - Video codec\n    - Video_0_Profile\n        - Video profile\n    - Video_0_Level\n        - Video level\n    - Video_0_Height\n        - Video height\n    - Video_0_Width\n        - Video width\n    - Video_0_AspectRatio\n        - Video aspect ratio\n    - Video_0_Interlaced\n        - Video interlaced\n    - Video_0_FrameRate\n        - Video framerate\n    - Video_0_VideoRange\n        - Video video range\n    - Video_0_ColorSpace\n        - Video color space\n    - Video_0_ColorTransfer\n        - Video color transfer\n    - Video_0_ColorPrimaries\n        - Video color primaries\n    - Video_0_PixelFormat\n        - Video pixel format\n    - Video_0_RefFrames\n        - Video ref frames\n\n- Subtitle info\n    - Subtitle_0_Title\n        - Subtitle title\n    - Subtitle_0_Type\n        - Subtitle type\n    - Subtitle_0_Language\n        - Subtitle language\n    - Subtitle_0_Codec\n        - Subtitle codec\n    - Subtitle_0_Default\n        - Default subtitle\n    - Subtitle_0_Forced\n        - Forced subtitle\n    - Subtitle_0_External\n        - External subtitle\n\n- Plugin info\n    - PluginId\n        - Plugin ID\n    - PluginName\n        - Plugin name\n    - PluginVersion\n        - Plugin version\n    - PluginChangelog\n        - Plugin Cchangelog\n    - PluginChecksum\n        - Plugin checksum\n    - PluginSourceUrl\n        - Plugin source URL\n\n#### Destination Specific:\n\n- Discord\n    - MentionType\n    - EmbedColor\n    - AvatarUrl\n    - BotUsername\n- Gotify\n    - Priority\n- Pushbullet\n- Pushover\n    - Token\n    - UserToken\n    - Device\n    - Title\n    - MessageUrl\n    - MessageUrlTitle\n    - MessagePriority\n    - NotificationSound\n- SMTP\n- Slack\n    - BotUsername\n    - SlackIconUrl\n\nFuture events can be created\nfrom https://github.com/jellyfin/jellyfin/blob/master/Jellyfin.Server.Implementations/Events/EventingServiceCollectionExtensions.cs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjellyfin%2Fjellyfin-plugin-webhook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjellyfin%2Fjellyfin-plugin-webhook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjellyfin%2Fjellyfin-plugin-webhook/lists"}