{
  "protocolVersion": 2,
  "legacyProtocolVersion": 0,
  "clientMessageTypes": {
    "create": "create",
    "join": "join",
    "broadcast": "broadcast",
    "sendTo": "sendTo",
    "ping": "ping",
    "leave": "leave",
    "endSession": "endSession"
  },
  "serverMessageTypes": {
    "created": "created",
    "joined": "joined",
    "peerJoined": "peerJoined",
    "peerLeft": "peerLeft",
    "message": "message",
    "error": "error",
    "pong": "pong",
    "left": "left",
    "ended": "ended"
  },
  "errorCodes": {
    "rateLimited": "rate_limited",
    "invalidMessage": "invalid_message",
    "roomExists": "room_exists",
    "roomNotFound": "room_not_found",
    "roomFull": "room_full",
    "notInRoom": "not_in_room",
    "alreadyInRoom": "already_in_room",
    "peerIdUnavailable": "peer_id_unavailable",
    "protocolMismatch": "protocol_mismatch"
  },
  "limits": {
    "maxRoomSize": 8,
    "maxMessageSize": 65536,
    "maxSessionIdLength": 64,
    "maxPeerIdLength": 128
  },
  "idPattern": "^[A-Za-z0-9_-]+$"
}
