aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Api/Controllers/ItemUpdateController.cs
AgeCommit message (Collapse)Author
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-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-17Merge pull request #17326 from theguymadmax/update-series-nameBond-009
Update season and episode SeriesName when renaming a series
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-13Update season and episode SeriesName when renaming a seriestheguymadmax
2026-07-06Allow SeriesName to be editable from Item Metadata (books)Jordan Rushing
2026-05-31Trim tagstheguymadmax
2026-05-07Add OriginalLanguage as option to PreferredAudioLanguage (#12579)Erik W
* Add OriginalLanguage as option to PreferredAudioLanguage * Support for multiple original languages * Add original audio stream indicator * Fetch OriginalLanguage from TMDB * Adapt to EFCore refactor * Fix PlayDefaultAudioTrack OriginalLanguage behavior * Fix better PlayDefaultAudioTrack OriginalLanguage behavior * Add comment to ItemFields * Improved PlayDefaultAudioTrack behavior * Add migration for original language * Use sting.Equals for string comparisons * Always set dto OriginalLanguage * Remove OriginalLanguage from ItemFields --------- Co-authored-by: Lampan-git <lampan-git@users.noreply.github.com>
2026-02-01Fix Genre UniquenessShadowghost
2026-02-01Only save unique values of ProductionLocations, Studios, Tags, Artists and ↵Shadowghost
AlbumArtists
2026-01-18Backport pull request #15808 from jellyfin/release-10.11.ztheguymadmax
Trim music artist names Original-merge: 093cfc3f3b72a6bea71cb96ced180a9ac257d537 Merged-by: crobibero <cody@robibe.ro> Backported-by: Bond_009 <bond.009@outlook.com>
2025-12-15Fix GET MetadataEditor ContentTypeOptions for inheritedContentTypeSmeagolWorms4
2025-07-30Further refinement of BCP 47 language labeling supportdyphire
2025-04-26Fix distinction queries (#14007)Tim Eisele
2024-11-16Update projects to .NET 9 (#13023)Bond-009
2024-06-01Backport pull request #11743 from jellyfin/release-10.9.zShadowghost
Fix replace logic Original-merge: 2ddb15c7845a944d980364209c2304f03cebf025 Merged-by: joshuaboniface <joshua@boniface.me> Backported-by: Joshua M. Boniface <joshua@boniface.me>
2024-04-30More efficient array creation (#11468)Bond-009
2024-04-21Fix InvalidCastException in ItemUpdateController (#11398)Niels van Velzen
2024-04-14Validate item access (#11171)Cody Robibero
2023-12-08Convert CollectionType to use lowercase enum namesCody Robibero
2023-11-12Move API policies to MediaBrowser.CommonPatrick Barron
2023-11-09Convert CollectionType, SpecialFolderType to enum (#9764)Cody Robibero
* Convert CollectionType, SpecialFolderType to enum * Hide internal enum CollectionType values * Apply suggestions from code review Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com> * Fix recent change * Update Jellyfin.Data/Attributes/OpenApiIgnoreEnumAttribute.cs Co-authored-by: Patrick Barron <barronpm@gmail.com> --------- Co-authored-by: Shadowghost <Shadowghost@users.noreply.github.com> Co-authored-by: Patrick Barron <barronpm@gmail.com>
2023-05-14Set removed and added tags recursivelyShadowghost
2023-03-10Save TVChannel Height if set (#8777)SenorSmartyPants
Co-authored-by: Cody Robibero <cody@robibe.ro>
2023-02-20Properly build where clause for rating checksShadowghost
2023-02-20Recursively update ratingShadowghost
2023-02-02Migrate to file-scoped namespacesShadowghost
2022-12-05Replace != null with is not nullBond_009
2022-12-05Replace == null with is nullBond_009
2021-10-03Fix warning: Type cast is redundant (#2149)KonH
2021-08-28Remove more and more warningsCody Robibero
2021-03-04Specify defaults or set query parameter to nullablecrobibero
2020-11-21Remove UTF8 bom from some filesBond_009
2020-09-09Remove nullable from requiredcrobibero
2020-09-06merge all attributescrobibero
2020-09-05Make all FromRoute requiredcrobibero
2020-08-21Make some methods asyncBond_009
2020-08-06Apply fixes from reviewcrobibero
2020-08-04Fix all route for base url supportcrobibero
2020-06-27Make all optional strings nullablecrobibero
2020-06-20Fix response code & docscrobibero
2020-06-20Fix response code & docscrobibero
2020-06-19remove #nullablecrobibero
2020-06-08Move ItemUpdateService to Jellyfin.Apicrobibero