Records the one presenter a Slideshow user chose - character, placement and voice.
PUT and not PATCH: the whole choice replaces the previous one, the same way UpdateOutlineScene replaces a scene's editable state. 404 also covers "this session is not a slideshow session you may write a presenter to" only in the sense that the FEATURE is off - a Context session that exists answers 422, because refusing it explicitly is the point (see SetSlideshowPresenter's mode guard).
422 also covers the write the STORE refused - the session was deleted, or stopped being a Slideshow, between the handler's read and the patch. One status for both because the repository reports one bool for both, and 404 would be a claim about which.
GATED ON DeckToSlideshow AT THE ENDPOINT. The controller used to carry a class-level ScriptAssistant gate as well (removed once that flag was fully rolled out); UnleashFeatureGateFilter requires ALL gates on an endpoint to pass, so stacking a controller gate back on top stays safe. Pinned by UnleashFeatureGateFilterTests.
It has to be here and not only in the handler. An action filter short-circuits before the action body runs, so it precedes MediatR entirely; the handler's check runs INSIDE the pipeline, after ValidatorBehavior has already rejected a malformed body with a 422 and run the validator's tenant and character lookups. With the flag off this endpoint must not exist, and "does not exist" cannot be something a caller discovers only after passing validation. The handler keeps its own check all the same - it is the backstop for any non-HTTP caller of the command, and the only one a handler unit test can see.
Request
- Base URLhttps://api.wearelearning.io (the document declares no server; this is the origin it was published from)
- AuthOAuth 2Implicit: https://login.wearelearning.io/authorize?audience=https://api.wearelearning.io
Path parameters
Request body
Response
OK
Changes
No recorded changes to this operation across all 1 revision of this API.