From 67cb931a472a2ec9be59a4bc738a64e29388a1b2 Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Thu, 4 Sep 2025 09:01:16 -0500 Subject: [PATCH] fix verbs, add scalar docs (#2371) --- CHANGELOG.md | 1 + .../Api/ScriptedScheduleController.cs | 18 +++++++++--------- ErsatzTV/ErsatzTV.csproj | 1 + ErsatzTV/Startup.cs | 2 ++ 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d85d5973b..46e421211 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - For example, a `Scripted Schedule` of `/home/jason/schedule.sh "party central" 23` will be executed like - `/home/jason/schedule.sh http://localhost:8409 00000000-0000...0000 reset "party central" 23` - This enables wrapper script re-use across multiple scripted schedules + - API reference is available at `/scalar/scripted-schedule` ## [25.5.0] - 2025-09-01 ### Added diff --git a/ErsatzTV/Controllers/Api/ScriptedScheduleController.cs b/ErsatzTV/Controllers/Api/ScriptedScheduleController.cs index 1bb8b9f53..874fe26b9 100644 --- a/ErsatzTV/Controllers/Api/ScriptedScheduleController.cs +++ b/ErsatzTV/Controllers/Api/ScriptedScheduleController.cs @@ -302,7 +302,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return GetContextInternal(engine); } - [HttpGet("start_epg_group", Name = "StartEpgGroup")] + [HttpPost("start_epg_group", Name = "StartEpgGroup")] public IActionResult StartEpgGroup([FromRoute] Guid buildId, [FromBody] StartEpgGroupRequestModel request) { ISchedulingEngine engine = scriptedPlayoutBuilderService.GetEngine(buildId); @@ -315,7 +315,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("stop_epg_group", Name = "StopEpgGroup")] + [HttpPost("stop_epg_group", Name = "StopEpgGroup")] public IActionResult StopEpgGroup([FromRoute] Guid buildId) { ISchedulingEngine engine = scriptedPlayoutBuilderService.GetEngine(buildId); @@ -328,7 +328,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("graphics_on", Name = "GraphicsOn")] + [HttpPost("graphics_on", Name = "GraphicsOn")] public async Task GraphicsOn( [FromRoute] Guid buildId, @@ -346,7 +346,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("graphics_off", Name = "GraphicsOff")] + [HttpPost("graphics_off", Name = "GraphicsOff")] public async Task GraphicsOff( [FromRoute] Guid buildId, @@ -364,7 +364,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("watermark_on", Name = "WatermarkOn")] + [HttpPost("watermark_on", Name = "WatermarkOn")] public async Task WatermarkOn([FromRoute] Guid buildId, [FromBody] WatermarkOnRequestModel request) { ISchedulingEngine engine = scriptedPlayoutBuilderService.GetEngine(buildId); @@ -377,7 +377,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("watermark_off", Name = "WatermarkOff")] + [HttpPost("watermark_off", Name = "WatermarkOff")] public async Task WatermarkOff([FromRoute] Guid buildId, [FromBody] WatermarkOffRequestModel request) { ISchedulingEngine engine = scriptedPlayoutBuilderService.GetEngine(buildId); @@ -390,7 +390,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("skip_items", Name = "SkipItems")] + [HttpPost("skip_items", Name = "SkipItems")] public IActionResult SkipItems([FromRoute] Guid buildId, [FromBody] SkipItemsRequestModel request) { ISchedulingEngine engine = scriptedPlayoutBuilderService.GetEngine(buildId); @@ -403,7 +403,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("skip_to_item", Name = "SkipToItem")] + [HttpPost("skip_to_item", Name = "SkipToItem")] public IActionResult SkipToItem([FromRoute] Guid buildId, [FromBody] SkipToItemRequestModel request) { ISchedulingEngine engine = scriptedPlayoutBuilderService.GetEngine(buildId); @@ -416,7 +416,7 @@ public class ScriptedScheduleController(IScriptedPlayoutBuilderService scriptedP return Ok(); } - [HttpGet("wait_until", Name = "WaitUntil")] + [HttpPost("wait_until", Name = "WaitUntil")] public ActionResult WaitUntil( [FromRoute] Guid buildId, diff --git a/ErsatzTV/ErsatzTV.csproj b/ErsatzTV/ErsatzTV.csproj index 9c350e563..8ff500fa6 100644 --- a/ErsatzTV/ErsatzTV.csproj +++ b/ErsatzTV/ErsatzTV.csproj @@ -41,6 +41,7 @@ + diff --git a/ErsatzTV/Startup.cs b/ErsatzTV/Startup.cs index 7dbf6a89c..60fa56c12 100644 --- a/ErsatzTV/Startup.cs +++ b/ErsatzTV/Startup.cs @@ -93,6 +93,7 @@ using MudBlazor.Services; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Refit; +using Scalar.AspNetCore; using Serilog; using Serilog.Events; @@ -598,6 +599,7 @@ public class Startup endpoints.MapBlazorHub(); endpoints.MapFallbackToPage("/_Host"); endpoints.MapOpenApi().CacheOutput(); + endpoints.MapScalarApiReference(); }); });