Skip to content

Chat Rooms

Endpoints for managing Matrix chat rooms.

Create Chat Room

Create a new chat room.

Endpoint

POST /api/auth/chat-room

Request

json
{
  "name": "Match Discussion",
  "topic": "Manchester United vs Liverpool",
  "event_id": 1,
  "is_private": false
}

Response

json
{
  "message": "Chat room created successfully",
  "data": {
    "room_id": "!abc123:matrix.server",
    "name": "Match Discussion",
    "topic": "Manchester United vs Liverpool",
    "event_id": 1,
    "creator_id": 1,
    "is_encrypted": false,
    "join_rule": "public"
  }
}

List Chat Rooms

Get a list of available chat rooms.

Endpoint

GET /api/auth/chat-rooms

Query Parameters

  • joined (optional) - Filter rooms user has joined (true/false)
  • event_id (optional) - Filter by associated event
  • search (optional) - Search by room name

Response

json
{
  "data": [
    {
      "room_id": "!abc123:matrix.server",
      "name": "Match Discussion",
      "topic": "Manchester United vs Liverpool",
      "event": {
        "id": 1,
        "home_team": "Manchester United",
        "away_team": "Liverpool",
        "start_time": "2024-01-15T15:00:00Z"
      },
      "member_count": 150,
      "is_joined": true,
      "is_encrypted": false,
      "last_activity": "2024-01-15T10:00:00Z"
    }
  ]
}

Join Chat Room

Join an existing chat room.

Endpoint

POST /api/auth/chat-rooms/{matrixRoomId}/join

Response

json
{
  "message": "Successfully joined chat room",
  "data": {
    "room_id": "!abc123:matrix.server",
    "membership": "join"
  }
}

Error Responses

  • 404 - Room not found
  • 403 - Not allowed to join (private room)
  • 409 - Already a member

Get Chat Room Member Stats

Get statistics about chat room members.

Endpoint

GET /api/auth/chat-rooms/{chatRoom}/member-stats

Response

json
{
  "data": {
    "total_members": 150,
    "active_members": 45,
    "predictions_made": 120,
    "team_distribution": {
      "manchester_united": 80,
      "liverpool": 50,
      "neutral": 20
    },
    "top_predictors": [
      {
        "user_id": 1,
        "username": "user123",
        "correct_predictions": 25,
        "accuracy": 0.75
      }
    ]
  }
}

Notes

  • Room IDs use Matrix format (!roomid:server)
  • Encrypted rooms require E2EE key setup
  • Public rooms can be joined without invitation