aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers
AgeCommit message (Collapse)Author
5 daysMerge remote-tracking branch 'upstream/master' into fix-byname-queriesShadowghost
5 daysMerge pull request #17298 from WizardOfYendor1/fix/livetv-published-stream-urlsCody Robibero
Fix Live TV returning unreachable "server-local" streaming URLs to clients.
6 daysMerge remote-tracking branch 'upstream/master' into fix-byname-queriesShadowghost
# Conflicts: # src/Jellyfin.Database/Jellyfin.Database.Providers.Sqlite/Migrations/JellyfinDbModelSnapshot.cs
6 daysMerge pull request #17501 from alchemyyy/fix/skip-sidx-fmp4-hlsCody Robibero
Skip SIDX in fMP4 HLS segments
7 daysSkip SIDX in fMP4 HLS segmentsalchemyyy
Prevent FFmpeg's SIDX path from rewriting open-GOP boundary packet timestamps. HLS uses the media playlist for segment indexing and does not require the SIDX box.
10 daysRestrict people, genres, studios and artists to names backed by an item the ↵Shadowghost
user can access
11 daysQueue person metadata refresh instead of blocking the item request and fix ↵Shadowghost
ItemCounts
2026-07-21Merge pull request #16980 from ↵Cody Robibero
TheMelmacian/feature/library_specific_language_filter_values Improve language filters to only fetch language codes that match the requested items/libraries (follow up to #9787)
2026-07-21Merge pull request #17370 from zerafachris/fix/item-update-null-optional-fieldsCody Robibero
fix: don't throw ArgumentNullException on partial UpdateItem payloads (#17366)
2026-07-21Merge pull request #17369 from Shadowghost/harden-startup-wizardCody Robibero
Prevent unauthenticated re-run of the startup wizard on misconfiguration
2026-07-21Make ItemUpdateController.UpdateItem internal instead of reflectionzerafachris
Addresses review feedback from @Bond-009 on PR #17370: the test helper InvokeUpdateItem was invoking the private UpdateItem(BaseItemDto, BaseItem) method via reflection. Jellyfin.Api.csproj already grants InternalsVisibleTo("Jellyfin.Api.Tests"), so the method is changed to internal and the test now calls it directly, removing the GetMethod/Invoke boilerplate. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21Merge remote-tracking branch 'upstream/master' into ↵Shadowghost
security-path-traversal-fixes # Conflicts: # Jellyfin.Api/Controllers/HlsSegmentController.cs # Jellyfin.Api/Controllers/PluginsController.cs
2026-07-20Merge pull request #17324 from damienmeur/refactor/generic-getorderbyCody Robibero
Make RequestHelpers.GetOrderBy generic and reuse it in ActivityLogController
2026-07-18fix code styleTheMelmacian
2026-07-17Merge pull request #17326 from theguymadmax/update-series-nameBond-009
Update season and episode SeriesName when renaming a series
2026-07-17Merge pull request #17280 from Shadowghost/remove-image-override-hackBond-009
Remove episode image override hack
2026-07-17Merge pull request #17191 from IDisposable/fix/handler-path-traversalBond-009
Fix path transversal exposure in Plugins
2026-07-17fix: don't throw ArgumentNullException on partial UpdateItem payloads (#17366)zerafachris
BaseItemDto.Genres, .Tags, and .ProviderIds are plain auto-properties with no default initializer, so they deserialize to null when a client omits them from a partial POST /Items/{itemId} body. The OpenAPI spec documents every BaseItemDto field as optional, but ItemUpdateController.UpdateItem fed these three properties straight into Distinct()/Select()/ToList() without a null check, so a request that (for example) only sets Tags throws ArgumentNullException("source") once it reaches the unguarded Genres line, before Tags is even processed. Guard all three assignments with the same "if (request.X is not null)" pattern already used for the neighboring Studios/Taglines/ProductionLocations fields in this method, so omitted fields are left unchanged instead of crashing the request. Adds ItemUpdateControllerTests covering the reported repro (only Tags supplied) and a companion case asserting existing Genres/ProviderIds are preserved when omitted from the payload. Signed-off-by: zerafachris <christopher.zerafa@blocklabs.io>
2026-07-17Prevent unauthenticated re-run of the startup wizard on misconfigurationShadowghost
2026-07-17Harden remaining path-construction sinks against traversalShadowghost
2026-07-16Revert setting default BaseItemKind for CollectionTypetheguymadmax
2026-07-13Update season and episode SeriesName when renaming a seriestheguymadmax
2026-07-14Make RequestHelpers.GetOrderBy generic and reuse it in ActivityLogControllerDamien Meur
2026-07-13Apply review suggestionsTheMelmacian
2026-07-10Resolve Live TV client stream URLs per requestWizardOfYendor1
2026-07-09Cleanup PreferEpisodeParentPoster)Shadowghost
2026-07-06Allow SeriesName to be editable from Item Metadata (books)Jordan Rushing
2026-07-05Merge pull request #17238 from iderex/fix/dateparse-format-providerCody Robibero
Use InvariantCulture when parsing machine-generated dates
2026-07-05Merge pull request #17044 from Shadowghost/version-model-and-handlingCody Robibero
Fixes for multi version handling
2026-07-04Use InvariantCulture when parsing machine-generated datesNils Lehnen
DateTime.TryParse without an IFormatProvider falls back to the current thread culture, so the same string can parse differently (or fail) depending on the server's locale. None of these call sites deal with user-entered text - they parse dates that come from filenames, an HTTP header, ffprobe metadata and values the app itself wrote to the auth database - so InvariantCulture is the correct provider everywhere here. Fixes the S6580 / CA1305 warnings on these call sites. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02Fix review commentsShadowghost
2026-06-29Merge pull request #15954 from IDisposable/fix/booksBond-009
Fix Book collections speed issues
2026-06-28Add testsMarc Brooks
Also fixed a sibling directory that matches the prefix.
2026-06-26Fix path transversal exposure in PluginsMarc Brooks
The request path is not validated to a valid path and could allow escaping the transcode path and downloading of any arbitrary file in GetHlsPlaylistLegacy . GetHlsAudioSegmentLegacy and GetHlsVideoSegmentLegacy have the same issue, and are NOT behind an Authorize so they are publicly exploitable. Added a ValidateTranscodePath that verifies that requested file paths start with the transcode path setting. Also ensure that all filename comparisons are OrdinalIgnoreCase because we might be running on a filesystem where filename-casing doesn't have to match. Switched from InvariantCulture because the underlying OS filename comparisons are always byte-wise (with case insensitivity here). Fixed a similar issue in GetPluginImage
2026-06-26Fix Book collections scanning all itemsMarc Brooks
Added static method GetBaseItemKindsForCollectionType in ItemsController (moved from ContentFolderImageProvider to be shared) Added AudioBook to GetRepresentativeItemTypes for CollectionType.books for consistency Added GetBooks to GetUserItems for CollectionType.books which gets BaseItemKind.Book and BaseItemKind.AudioBook Move GetBaseItemKindsForCollectionType to DtoExtensions Cleaned up the missing null checks and used new collection expressions. Associate Person to Book and AudioBook for related items.
2026-06-23Use Convert.ToHexStringLower for Schedules Direct password hashBreno Alvim
2026-06-21Merge pull request #17094 from ↵Bond-009
moontwister/fix/trailers-nullref-controllercontext-17065 Deprecate the redundant /Trailers endpoint
2026-06-19Deprecate the redundant /Trailers endpointdanne
GET /Trailers is a thin alias for GET /Items with includeItemTypes=Trailer; it just forwards to the injected ItemsController. Per the PR review the agreed direction is to deprecate it rather than keep maintaining the delegation. Mark the action [Obsolete] so it is flagged as deprecated in the OpenAPI spec; clients should use the GetItems operation with includeItemTypes=Trailer instead. Re #17065
2026-06-13Always apply recursive when filters are requestedShadowghost
2026-06-10Merge remote-tracking branch 'upstream/master' into version-model-and-handlingShadowghost
2026-06-07Include owned items when querying items endpointShadowghost
2026-06-07Keep the queried item's media source as the playback defaultShadowghost
2026-06-07Make resume queries version-awareShadowghost
2026-06-07Merge pull request #16121 from Shadowghost/search-rebasedBond-009
Implement search providers
2026-06-07Apply suggestions from code reviewTim Eisele
Co-authored-by: Bond-009 <bond.009@outlook.com>
2026-06-03Enforce parental filtering on additional endpointsShadowghost
2026-06-03Merge pull request #16999 from Shadowghost/fix-recursiveBond-009
Only default recursive to true if we have includeItemTypes
2026-06-02Merge pull request #16994 from theguymadmax/trim-tagsBond-009
Trim tags
2026-06-01Merge pull request #16967 from Shadowghost/fix-recently-added-postersBond-009
Fix recently added episode links and posters
2026-06-01Only default recursive to true if we have includeItemTypesShadowghost