diff --git a/SVSim.EmulatedEntrypoint/Controllers/CheckController.cs b/SVSim.EmulatedEntrypoint/Controllers/CheckController.cs index c957023..af89b3a 100644 --- a/SVSim.EmulatedEntrypoint/Controllers/CheckController.cs +++ b/SVSim.EmulatedEntrypoint/Controllers/CheckController.cs @@ -5,6 +5,7 @@ using SVSim.Database.Repositories.Viewer; using SVSim.EmulatedEntrypoint.Extensions; using SVSim.EmulatedEntrypoint.Models.Dtos; using SVSim.EmulatedEntrypoint.Models.Dtos.Requests; +using SVSim.EmulatedEntrypoint.Models.Dtos.Requests.Check; using SVSim.EmulatedEntrypoint.Models.Dtos.Responses; namespace SVSim.EmulatedEntrypoint.Controllers; @@ -67,4 +68,19 @@ public class CheckController : SVSimController KorAuthorityId = 0 }; } + + /// + /// Card-master rotation-period integrity probe. Wire path is + /// check/check_time_slip_card_master_hash but the client task is + /// CheckTimeSlipRotationPeriodTask — a pure BaseTask with no + /// Parse() override (Wizard/CheckTimeSlipRotationPeriodTask.cs). Fired from + /// DeckDecisionUI.cs:140 (Arena "View Deck" path) and the TK2 prep screen. + /// Prod responds with data: [] in every observed capture across + /// traffic_prod_taketwo_selections.ndjson + traffic_prod_tradeables_capture.ndjson. + /// + [HttpPost("check_time_slip_card_master_hash")] + public IActionResult CheckTimeSlipCardMasterHash([FromBody] CheckTimeSlipCardMasterHashRequest req) + { + return Ok(Array.Empty()); + } } diff --git a/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/Check/CheckTimeSlipCardMasterHashRequest.cs b/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/Check/CheckTimeSlipCardMasterHashRequest.cs new file mode 100644 index 0000000..71b88cc --- /dev/null +++ b/SVSim.EmulatedEntrypoint/Models/Dtos/Requests/Check/CheckTimeSlipCardMasterHashRequest.cs @@ -0,0 +1,12 @@ +using MessagePack; +using SVSim.EmulatedEntrypoint.Models.Dtos.Requests; + +namespace SVSim.EmulatedEntrypoint.Models.Dtos.Requests.Check; + +/// +/// Empty request envelope. Prod ships only the standard BaseRequest fields +/// (viewer_id / steam_id / steam_session_ticket) — verified in +/// traffic_prod_taketwo_selections.ndjson + traffic_prod_tradeables_capture.ndjson. +/// +[MessagePackObject] +public class CheckTimeSlipCardMasterHashRequest : BaseRequest { } diff --git a/SVSim.UnitTests/RoutingSmokeTests.cs b/SVSim.UnitTests/RoutingSmokeTests.cs index 8342fd3..88807e2 100644 --- a/SVSim.UnitTests/RoutingSmokeTests.cs +++ b/SVSim.UnitTests/RoutingSmokeTests.cs @@ -111,6 +111,7 @@ public class RoutingSmokeTests [TestCase("/arena_colosseum/get_fee_info")] [TestCase("/arena/get_challenge_info")] [TestCase("/arena/get_challenge_ranking_history")] + [TestCase("/check/check_time_slip_card_master_hash")] public async Task Authenticated_route_resolves(string path) { using var factory = new TestFactory();