diff --git a/views_api.py b/views_api.py index 1f24a87..7b28cde 100644 --- a/views_api.py +++ b/views_api.py @@ -24,6 +24,7 @@ from .models import ( CreateRoomData, Room, RoomStatus, + public_room_dict, ) from .nostr import service as nostr @@ -189,6 +190,27 @@ async def api_update_settings( return await crud.update_settings(settings) +# --- public guest discovery (no auth) -------------------------------------- + + +@chatelet_api_router.get("/api/v1/public/rooms") +async def api_public_rooms() -> list[dict]: + """Active rooms for guest browsing — operator-private fields stripped.""" + return [ + public_room_dict(r) + for r in await crud.get_rooms() + if r.status == RoomStatus.active + ] + + +@chatelet_api_router.get("/api/v1/public/rooms/{room_id}") +async def api_public_room(room_id: str) -> dict: + room = await crud.get_room(room_id) + if not room or room.status != RoomStatus.active: + raise HTTPException(404, "Room not available") + return public_room_dict(room) + + # --- availability (public read) --------------------------------------------