games

Game Take Seat

Join a game that is already running, if it has a free seat.

A teacher who fans a game out to the breakouts is deliberately not seated in any of them: they are outside every room at that moment, and seating an absent person would hand somebody the first turn who is not there. But the teacher then hops INTO a room, and until now there was no way back in. They watched a game they had started and could not play (Nancy, 2026-08-31).

Canasta's own start endpoint has always done this, idempotently, for exactly this reason. This is the same act for the shared engine, said once rather than hidden inside "start".

Not restricted to the host. Anyone in the room may take an empty seat: a student who joined late is in the same position and the seat is either free or it is not.

Plain def, and it takes the row lock: two people reaching for the last seat at the same instant must not both get it. See game_state above for why async def around this lock is how canasta froze the server.

post/chatrooms/{room_name}/games/take-seat

Path parameters

room_namestring required

Headers

authorizationstring nullable

Response

Successful Response

{"stackTrail":"paths:/chatrooms/{room_name}/games/take-seat:post:responses:200:content:application/json:schema","oasType":"schema","type":"unknown"}

Changes

No changes recorded. 1 of the 25 revisions has no diff computed, so it could not be searched.