Adam Jacob Muller
c79bd3610e
Address code review feedback
...
- FFmpegProfileController: Use RESTful routes for CRUD operations
- POST /api/ffmpeg/profiles (was /new)
- PUT /api/ffmpeg/profiles (was /update)
- DELETE /api/ffmpeg/profiles/{id} (was /api/ffmpeg/delete/{id})
- SmartCollectionController: Use RESTful routes
- POST /api/collections/smart (was /new)
- PUT /api/collections/smart (was /update)
- DELETE /api/collections/smart/{id} (was /delete/{id})
- Return NoContent() for DELETE instead of Ok()
- ScannerController: Remove redundant OpenAPI attributes since
controller has [ApiExplorerSettings(IgnoreApi = true)]
- MaintenanceController: Preserve backward compatibility
- Keep HttpGet for /gc endpoint
- Keep underscore in /empty_trash route
7 months ago
Adam Jacob Muller
89e78ffeb1
Update static OpenAPI specification with all 164 endpoints
...
Regenerate v1.json with complete API documentation:
- Expanded from 18 to 164 API paths
- File size increased from ~31KB to ~457KB
- Includes full schema definitions for all request/response types
API categories now documented:
- Blocks: groups, blocks, items management
- Channels: CRUD, streaming modes, playouts
- Collections: regular, smart, multi-collections
- Decos: watermarks, graphics, break content
- FFmpeg: profiles, presets
- Filler: presets management
- Libraries: local, Plex, Jellyfin, Emby
- Media: items, search, metadata
- Playouts: creation, scheduling, templates
- Playlists: groups, items, playback order
- Schedules: programs, items, filler configuration
- Scripted schedules: content, control, scheduling
- Search: queries, filters
- Templates: groups, items
- Watermarks: configuration, placement
Generated using runtime OpenAPI endpoint with 4GB memory allocation.
7 months ago
Adam Jacob Muller
95a4ec8de0
Configure OpenAPI for complex nested type schemas
...
Update Startup.cs OpenAPI configuration to handle deeply nested types:
- Add CreateSchemaReferenceId callback to use simple type names,
reducing schema complexity and improving readability
- Increase JsonSerializerOptions.MaxDepth to 256 to accommodate
complex nested ViewModels during schema generation
- Change OpenAPI endpoint path to /api/openapi/{documentName}.json
to avoid conflicts with static files in wwwroot/openapi/
These changes allow runtime OpenAPI generation to complete successfully
for all 164 API endpoints without hitting depth limits or memory issues.
Note: Runtime generation requires ~4GB RAM due to complex schema
processing. Static files are still served for production use.
7 months ago
Adam Jacob Muller
102959ed49
Update API controllers with flat DTOs and OpenAPI attributes
...
Refactor all API controllers to:
- Use flat API response DTOs instead of nested ViewModels
- Add [EndpointGroupName("general")] attributes for OpenAPI grouping
- Add [Tags] and [EndpointSummary] attributes for documentation
- Add mapping methods to convert ViewModels to flat DTOs
Controllers updated:
- BlockController: Use BlockItemApiResponse with inline mappings
- CollectionController: Use CollectionApiResponse, MultiCollectionApiResponse
- DecoController: Use DecoApiResponse with break content mappings
- PlaylistController: Use PlaylistItemApiResponse
- ScheduleController: Use ScheduleItemApiResponse with filler mappings
- TemplateController: Add OpenAPI attributes and request models
- ChannelController, ConfigController, EmbyController, FillerController,
JellyfinController, LibrariesController, MaintenanceController,
MediaController, PlayoutController, PlexController, ResolutionController,
ScannerController, ScriptedScheduleController, SearchController,
SessionController, SmartCollectionController, TraktController,
VersionController, WatermarkController: Add OpenAPI attributes
This enables complete OpenAPI schema generation without depth limit errors.
7 months ago
Adam Jacob Muller
e73598d63f
Add flat API response DTOs for OpenAPI schema generation
...
Create ApiResponseModels.cs with flat record types to replace complex
nested ViewModels in API responses. This resolves JSON schema depth
limit issues during OpenAPI generation.
New DTOs include:
- CollectionApiResponse, SmartCollectionApiResponse, MultiCollectionApiResponse
- BlockItemApiResponse, PlaylistItemApiResponse, ScheduleItemApiResponse
- WatermarkApiResponse, GraphicsElementApiResponse
- DecoApiResponse, DecoBreakContentApiResponse
- FillerPresetApiResponse, RerunCollectionApiResponse
- MediaItemApiResponse, PlaylistApiResponse
- PagedCollectionsApiResponse
These flat structures avoid inheritance hierarchies that cause the
OpenAPI schema generator to exceed MaxDepth limits.
7 months ago
Adam Jacob Muller
21effd129e
Fix route name conflict for CreatePlaylist
7 months ago
Adam Jacob Muller
220eb1b133
Add new API controllers
7 months ago
Jason Dove
0af81ad839
add target loudness to ffmpeg profile ( #2727 )
...
* add target loudness to ffmpeg profile
* fix filter
8 months ago
Jason Dove
2f0cd1eb6c
update dependencies ( #2726 )
8 months ago
Jason Dove
e4f1a93db0
fix some mysql migrations that failed on mariadb ( #2725 )
8 months ago
Jason Dove
6562d616fb
smart collection names must be case insensitive ( #2721 )
...
* smart collection names must be case insensitive
* use explicit ci collation for mysql
8 months ago
Jason Dove
d8122edad6
fix duplicate smart collection names ( #2720 )
...
* fix duplicate smart collection names
* fix update error
8 months ago
Jason Dove
99b8c56a31
rework fallback filler ( #2719 )
...
* fallback fixes
* use hardware encoding for fallback filler
* rework fallback filler
* fixes
8 months ago
Jason Dove
09858df654
fix case when cuda hw decode falls back to sw ( #2718 )
...
* fix case when cuda hw decode falls back to sw
* use a new filter
8 months ago
Jason Dove
038286c92b
use playlist item count when playlists are used as filler ( #2716 )
...
* use playlist item count when playlists are used as filler
* expand test
8 months ago
Jason Dove
8575ab5c32
fix bt2020 playback ( #2714 )
...
* fix bt2020 playback
* update pixel format
* update changelog
8 months ago
Jason Dove
8b768a2990
allow playlists to have no items included in epg ( #2713 )
8 months ago
Jason Dove
f9e4c4d386
improve build time by only running analyzers explicitly ( #2710 )
...
* improve build time by only running analyzers explicitly
* don't exclude scanner from analyzers
* Revert "don't exclude scanner from analyzers"
This reverts commit d927f9850a .
* fix sed syntax for linux
8 months ago
Jason Dove
a1f9b86fc1
add download media sample button to playback troubleshooting ( #2709 )
...
* add download media sample button to playback troubleshooting
* fixes
8 months ago
Jason Dove
5dc20ebd1b
use software pad with amd vaapi h264 main ( #2708 )
8 months ago
Jason Dove
d30e8b4102
only use packed headers with vaapi when supported by encoder ( #2706 )
8 months ago
Jason Dove
c14f373f23
implement rectangles packet for script element ( #2704 )
...
* implement rectangles packet for script element
* fixes
8 months ago
Jason Dove
a90fe26d50
script element packet spike ( #2703 )
...
* script element packet spike
* fixes
8 months ago
Jason Dove
7a263ddaed
add migration to fix any incorrect channel sort numbers ( #2701 )
8 months ago
Jason Dove
3e0a9aae1e
fix channel sort number when reordering channels ( #2700 )
...
* fix channel sort number when reordering channels
* tryparse
8 months ago
Jason Dove
72dc401829
fix chronological sorting for other videos ( #2699 )
8 months ago
Jason Dove
85e25ca6ea
add channel start time template data ( #2698 )
...
* add channel start time template data
* rename
8 months ago
Jason Dove
9c23b03758
fix mirror channels ( #2697 )
8 months ago
Jason Dove
e12888ebee
fix recent regression to subtitle graphics element ( #2696 )
8 months ago
Jason Dove
468ff087d4
fix loading epg entries for motion and script elements ( #2693 )
8 months ago
Jason Dove
54606c76f9
framerate improvements ( #2692 )
...
* framerate improvements
* fixes
8 months ago
Jason Dove
6bd49ffcec
add remote stream metadata ( #2690 )
...
* add remote stream metadata
* use ifilesystem for last write time
* clean up unused inheritance
* optimize channel data query
* revert removeartwork change
* properly handle remote stream artwork in orphaned artwork check
8 months ago
Jason Dove
c524bc0d7d
add script graphics element ( #2681 )
...
* add script graphics element
* pass template data as json to stdin
* update changelog
8 months ago
Jason Dove
42bcadf936
work around buggy radeonsi hevc_vaapi behavior ( #2680 )
...
* try to workaround amd crop metadata ffmpeg bug
* limit workaround to hevc_vaapi encoder
* update changelog
8 months ago
Jason Dove
1f31beab5b
fix plex other video library detection ( #2679 )
8 months ago
Jason Dove
b45c22092d
fix startup on systems unsupported by nvencsharp ( #2678 )
8 months ago
Jason Dove
7bd8cefe2e
more dotnet 10 updates ( #2676 )
...
* update more libraries to dotnet 10
* fix dockerfiles
* fix numeric types
8 months ago
Jason Dove
f101d0b366
prep for release v25.9.0 [no ci]
8 months ago
Jason Dove
73aabdabda
fix transcoding tests ( #2675 ) [no ci]
8 months ago
Jason Dove
bcea96d53a
always log scanner exit code when it is non-zero ( #2670 )
...
* always log scanner exit code when it is non-zero
* remove test abort
8 months ago
Jason Dove
d7952e4cfa
fix docker assets ( #2669 )
8 months ago
Jason Dove
758399e339
fix missing net9.0 to net10.0 in docker/github ( #2668 )
8 months ago
Jason Dove
6c635a4be9
upgrade to dotnet 10 ( #2667 )
...
* upgrade to dotnet 10
* remove packages that would be pruned
* properly fix tests
8 months ago
Jason Dove
9d637cdd54
update dependencies ( #2661 )
8 months ago
Jason Dove
cc287ffc6e
fix hls direct streams remaining open ( #2660 )
8 months ago
Jason Dove
371659c5c5
cache bust new logo ( #2659 )
8 months ago
Jason Dove
7afb1866ad
update logo ( #2658 )
8 months ago
Jason Dove
7bc1dd63fe
fix file system test on windows ( #2657 ) [no ci]
8 months ago
Jason Dove
076b8a7188
fix editing certain playouts when using mysql ( #2656 )
8 months ago
Jason Dove
ec0d8ea6ac
work around sequential schedule validation limit ( #2655 )
...
* remove readalltext
* remove unused method
* remove fileexists
* remove folderexists
* remove readalllines
* remove fake local file system
* show playlist name in playout build errors
* add basic sequential schedule validator tests
* work around sequential schedule validation limit
8 months ago