timothy
82f3a1e633
docs(api): document collection REST response codes
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m39s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m33s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Refs #35
2026-06-28 09:03:59 +02:00
timothy
fb3f2856da
feat(api): add collections REST endpoints
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 4m5s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m9s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Refs #35
2026-06-27 21:43:11 +02:00
timothy and Claude Opus 4.8
8f7d240fc8
feat(api): REST foundation + Channels CRUD ( #34 )
...
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 3m43s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 4m58s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 3m44s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m0s
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 3m41s
First slice of the REST API (ersatztv#2). Idiomatic REST over existing MediatR handlers; design in docs/rest-api.md.
Foundation: NotFoundError : BaseError (Core) to split 404 from 422; ApiResults mapping helpers (Either/Option -> 201+Location / 200 / 204 / 404 / 422), additive (existing *ToActionResult untouched); ApiKeyAuthorizationFilter (optional X-Api-Key on mutating actions, gated by Api:WriteKey, no-op when unset) — independent of the IPTV JWT toggle so Jellyfin/Dispatcharr reads are unaffected, applied at controller-class level so every mutating action incl. ResetPlayout is covered fail-safe.
Channels: POST /api/channels (201+Location), PUT/{id} (200/404), DELETE/{id} (204/404), GET/{id} (200/404). Request DTOs -> existing commands; responses reuse ChannelViewModel. Ported page-only validations into handlers (ShowInEpg-when-disabled, external-logo-URL, Group NotEmpty) + FFmpegProfile/Watermark/Filler existence on update for create-parity. Fixed a latent 500: the .Filter(c>0) existence pattern threw TaskCanceledException on not-found; rewritten to AnyAsync.
Tests (NUnit, TZ=UTC): handler success/404/422, ApiResults mapping, API-key filter, controller status/Location/mapping, a controller-security regression net, and a create->read->delete EF integration test on a new in-memory SQLite harness. ErsatzTV.Tests 46/46, Architecture 5/5.
Refs #34
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-27 15:51:06 +02:00
Jason Dove and GitHub
35d24ffea6
cleanup artwork cache folder ( #2779 )
...
* cleanup artwork cache folder
* fixes
* ignore watermarks that no longer exist on the file system
2026-01-16 13:38:31 -06:00
Jason Dove and GitHub
a1f9b86fc1
add download media sample button to playback troubleshooting ( #2709 )
...
* add download media sample button to playback troubleshooting
* fixes
2025-12-09 11:49:07 -06:00
Jason Dove and GitHub
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
2025-11-24 12:08:43 -06:00
Jason Dove and GitHub
42b35f7aae
add channel playback troubleshooter ( #2641 )
...
* fix motion graphics loop when seeking
* add channel playback troubleshooter
* fix errors
2025-11-12 13:21:18 -06:00
Jason Dove and GitHub
453737a521
add custom_title to start_epg_group ( #2599 )
2025-11-04 16:08:07 -06:00
Jason Dove and GitHub
626048f9c3
change how scanner and main process communicate ( #2555 )
...
* report scanner progress using api
* process scanner search index updates through api
* update changelog
* update dependencies
2025-10-21 15:08:49 -05:00
Jason Dove and GitHub
2ef2b0299a
switch back from fmp4 to ts segments ( #2554 )
...
* restore pts offset calculation
* use ts segments again
* update changelog
2025-10-21 12:17:05 -05:00
Jason Dove and GitHub
ffe15629cb
consolidate streaming modes ( #2544 )
...
* consolidate segmenters
* let old segmenter mode query params continue to work
2025-10-18 10:54:30 -05:00
Jason Dove and GitHub
f41f4b19d4
wait for two initial segments in playback troubleshooting ( #2532 )
2025-10-14 11:45:11 -05:00
Jason Dove and GitHub
7c2083d3f2
add playback troubleshooting speed indicator ( #2521 )
...
* more api fixes
* add playback troubleshooting speed indicator
2025-10-13 11:25:56 -05:00
Jason Dove and GitHub
b851a7daba
api changes for ffmpeg profiles ( #2520 )
2025-10-13 06:44:32 -05:00
Jason Dove and GitHub
48e7c85f7b
api changes to support etvcli ( #2519 )
2025-10-12 10:13:30 -05:00
Jason Dove and GitHub
144b3fe80b
fix remote stream durations in playouts ( #2515 )
2025-10-11 08:30:24 -05:00
Jason Dove and GitHub
5c174eabdb
add playback troubleshooting logs ( #2475 )
2025-10-01 16:29:04 -05:00
Jason Dove and GitHub
18905a79dc
add stream selector to playback troubleshooting ( #2474 )
2025-10-01 11:10:38 -05:00
Jason Dove and GitHub
b46de50801
add hls segmenter fmp4 streaming mode ( #2468 )
...
* add streaming mode segmenter fmp4
* allow hevc channel preview
2025-09-30 10:04:02 -05:00
Jason Dove and GitHub
ef5de99f9c
add create_playlist, pre_roll_on, pre_roll_off to scripted schedules ( #2387 )
2025-09-06 20:47:44 +00:00
Jason Dove and GitHub
e047812a68
rework some scripted schedule model names ( #2386 )
2025-09-06 18:52:34 +00:00
Jason Dove and GitHub
31355ab887
add pad_until_exact and wait_until_exact scripted schedule calls ( #2384 )
2025-09-06 15:43:07 +00:00
Jason Dove and GitHub
57e9b4d264
more api docs ( #2375 )
2025-09-04 18:00:48 +00:00
Jason Dove and GitHub
73b8d68a09
add existing api endpoints to scalar docs ( #2374 )
2025-09-04 16:36:26 +00:00
Jason Dove and GitHub
03921e1ff7
more docs reorganization ( #2373 )
2025-09-04 15:20:02 +00:00
Jason Dove and GitHub
70aae67873
reorganize scalar docs ( #2372 )
2025-09-04 14:59:17 +00:00
Jason Dove and GitHub
67cb931a47
fix verbs, add scalar docs ( #2371 )
2025-09-04 14:01:16 +00:00
Jason Dove and GitHub
704c1ec535
return context from scripted schedule api calls that modify the context ( #2370 )
2025-09-04 13:42:00 +00:00
Jason Dove and GitHub
03b4419f67
rework scripted schedules ( #2367 )
...
* start to reorganize scripted playout building
* add openapi
* add all content fns
* add playout instructions
* add control instructions
* add request models
* prevent build loop
* rename
* update changelog
* tweak changelog
2025-09-03 20:53:14 +00:00
Jason Dove and GitHub
51ec84c94a
fix block playout history regression ( #2343 )
...
* minor tweaks
* fix block change detection bug
* history cleanup cleanup
2025-08-25 16:09:20 +00:00
Jason Dove and GitHub
53f281ce32
add xmltv block behavior setting ( #2336 )
...
* replace playout externaljsonfile and templatefile with schedulefile
* add scripted schedule-based playout
* wip - not functional yet
* temp disable scripted playout creation
* allow fast-forwarding block playouts
* add xmltv block behavior setting
2025-08-23 20:16:12 +00:00
Jason Dove and GitHub
1e7f9a5709
fix saving yaml playout history ( #2327 )
...
* fix saving yaml playout history
* cleanup
2025-08-17 01:21:07 +00:00
Jason Dove and GitHub
5d081ceeff
fix editorconfig and run code cleanup ( #2324 )
...
* fix formatting rules
* reformat ersatztv
* reformat ersatztv.application
* reformat ersatztv.core
* refactor ersatztv.core.tests
* reformat ersatztv.ffmpeg
* reformat ersatztv.ffmpeg.tests
* reformat ersatztv.infrastructure
* cleanup infra mysql
* cleanup infra sqlite
* cleanup infra tests
* cleanup ersatztv.scanner
* cleanup ersatztv.scanner.tests
* sln cleanup
* update dependencies
2025-08-16 14:44:48 +00:00
d0af507bef
add ability to deep scan just a single tv show for Plex, Emby, and Jellyfin ( #2318 )
...
* add ability to deep scan just a single tv show for Plex, Emby, and Jellyfin
Including "/api/libraries/{id:int}/scan-show" REST API endpoint to
trigger.
* restrict plex search results to the intended library
* restrict scanning to media server libraries that are marked to sync with etv
* fix previous commit
* also guard library scan api
* add scan buttons to show ui
* scan single plex show by id
* scan jellyfin and emby single shows by id
* update changelog
---------
Co-authored-by: Jeff Slutter <MrMustard@gmail.com >
Co-authored-by: Jason Dove <1695733+jasongdove@users.noreply.github.com >
2025-08-14 16:07:56 +00:00
Jason Dove and GitHub
0841bc400b
fix saving watermarks and graphics on playout items ( #2313 )
2025-08-13 19:37:46 +00:00
Jason Dove and GitHub
91c4e8f575
add seek seconds to playback troubleshooting ( #2300 )
2025-08-11 18:10:36 +00:00
Jason Dove and GitHub
76a589b538
add text graphics element to playback troubleshooting ( #2282 )
...
* refactor graphics engine; async frame generation
* add text graphics element to playback troubleshooting
2025-08-08 19:18:15 +00:00
Jason Dove and GitHub
7ca2763109
allow multiple watermarks in playback troubleshooting ( #2280 )
2025-08-08 11:33:12 +00:00
Jason Dove and GitHub
f2b6f5b919
enable graphics engine in playback troubleshooting ( #2274 )
...
* enable graphics engine in playback troubleshooting
* fix text subtitles with graphics engine (watermarks)
2025-08-07 18:37:55 +00:00
Jason Dove and GitHub
1df9104854
add subtitle selection to playback troubleshooting ( #2215 )
2025-07-28 18:44:49 +00:00
Jason Dove and GitHub
626af6876b
add start from beginning option to playback troubleshooting ( #2182 )
2025-07-21 16:17:16 +00:00
Jason Dove and GitHub
223bdff8d6
playback troubleshooting improvements ( #2157 )
2025-07-17 14:53:11 +00:00
Jason Dove and GitHub
578cdb1e14
add playback troubleshooting tool ( #2155 )
...
* support media info for more content types
* add playback troubleshooting page
* reorganize playback troubleshooting
* fix watermarks and delay
* update changelog
2025-07-17 03:51:36 +00:00
Jason Dove and GitHub
7e30444857
dependencies and code cleanup ( #2117 )
...
* fix validation in new form layout
* pin mediatr to last oss version
* update dependencies
* cleanup code in core
* cleanup code in ffmpeg
* cleanup code in infra
* cleanup code in scanner
* cleanup code in application
* cleanup main code
* cleanup test code
* solution-wide code cleanup
2025-07-06 15:56:17 +00:00
Jason Dove and GitHub
100ae0adda
add api endpoint to empty trash ( #1988 )
2025-04-06 14:26:40 +00:00
Jason Dove and GitHub
5e0fb31069
add reset playout and scan library api endpoints ( #1833 )
...
* add api to reset playout
* add library scan api
* update changelog
2024-07-29 13:50:33 -05:00
Jason Dove and GitHub
087901d177
adjust block unique constraint ( #1634 )
...
* upgrade dependencies
* allow blocks with same name in different groups
* code cleanup
2024-03-05 10:39:06 -06:00
Jason Dove and GitHub
7fffc8cf63
channel preview player ( #1579 )
...
* add channel preview
* add button to stop transcoding session
2024-01-29 20:52:52 -06:00
Jason Dove and GitHub
18deff0b83
add session api endpoints ( #1578 )
2024-01-29 11:31:16 -06:00
Jason Dove and GitHub
e69c58e615
conditionally disable v2 apis ( #1135 )
...
* conditionally disable v2 apis
* update changelog
2023-01-25 11:37:43 -06:00