Skip to main content

TachyonCommand

Struct TachyonCommand 

Source
pub struct TachyonCommand {
Show 159 fields pub subtype_0: Option<AutohostAddPlayerRequest>, pub subtype_1: Option<AutohostAddPlayerResponse>, pub subtype_2: Option<AutohostInstallEngineRequest>, pub subtype_3: Option<AutohostInstallEngineResponse>, pub subtype_4: Option<AutohostKickPlayerRequest>, pub subtype_5: Option<AutohostKickPlayerResponse>, pub subtype_6: Option<AutohostKillRequest>, pub subtype_7: Option<AutohostKillResponse>, pub subtype_8: Option<AutohostMutePlayerRequest>, pub subtype_9: Option<AutohostMutePlayerResponse>, pub subtype_10: Option<AutohostSendCommandRequest>, pub subtype_11: Option<AutohostSendCommandResponse>, pub subtype_12: Option<AutohostSendMessageRequest>, pub subtype_13: Option<AutohostSendMessageResponse>, pub subtype_14: Option<AutohostSpecPlayersRequest>, pub subtype_15: Option<AutohostSpecPlayersResponse>, pub subtype_16: Option<AutohostStartRequest>, pub subtype_17: Option<AutohostStartResponse>, pub subtype_18: Option<AutohostStatusEvent>, pub subtype_19: Option<AutohostSubscribeUpdatesRequest>, pub subtype_20: Option<AutohostSubscribeUpdatesResponse>, pub subtype_21: Option<AutohostUpdateEvent>, pub subtype_22: Option<BattleStartRequest>, pub subtype_23: Option<BattleStartResponse>, pub subtype_24: Option<ClanAcceptRequest>, pub subtype_25: Option<ClanAcceptResponse>, pub subtype_26: Option<ClanCancelRequest>, pub subtype_27: Option<ClanCancelResponse>, pub subtype_28: Option<ClanCreateRequest>, pub subtype_29: Option<ClanCreateResponse>, pub subtype_30: Option<ClanDeclineRequest>, pub subtype_31: Option<ClanDeclineResponse>, pub subtype_32: Option<ClanDeleteRequest>, pub subtype_33: Option<ClanDeleteResponse>, pub subtype_34: Option<ClanDeletedEvent>, pub subtype_35: Option<ClanInviteRequest>, pub subtype_36: Option<ClanInviteResponse>, pub subtype_37: Option<ClanInvitedEvent>, pub subtype_38: Option<ClanKickRequest>, pub subtype_39: Option<ClanKickResponse>, pub subtype_40: Option<ClanKickedEvent>, pub subtype_41: Option<ClanLeaveRequest>, pub subtype_42: Option<ClanLeaveResponse>, pub subtype_43: Option<ClanRoleChangedEvent>, pub subtype_44: Option<ClanSetRoleRequest>, pub subtype_45: Option<ClanSetRoleResponse>, pub subtype_46: Option<ClanUpdateRequest>, pub subtype_47: Option<ClanUpdateResponse>, pub subtype_48: Option<ClanUpdatedEvent>, pub subtype_49: Option<ClanViewRequest>, pub subtype_50: Option<ClanViewResponse>, pub subtype_51: Option<ClanViewListRequest>, pub subtype_52: Option<ClanViewListResponse>, pub subtype_53: Option<FriendAcceptRequestRequest>, pub subtype_54: Option<FriendAcceptRequestResponse>, pub subtype_55: Option<FriendCancelRequestRequest>, pub subtype_56: Option<FriendCancelRequestResponse>, pub subtype_57: Option<FriendListRequest>, pub subtype_58: Option<FriendListResponse>, pub subtype_59: Option<FriendRejectRequestRequest>, pub subtype_60: Option<FriendRejectRequestResponse>, pub subtype_61: Option<FriendRemoveRequest>, pub subtype_62: Option<FriendRemoveResponse>, pub subtype_63: Option<FriendRemovedEvent>, pub subtype_64: Option<FriendRequestAcceptedEvent>, pub subtype_65: Option<FriendRequestCancelledEvent>, pub subtype_66: Option<FriendRequestReceivedEvent>, pub subtype_67: Option<FriendRequestRejectedEvent>, pub subtype_68: Option<FriendSendRequestRequest>, pub subtype_69: Option<FriendSendRequestResponse>, pub subtype_70: Option<LobbyAddBotRequest>, pub subtype_71: Option<LobbyAddBotResponse>, pub subtype_72: Option<LobbyAppointBossRequest>, pub subtype_73: Option<LobbyAppointBossResponse>, pub subtype_74: Option<LobbyCreateRequest>, pub subtype_75: Option<LobbyCreateResponse>, pub subtype_76: Option<LobbyJoinRequest>, pub subtype_77: Option<LobbyJoinResponse>, pub subtype_78: Option<LobbyJoinAllyTeamRequest>, pub subtype_79: Option<LobbyJoinAllyTeamResponse>, pub subtype_80: Option<LobbyJoinBattleRequest>, pub subtype_81: Option<LobbyJoinBattleResponse>, pub subtype_82: Option<LobbyJoinQueueRequest>, pub subtype_83: Option<LobbyJoinQueueResponse>, pub subtype_84: Option<LobbyLeaveRequest>, pub subtype_85: Option<LobbyLeaveResponse>, pub subtype_86: Option<LobbyLeftEvent>, pub subtype_87: Option<LobbyListResetEvent>, pub subtype_88: Option<LobbyListUpdatedEvent>, pub subtype_89: Option<LobbyRemoveBotRequest>, pub subtype_90: Option<LobbyRemoveBotResponse>, pub subtype_91: Option<LobbySpectateRequest>, pub subtype_92: Option<LobbySpectateResponse>, pub subtype_93: Option<LobbyStartBattleRequest>, pub subtype_94: Option<LobbyStartBattleResponse>, pub subtype_95: Option<LobbySubscribeListRequest>, pub subtype_96: Option<LobbySubscribeListResponse>, pub subtype_97: Option<LobbyUnbossRequest>, pub subtype_98: Option<LobbyUnbossResponse>, pub subtype_99: Option<LobbyUnsubscribeListRequest>, pub subtype_100: Option<LobbyUnsubscribeListResponse>, pub subtype_101: Option<LobbyUpdateRequest>, pub subtype_102: Option<LobbyUpdateResponse>, pub subtype_103: Option<LobbyUpdateBotRequest>, pub subtype_104: Option<LobbyUpdateBotResponse>, pub subtype_105: Option<LobbyUpdateClientStatusRequest>, pub subtype_106: Option<LobbyUpdateClientStatusResponse>, pub subtype_107: Option<LobbyUpdatedEvent>, pub subtype_108: Option<LobbyVoteEndedEvent>, pub subtype_109: Option<LobbyVoteSubmitRequest>, pub subtype_110: Option<LobbyVoteSubmitResponse>, pub subtype_111: Option<MatchmakingCancelRequest>, pub subtype_112: Option<MatchmakingCancelResponse>, pub subtype_113: Option<MatchmakingCancelledEvent>, pub subtype_114: Option<MatchmakingFoundEvent>, pub subtype_115: Option<MatchmakingFoundUpdateEvent>, pub subtype_116: Option<MatchmakingListRequest>, pub subtype_117: Option<MatchmakingListResponse>, pub subtype_118: Option<MatchmakingLostEvent>, pub subtype_119: Option<MatchmakingQueueRequest>, pub subtype_120: Option<MatchmakingQueueResponse>, pub subtype_121: Option<MatchmakingQueueUpdateEvent>, pub subtype_122: Option<MatchmakingQueuesJoinedEvent>, pub subtype_123: Option<MatchmakingReadyRequest>, pub subtype_124: Option<MatchmakingReadyResponse>, pub subtype_125: Option<MessagingReceivedEvent>, pub subtype_126: Option<MessagingSendRequest>, pub subtype_127: Option<MessagingSendResponse>, pub subtype_128: Option<MessagingSubscribeReceivedRequest>, pub subtype_129: Option<MessagingSubscribeReceivedResponse>, pub subtype_130: Option<PartyAcceptInviteRequest>, pub subtype_131: Option<PartyAcceptInviteResponse>, pub subtype_132: Option<PartyCancelInviteRequest>, pub subtype_133: Option<PartyCancelInviteResponse>, pub subtype_134: Option<PartyCreateRequest>, pub subtype_135: Option<PartyCreateResponse>, pub subtype_136: Option<PartyDeclineInviteRequest>, pub subtype_137: Option<PartyDeclineInviteResponse>, pub subtype_138: Option<PartyInviteRequest>, pub subtype_139: Option<PartyInviteResponse>, pub subtype_140: Option<PartyInvitedEvent>, pub subtype_141: Option<PartyKickMemberRequest>, pub subtype_142: Option<PartyKickMemberResponse>, pub subtype_143: Option<PartyLeaveRequest>, pub subtype_144: Option<PartyLeaveResponse>, pub subtype_145: Option<PartyRemovedEvent>, pub subtype_146: Option<PartyUpdatedEvent>, pub subtype_147: Option<SystemDisconnectRequest>, pub subtype_148: Option<SystemDisconnectResponse>, pub subtype_149: Option<SystemServerStatsRequest>, pub subtype_150: Option<SystemServerStatsResponse>, pub subtype_151: Option<UserInfoRequest>, pub subtype_152: Option<UserInfoResponse>, pub subtype_153: Option<UserSelfEvent>, pub subtype_154: Option<UserSubscribeUpdatesRequest>, pub subtype_155: Option<UserSubscribeUpdatesResponse>, pub subtype_156: Option<UserUnsubscribeUpdatesRequest>, pub subtype_157: Option<UserUnsubscribeUpdatesResponse>, pub subtype_158: Option<UserUpdatedEvent>,
}
Expand description

TachyonCommand

JSON schema
{
 "$id": "https://schema.beyondallreason.dev/tachyon/compiled.json",
 "title": "TachyonCommand",
 "anyOf": [
   {
     "title": "AutohostAddPlayerRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/addPlayer"
       },
       "data": {
         "title": "AutohostAddPlayerRequestData",
         "type": "object",
         "required": [
           "battleId",
           "name",
           "password",
           "userId"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "name": {
             "type": "string"
           },
           "password": {
             "type": "string"
           },
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostAddPlayerResponse",
     "anyOf": [
       {
         "title": "AutohostAddPlayerOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/addPlayer"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostAddPlayerFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/addPlayer"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostInstallEngineRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/installEngine"
       },
       "data": {
         "title": "AutohostInstallEngineRequestData",
         "examples": [
           {
             "version": "2025.01.5"
           }
         ],
         "type": "object",
         "required": [
           "version"
         ],
         "properties": {
           "version": {
             "description": "Version of the engine to install",
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostInstallEngineResponse",
     "anyOf": [
       {
         "title": "AutohostInstallEngineOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/installEngine"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostInstallEngineFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/installEngine"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostKickPlayerRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/kickPlayer"
       },
       "data": {
         "title": "AutohostKickPlayerRequestData",
         "type": "object",
         "required": [
           "battleId",
           "userId"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostKickPlayerResponse",
     "anyOf": [
       {
         "title": "AutohostKickPlayerOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/kickPlayer"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostKickPlayerFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/kickPlayer"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostKillRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/kill"
       },
       "data": {
         "title": "AutohostKillRequestData",
         "type": "object",
         "required": [
           "battleId"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostKillResponse",
     "anyOf": [
       {
         "title": "AutohostKillOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/kill"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostKillFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/kill"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostMutePlayerRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/mutePlayer"
       },
       "data": {
         "title": "AutohostMutePlayerRequestData",
         "type": "object",
         "required": [
           "battleId",
           "chat",
           "draw",
           "userId"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "chat": {
             "type": "boolean"
           },
           "draw": {
             "type": "boolean"
           },
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostMutePlayerResponse",
     "anyOf": [
       {
         "title": "AutohostMutePlayerOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/mutePlayer"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostMutePlayerFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/mutePlayer"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostSendCommandRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/sendCommand"
       },
       "data": {
         "title": "AutohostSendCommandRequestData",
         "type": "object",
         "required": [
           "battleId",
           "command"
         ],
         "properties": {
           "arguments": {
             "type": "array",
             "items": {
               "type": "string"
             }
           },
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "command": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostSendCommandResponse",
     "anyOf": [
       {
         "title": "AutohostSendCommandOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/sendCommand"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostSendCommandFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/sendCommand"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostSendMessageRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/sendMessage"
       },
       "data": {
         "title": "AutohostSendMessageRequestData",
         "type": "object",
         "required": [
           "battleId",
           "message"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "message": {
             "type": "string",
             "maxLength": 127
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostSendMessageResponse",
     "anyOf": [
       {
         "title": "AutohostSendMessageOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/sendMessage"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostSendMessageFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/sendMessage"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostSpecPlayersRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/specPlayers"
       },
       "data": {
         "title": "AutohostSpecPlayersRequestData",
         "type": "object",
         "required": [
           "battleId",
           "userIds"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "userIds": {
             "type": "array",
             "items": {
               "$ref": "#/definitions/userId"
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostSpecPlayersResponse",
     "anyOf": [
       {
         "title": "AutohostSpecPlayersOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/specPlayers"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostSpecPlayersFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/specPlayers"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostStartRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/start"
       },
       "data": {
         "title": "AutohostStartRequestData",
         "type": "object",
         "required": [
           "allyTeams",
           "battleId",
           "engineVersion",
           "gameName",
           "mapName",
           "startPosType"
         ],
         "properties": {
           "allyTeams": {
             "type": "array",
             "items": {
               "$ref": "#/definitions/allyTeam"
             },
             "minItems": 1
           },
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "engineVersion": {
             "type": "string",
             "pattern": "^[0-9a-zA-Z .+-]+$"
           },
           "gameArchiveHash": {
             "type": "string",
             "pattern": "^[a-fA-F0-9]{128}$"
           },
           "gameName": {
             "type": "string"
           },
           "gameOptions": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "type": "string"
               }
             }
           },
           "luamsgRegexp": {
             "description": "When set, battle will generate updates for luamsgs matching this regexp. No updates will be generated if this is not set.",
             "type": "string",
             "format": "regex"
           },
           "mapArchiveHash": {
             "type": "string",
             "pattern": "^[a-fA-F0-9]{128}$"
           },
           "mapName": {
             "type": "string"
           },
           "mapOptions": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "type": "string"
               }
             }
           },
           "restrictions": {
             "description": "Mapping from unitDefId to the maximum number of units of that type that can be built.",
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "type": "integer",
                 "minimum": 0.0
               }
             }
           },
           "spectators": {
             "type": "array",
             "items": {
               "$ref": "#/definitions/player"
             }
           },
           "startDelay": {
             "type": "integer"
           },
           "startPosType": {
             "$ref": "#/definitions/startPosType"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostStartResponse",
     "anyOf": [
       {
         "title": "AutohostStartOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/start"
           },
           "data": {
             "title": "AutohostStartOkResponseData",
             "type": "object",
             "required": [
               "ips",
               "port"
             ],
             "properties": {
               "ips": {
                 "type": "array",
                 "items": {
                   "anyOf": [
                     {
                       "type": "string",
                       "format": "ipv4"
                     },
                     {
                       "type": "string",
                       "format": "ipv6"
                     }
                   ]
                 }
               },
               "port": {
                 "type": "integer",
                 "maximum": 65535.0,
                 "minimum": 1024.0
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostStartFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/start"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "battle_already_exists",
               "engine_version_not_available",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostStatusEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/status"
       },
       "data": {
         "title": "AutohostStatusEventData",
         "examples": [
           {
             "availableEngines": [
               "2025.01.5"
             ],
             "currentBattles": 5,
             "maxBattles": 10
           }
         ],
         "type": "object",
         "required": [
           "availableEngines",
           "currentBattles",
           "maxBattles"
         ],
         "properties": {
           "availableEngines": {
             "description": "List of available engine versions on autohost",
             "type": "array",
             "items": {
               "type": "string"
             }
           },
           "currentBattles": {
             "type": "integer",
             "minimum": 0.0
           },
           "maxBattles": {
             "description": "The maxBattles might be reported lower (e.g. 0) then currentBattles. Example: autohost is shutting down and doesn't want to accept any new battles.",
             "type": "integer",
             "minimum": 0.0
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostSubscribeUpdatesRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/subscribeUpdates"
       },
       "data": {
         "title": "AutohostSubscribeUpdatesRequestData",
         "type": "object",
         "required": [
           "since"
         ],
         "properties": {
           "since": {
             "$ref": "#/definitions/unixTime"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "autohost"
     }
   },
   {
     "title": "AutohostSubscribeUpdatesResponse",
     "anyOf": [
       {
         "title": "AutohostSubscribeUpdatesOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/subscribeUpdates"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "AutohostSubscribeUpdatesFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "autohost/subscribeUpdates"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "AutohostUpdateEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "autohost/update"
       },
       "data": {
         "title": "AutohostUpdateEventData",
         "type": "object",
         "required": [
           "battleId",
           "time",
           "update"
         ],
         "properties": {
           "battleId": {
             "type": "string",
             "format": "uuid"
           },
           "time": {
             "$ref": "#/definitions/unixTime"
           },
           "update": {
             "anyOf": [
               {
                 "title": "StartUpdate",
                 "description": "The battle has started.",
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "type": {
                     "const": "start"
                   }
                 }
               },
               {
                 "title": "FinishedUpdate",
                 "description": "The battle finished, generated once per every single player reporting who won.",
                 "type": "object",
                 "required": [
                   "type",
                   "userId",
                   "winningAllyTeams"
                 ],
                 "properties": {
                   "type": {
                     "const": "finished"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   },
                   "winningAllyTeams": {
                     "description": "Ally team IDs",
                     "type": "array",
                     "items": {
                       "type": "integer"
                     },
                     "minItems": 1
                   }
                 }
               },
               {
                 "title": "EngineMessageUpdate",
                 "description": "A message from the engine, e.g. some ip is trying to connect.",
                 "type": "object",
                 "required": [
                   "message",
                   "type"
                 ],
                 "properties": {
                   "message": {
                     "type": "string"
                   },
                   "type": {
                     "const": "engine_message"
                   }
                 }
               },
               {
                 "title": "EngineWarningUpdate",
                 "description": "A warning from the engine.",
                 "type": "object",
                 "required": [
                   "message",
                   "type"
                 ],
                 "properties": {
                   "message": {
                     "type": "string"
                   },
                   "type": {
                     "const": "engine_warning"
                   }
                 }
               },
               {
                 "title": "EngineQuitUpdate",
                 "description": "The engine process for battle has quit cleanly, no more updates will be sent for this battle.",
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "type": {
                     "const": "engine_quit"
                   }
                 }
               },
               {
                 "title": "EngineCrashUpdate",
                 "description": "The engine process for battle has crashed, no more updates will be sent for this battle.",
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "details": {
                     "description": "Optional, short, details of the crash.",
                     "type": "string"
                   },
                   "type": {
                     "const": "engine_crash"
                   }
                 }
               },
               {
                 "title": "PlayerJoinedUpdate",
                 "type": "object",
                 "required": [
                   "playerNumber",
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "playerNumber": {
                     "description": "Player number in the game, can be useful for custom commands",
                     "type": "integer"
                   },
                   "type": {
                     "const": "player_joined"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               },
               {
                 "title": "PlayerLeftUpdate",
                 "type": "object",
                 "required": [
                   "reason",
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "reason": {
                     "enum": [
                       "lost_connection",
                       "left",
                       "kicked"
                     ]
                   },
                   "type": {
                     "const": "player_left"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               },
               {
                 "title": "PlayerChatUpdate",
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "destination",
                       "message",
                       "type",
                       "userId"
                     ],
                     "properties": {
                       "destination": {
                         "enum": [
                           "allies",
                           "all",
                           "spectators"
                         ]
                       },
                       "message": {
                         "type": "string"
                       },
                       "type": {
                         "const": "player_chat"
                       },
                       "userId": {
                         "$ref": "#/definitions/userId"
                       }
                     }
                   },
                   {
                     "type": "object",
                     "required": [
                       "destination",
                       "message",
                       "toUserId",
                       "type",
                       "userId"
                     ],
                     "properties": {
                       "destination": {
                         "const": "player"
                       },
                       "message": {
                         "type": "string"
                       },
                       "toUserId": {
                         "$ref": "#/definitions/userId"
                       },
                       "type": {
                         "const": "player_chat"
                       },
                       "userId": {
                         "$ref": "#/definitions/userId"
                       }
                     }
                   }
                 ]
               },
               {
                 "title": "PlayerDefeatedUpdate",
                 "type": "object",
                 "required": [
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "type": {
                     "const": "player_defeated"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               },
               {
                 "title": "LuaMsgUpdate",
                 "description": "This update is generated only for messages matching luamsgRegexp set in the battle start script.",
                 "type": "object",
                 "required": [
                   "data",
                   "script",
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "data": {
                     "type": "string",
                     "contentEncoding": "base64",
                     "contentMediaType": "application/octet-stream"
                   },
                   "script": {
                     "enum": [
                       "ui",
                       "game",
                       "rules"
                     ]
                   },
                   "type": {
                     "const": "luamsg"
                   },
                   "uiMode": {
                     "description": "Set when script is 'ui'",
                     "enum": [
                       "all",
                       "allies",
                       "spectators"
                     ]
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               }
             ]
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "autohost",
       "target": "server"
     }
   },
   {
     "title": "BattleStartRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "battle/start"
       },
       "data": {
         "title": "BattleStartRequestData",
         "$ref": "#/definitions/privateBattle"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "BattleStartResponse",
     "anyOf": [
       {
         "title": "BattleStartOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "battle/start"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "BattleStartFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "battle/start"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanAcceptRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/accept"
       },
       "data": {
         "title": "ClanAcceptRequestData",
         "type": "object",
         "required": [
           "clanId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanAcceptResponse",
     "anyOf": [
       {
         "title": "ClanAcceptOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/accept"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanAcceptFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/accept"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanCancelRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/cancel"
       },
       "data": {
         "title": "ClanCancelRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanCancelResponse",
     "anyOf": [
       {
         "title": "ClanCancelOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/cancel"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanCancelFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/cancel"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanCreateRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/create"
       },
       "data": {
         "title": "ClanCreateRequestData",
         "$ref": "#/definitions/clanUpdateableData"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanCreateResponse",
     "anyOf": [
       {
         "title": "ClanCreateOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/create"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanCreateFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/create"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanDeclineRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/decline"
       },
       "data": {
         "title": "ClanDeclineRequestData",
         "type": "object",
         "required": [
           "clanId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanDeclineResponse",
     "anyOf": [
       {
         "title": "ClanDeclineOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/decline"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanDeclineFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/decline"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanDeleteRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/delete"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanDeleteResponse",
     "anyOf": [
       {
         "title": "ClanDeleteOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/delete"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanDeleteFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/delete"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanDeletedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/deleted"
       },
       "data": {
         "title": "ClanDeletedEventData",
         "type": "object",
         "required": [
           "clanId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanInviteRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/invite"
       },
       "data": {
         "title": "ClanInviteRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanInviteResponse",
     "anyOf": [
       {
         "title": "ClanInviteOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/invite"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanInviteFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/invite"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanInvitedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/invited"
       },
       "data": {
         "title": "ClanInvitedEventData",
         "$ref": "#/definitions/clanUpdateableBaseData"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanKickRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/kick"
       },
       "data": {
         "title": "ClanKickRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanKickResponse",
     "anyOf": [
       {
         "title": "ClanKickOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/kick"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanKickFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/kick"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanKickedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/kicked"
       },
       "data": {
         "title": "ClanKickedEventData",
         "type": "object",
         "required": [
           "clanId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanLeaveRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/leave"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanLeaveResponse",
     "anyOf": [
       {
         "title": "ClanLeaveOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/leave"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanLeaveFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/leave"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanRoleChangedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/roleChanged"
       },
       "data": {
         "title": "ClanRoleChangedEventData",
         "type": "object",
         "required": [
           "clanId",
           "newRole",
           "userId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           },
           "newRole": {
             "$ref": "#/definitions/clanRole"
           },
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanSetRoleRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/setRole"
       },
       "data": {
         "title": "ClanSetRoleRequestData",
         "type": "object",
         "required": [
           "clanId",
           "targetRole",
           "userId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           },
           "targetRole": {
             "$ref": "#/definitions/clanRole"
           },
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanSetRoleResponse",
     "anyOf": [
       {
         "title": "ClanSetRoleOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/setRole"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanSetRoleFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/setRole"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanUpdateRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/update"
       },
       "data": {
         "title": "ClanUpdateRequestData",
         "$ref": "#/definitions/clanUpdateableData"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanUpdateResponse",
     "anyOf": [
       {
         "title": "ClanUpdateOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/update"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanUpdateFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/update"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanUpdatedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/updated"
       },
       "data": {
         "title": "ClanUpdatedEventData",
         "$ref": "#/definitions/clanUpdateableData"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanViewRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/view"
       },
       "data": {
         "title": "ClanViewRequestData",
         "type": "object",
         "required": [
           "clanId"
         ],
         "properties": {
           "clanId": {
             "$ref": "#/definitions/clanId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanViewResponse",
     "anyOf": [
       {
         "title": "ClanViewOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/view"
           },
           "data": {
             "title": "ClanViewOkResponseData",
             "$ref": "#/definitions/clan"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanViewFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/view"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "ClanViewListRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "clan/viewList"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "ClanViewListResponse",
     "anyOf": [
       {
         "title": "ClanViewListOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/viewList"
           },
           "data": {
             "title": "ClanViewListOkResponseData",
             "type": "object",
             "required": [
               "clanList"
             ],
             "properties": {
               "clanList": {
                 "type": "array",
                 "items": {
                   "$ref": "#/definitions/clanBaseData"
                 }
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "ClanViewListFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "clan/viewList"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendAcceptRequestRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/acceptRequest"
       },
       "data": {
         "title": "FriendAcceptRequestRequestData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "FriendAcceptRequestResponse",
     "anyOf": [
       {
         "title": "FriendAcceptRequestOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/acceptRequest"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "FriendAcceptRequestFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/acceptRequest"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "invalid_user",
               "no_pending_request",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendCancelRequestRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/cancelRequest"
       },
       "data": {
         "title": "FriendCancelRequestRequestData",
         "type": "object",
         "required": [
           "to"
         ],
         "properties": {
           "to": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "FriendCancelRequestResponse",
     "anyOf": [
       {
         "title": "FriendCancelRequestOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/cancelRequest"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "FriendCancelRequestFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/cancelRequest"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "invalid_user",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendListRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/list"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "FriendListResponse",
     "anyOf": [
       {
         "title": "FriendListOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/list"
           },
           "data": {
             "title": "FriendListOkResponseData",
             "type": "object",
             "required": [
               "friends",
               "incomingPendingRequests",
               "outgoingPendingRequests"
             ],
             "properties": {
               "friends": {
                 "type": "array",
                 "items": {
                   "type": "object",
                   "required": [
                     "addedAt",
                     "userId"
                   ],
                   "properties": {
                     "addedAt": {
                       "$ref": "#/definitions/unixTime"
                     },
                     "userId": {
                       "$ref": "#/definitions/userId"
                     }
                   }
                 }
               },
               "incomingPendingRequests": {
                 "type": "array",
                 "items": {
                   "type": "object",
                   "required": [
                     "from",
                     "sentAt"
                   ],
                   "properties": {
                     "from": {
                       "$ref": "#/definitions/userId"
                     },
                     "sentAt": {
                       "$ref": "#/definitions/unixTime"
                     }
                   }
                 }
               },
               "outgoingPendingRequests": {
                 "type": "array",
                 "items": {
                   "type": "object",
                   "required": [
                     "sentAt",
                     "to"
                   ],
                   "properties": {
                     "sentAt": {
                       "$ref": "#/definitions/unixTime"
                     },
                     "to": {
                       "$ref": "#/definitions/userId"
                     }
                   }
                 }
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "FriendListFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/list"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRejectRequestRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/rejectRequest"
       },
       "data": {
         "title": "FriendRejectRequestRequestData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "FriendRejectRequestResponse",
     "anyOf": [
       {
         "title": "FriendRejectRequestOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/rejectRequest"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "FriendRejectRequestFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/rejectRequest"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "invalid_user",
               "no_pending_request",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRemoveRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/remove"
       },
       "data": {
         "title": "FriendRemoveRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "FriendRemoveResponse",
     "anyOf": [
       {
         "title": "FriendRemoveOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/remove"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "FriendRemoveFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/remove"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "invalid_user",
               "not_in_friendlist",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRemovedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/removed"
       },
       "data": {
         "title": "FriendRemovedEventData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRequestAcceptedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/requestAccepted"
       },
       "data": {
         "title": "FriendRequestAcceptedEventData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRequestCancelledEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/requestCancelled"
       },
       "data": {
         "title": "FriendRequestCancelledEventData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRequestReceivedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/requestReceived"
       },
       "data": {
         "title": "FriendRequestReceivedEventData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendRequestRejectedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/requestRejected"
       },
       "data": {
         "title": "FriendRequestRejectedEventData",
         "type": "object",
         "required": [
           "from"
         ],
         "properties": {
           "from": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "FriendSendRequestRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "friend/sendRequest"
       },
       "data": {
         "title": "FriendSendRequestRequestData",
         "type": "object",
         "required": [
           "to"
         ],
         "properties": {
           "to": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "FriendSendRequestResponse",
     "anyOf": [
       {
         "title": "FriendSendRequestOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/sendRequest"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "FriendSendRequestFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "friend/sendRequest"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "invalid_user",
               "already_in_friendlist",
               "outgoing_capacity_reached",
               "incoming_capacity_reached",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyAddBotRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/addBot"
       },
       "data": {
         "title": "LobbyAddBotRequestData",
         "type": "object",
         "required": [
           "allyTeam",
           "shortName"
         ],
         "properties": {
           "allyTeam": {
             "type": "string"
           },
           "name": {
             "description": "name to display in the lobby",
             "type": "string",
             "maxLength": 20
           },
           "options": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "type": "string"
               }
             }
           },
           "shortName": {
             "description": "Short name of the bot. Used to uniquely identify which bot to run",
             "type": "string",
             "maxLength": 20
           },
           "version": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyAddBotResponse",
     "anyOf": [
       {
         "title": "LobbyAddBotOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/addBot"
           },
           "data": {
             "title": "LobbyAddBotOkResponseData",
             "type": "object",
             "required": [
               "id"
             ],
             "properties": {
               "id": {
                 "description": "The id the server generated for this bot",
                 "type": "string"
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyAddBotFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/addBot"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "ally_team_full",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyAppointBossRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/appointBoss"
       },
       "data": {
         "title": "LobbyAppointBossRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyAppointBossResponse",
     "anyOf": [
       {
         "title": "LobbyAppointBossOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/appointBoss"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyAppointBossFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/appointBoss"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "bosses_not_allowed",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyCreateRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/create"
       },
       "data": {
         "title": "LobbyCreateRequestData",
         "type": "object",
         "required": [
           "allyTeamConfig",
           "mapName",
           "name"
         ],
         "properties": {
           "allyTeamConfig": {
             "$ref": "#/definitions/allyTeamConfig"
           },
           "areBossesEnabled": {
             "default": true,
             "type": "boolean"
           },
           "gameOptions": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "type": "object",
                 "required": [
                   "value"
                 ],
                 "properties": {
                   "value": {
                     "type": "string"
                   }
                 }
               }
             }
           },
           "mapName": {
             "type": "string"
           },
           "name": {
             "type": "string"
           },
           "tags": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "type": "object"
               }
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyCreateResponse",
     "anyOf": [
       {
         "title": "LobbyCreateOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/create"
           },
           "data": {
             "title": "LobbyCreateOkResponseData",
             "$ref": "#/definitions/lobbyDetails"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyCreateFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/create"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyJoinRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/join"
       },
       "data": {
         "title": "LobbyJoinRequestData",
         "type": "object",
         "required": [
           "id"
         ],
         "properties": {
           "id": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyJoinResponse",
     "anyOf": [
       {
         "title": "LobbyJoinOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/join"
           },
           "data": {
             "title": "LobbyJoinOkResponseData",
             "$ref": "#/definitions/lobbyDetails"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyJoinFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/join"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "lobby_full",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyJoinAllyTeamRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/joinAllyTeam"
       },
       "data": {
         "title": "LobbyJoinAllyTeamRequestData",
         "type": "object",
         "required": [
           "allyTeam"
         ],
         "properties": {
           "allyTeam": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyJoinAllyTeamResponse",
     "anyOf": [
       {
         "title": "LobbyJoinAllyTeamOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/joinAllyTeam"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyJoinAllyTeamFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/joinAllyTeam"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "ally_team_full",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyJoinBattleRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/joinBattle"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyJoinBattleResponse",
     "anyOf": [
       {
         "title": "LobbyJoinBattleOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/joinBattle"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyJoinBattleFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/joinBattle"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "no_battle",
               "battle_full",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyJoinQueueRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/joinQueue"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyJoinQueueResponse",
     "anyOf": [
       {
         "title": "LobbyJoinQueueOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/joinQueue"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyJoinQueueFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/joinQueue"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyLeaveRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/leave"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyLeaveResponse",
     "anyOf": [
       {
         "title": "LobbyLeaveOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/leave"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyLeaveFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/leave"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyLeftEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/left"
       },
       "data": {
         "title": "LobbyLeftEventData",
         "type": "object",
         "required": [
           "id",
           "reason"
         ],
         "properties": {
           "id": {
             "type": "string"
           },
           "reason": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyListResetEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/listReset"
       },
       "data": {
         "title": "LobbyListResetEventData",
         "type": "object",
         "required": [
           "lobbies"
         ],
         "properties": {
           "lobbies": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "$ref": "#/definitions/lobbyOverview"
               }
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyListUpdatedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/listUpdated"
       },
       "data": {
         "title": "LobbyListUpdatedEventData",
         "type": "object",
         "required": [
           "lobbies"
         ],
         "properties": {
           "lobbies": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "id"
                     ],
                     "properties": {
                       "areBossesEnabled": {
                         "type": "boolean"
                       },
                       "currentBattle": {
                         "anyOf": [
                           {
                             "type": "object",
                             "required": [
                               "startedAt"
                             ],
                             "properties": {
                               "startedAt": {
                                 "$ref": "#/definitions/unixTime"
                               }
                             }
                           },
                           {
                             "type": "null"
                           }
                         ]
                       },
                       "engineVersion": {
                         "type": "string"
                       },
                       "gameVersion": {
                         "type": "string"
                       },
                       "id": {
                         "type": "string"
                       },
                       "mapName": {
                         "type": "string"
                       },
                       "maxPlayerCount": {
                         "type": "integer"
                       },
                       "name": {
                         "type": "string"
                       },
                       "playerCount": {
                         "type": "integer"
                       },
                       "tags": {
                         "type": "object",
                         "patternProperties": {
                           "^.*$": {
                             "anyOf": [
                               {
                                 "type": "object"
                               },
                               {
                                 "type": "null"
                               }
                             ]
                           }
                         }
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyRemoveBotRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/removeBot"
       },
       "data": {
         "title": "LobbyRemoveBotRequestData",
         "type": "object",
         "required": [
           "id"
         ],
         "properties": {
           "id": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyRemoveBotResponse",
     "anyOf": [
       {
         "title": "LobbyRemoveBotOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/removeBot"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyRemoveBotFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/removeBot"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "invalid_bot",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbySpectateRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/spectate"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbySpectateResponse",
     "anyOf": [
       {
         "title": "LobbySpectateOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/spectate"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbySpectateFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/spectate"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyStartBattleRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/startBattle"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyStartBattleResponse",
     "anyOf": [
       {
         "title": "LobbyStartBattleOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/startBattle"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyStartBattleFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/startBattle"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbySubscribeListRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/subscribeList"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbySubscribeListResponse",
     "anyOf": [
       {
         "title": "LobbySubscribeListOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/subscribeList"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbySubscribeListFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/subscribeList"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyUnbossRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/unboss"
       },
       "data": {
         "title": "LobbyUnbossRequestData",
         "description": "if userId isn't provided, defaults to the current user",
         "type": "object",
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyUnbossResponse",
     "anyOf": [
       {
         "title": "LobbyUnbossOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/unboss"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyUnbossFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/unboss"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_a_boss",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyUnsubscribeListRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/unsubscribeList"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyUnsubscribeListResponse",
     "anyOf": [
       {
         "title": "LobbyUnsubscribeListOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/unsubscribeList"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyUnsubscribeListFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/unsubscribeList"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyUpdateRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/update"
       },
       "data": {
         "title": "LobbyUpdateRequestData",
         "type": "object",
         "properties": {
           "allyTeamConfig": {
             "$ref": "#/definitions/allyTeamConfig"
           },
           "gameOptions": {
             "description": "Set to null to remove a game option",
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "value"
                     ],
                     "properties": {
                       "value": {
                         "type": "string"
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "mapName": {
             "type": "string"
           },
           "name": {
             "description": "to rename the lobby",
             "type": "string"
           },
           "tags": {
             "description": "Set to null to remove a tag",
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object"
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyUpdateResponse",
     "anyOf": [
       {
         "title": "LobbyUpdateOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/update"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyUpdateFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/update"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyUpdateBotRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/updateBot"
       },
       "data": {
         "title": "LobbyUpdateBotRequestData",
         "type": "object",
         "required": [
           "id"
         ],
         "properties": {
           "id": {
             "type": "string"
           },
           "name": {
             "description": "name to display in the lobby",
             "type": "string",
             "maxLength": 20
           },
           "options": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "string"
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "shortName": {
             "description": "short name of the bot. Used to uniquely identify which bot to run",
             "type": "string"
           },
           "version": {
             "anyOf": [
               {
                 "type": "string"
               },
               {
                 "type": "null"
               }
             ]
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyUpdateBotResponse",
     "anyOf": [
       {
         "title": "LobbyUpdateBotOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/updateBot"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyUpdateBotFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/updateBot"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "invalid_bot",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyUpdateClientStatusRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/updateClientStatus"
       },
       "data": {
         "title": "LobbyUpdateClientStatusRequestData",
         "type": "object",
         "properties": {
           "assetStatus": {
             "enum": [
               "missing",
               "downloading",
               "complete"
             ]
           },
           "isReady": {
             "type": "boolean"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyUpdateClientStatusResponse",
     "anyOf": [
       {
         "title": "LobbyUpdateClientStatusOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/updateClientStatus"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyUpdateClientStatusFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/updateClientStatus"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_lobby",
               "not_a_player",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyUpdatedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/updated"
       },
       "data": {
         "title": "LobbyUpdatedEventData",
         "type": "object",
         "required": [
           "id"
         ],
         "properties": {
           "allyTeamConfig": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "description": "this represent an array, items should be sorted lexicographically on their keys",
                     "type": "object",
                     "required": [
                       "teams"
                     ],
                     "properties": {
                       "maxTeams": {
                         "type": "integer",
                         "minimum": 1.0
                       },
                       "startBox": {
                         "$ref": "#/definitions/startBox"
                       },
                       "teams": {
                         "type": "object",
                         "patternProperties": {
                           "^.*$": {
                             "anyOf": [
                               {
                                 "type": "object",
                                 "properties": {
                                   "maxPlayers": {
                                     "type": "integer",
                                     "minimum": 1.0
                                   }
                                 }
                               },
                               {
                                 "type": "null"
                               }
                             ]
                           }
                         }
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "bosses": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object"
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "bots": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "id",
                       "options",
                       "version"
                     ],
                     "properties": {
                       "allyTeam": {
                         "type": "string"
                       },
                       "hostUserId": {
                         "$ref": "#/definitions/userId"
                       },
                       "id": {
                         "type": "string"
                       },
                       "name": {
                         "anyOf": [
                           {
                             "description": "name to display in the lobby",
                             "type": "string"
                           },
                           {
                             "type": "null"
                           }
                         ]
                       },
                       "options": {
                         "anyOf": [
                           {
                             "type": "object",
                             "patternProperties": {
                               "^.*$": {
                                 "anyOf": [
                                   {
                                     "type": "string"
                                   },
                                   {
                                     "type": "null"
                                   }
                                 ]
                               }
                             }
                           },
                           {
                             "type": "null"
                           }
                         ]
                       },
                       "player": {
                         "type": "string"
                       },
                       "shortName": {
                         "description": "Short name of the bot. Used to uniquely identify which bot to run",
                         "type": "string"
                       },
                       "team": {
                         "type": "string"
                       },
                       "version": {
                         "anyOf": [
                           {
                             "type": "string"
                           },
                           {
                             "type": "null"
                           }
                         ]
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "currentBattle": {
             "anyOf": [
               {
                 "description": "If a battle is currently happening, here are the info",
                 "type": "object",
                 "required": [
                   "id",
                   "startedAt"
                 ],
                 "properties": {
                   "id": {
                     "type": "string"
                   },
                   "startedAt": {
                     "$ref": "#/definitions/unixTime"
                   }
                 }
               },
               {
                 "type": "null"
               }
             ]
           },
           "currentVote": {
             "anyOf": [
               {
                 "type": "object",
                 "required": [
                   "id"
                 ],
                 "properties": {
                   "action": {
                     "$ref": "#/definitions/voteActions"
                   },
                   "id": {
                     "type": "string"
                   },
                   "initiator": {
                     "$ref": "#/definitions/userId"
                   },
                   "majority": {
                     "description": "votes passes when number(yes) >= majority",
                     "type": "integer",
                     "minimum": 1.0
                   },
                   "quorum": {
                     "description": "this many player must vote for the vote to be valid at all.",
                     "type": "integer",
                     "minimum": 1.0
                   },
                   "until": {
                     "$ref": "#/definitions/unixTime"
                   },
                   "voters": {
                     "type": "object",
                     "patternProperties": {
                       "^.*$": {
                         "type": "object",
                         "required": [
                           "vote"
                         ],
                         "properties": {
                           "vote": {
                             "enum": [
                               "pending",
                               "yes",
                               "no",
                               "abstain"
                             ]
                           }
                         }
                       }
                     }
                   }
                 }
               },
               {
                 "type": "null"
               }
             ]
           },
           "engineVersion": {
             "type": "string"
           },
           "gameOptions": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "value"
                     ],
                     "properties": {
                       "value": {
                         "type": "string"
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "gameVersion": {
             "type": "string"
           },
           "id": {
             "type": "string"
           },
           "mapName": {
             "type": "string"
           },
           "name": {
             "type": "string"
           },
           "players": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "id"
                     ],
                     "properties": {
                       "allyTeam": {
                         "type": "string"
                       },
                       "assetStatus": {
                         "enum": [
                           "missing",
                           "downloading",
                           "complete"
                         ]
                       },
                       "id": {
                         "$ref": "#/definitions/userId"
                       },
                       "isReady": {
                         "type": "boolean"
                       },
                       "player": {
                         "type": "string"
                       },
                       "team": {
                         "type": "string"
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "spectators": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "id"
                     ],
                     "properties": {
                       "id": {
                         "$ref": "#/definitions/userId"
                       },
                       "joinQueuePosition": {
                         "anyOf": [
                           {
                             "type": "number"
                           },
                           {
                             "type": "null"
                           }
                         ]
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "tags": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object"
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           },
           "voteHistory": {
             "type": "object",
             "patternProperties": {
               "^.*$": {
                 "anyOf": [
                   {
                     "type": "object",
                     "required": [
                       "finishedAt",
                       "outcome",
                       "vote"
                     ],
                     "properties": {
                       "finishedAt": {
                         "$ref": "#/definitions/unixTime"
                       },
                       "outcome": {
                         "$ref": "#/definitions/voteOutcomes"
                       },
                       "vote": {
                         "$ref": "#/definitions/voteActions"
                       }
                     }
                   },
                   {
                     "type": "null"
                   }
                 ]
               }
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyVoteEndedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/voteEnded"
       },
       "data": {
         "title": "LobbyVoteEndedEventData",
         "type": "object",
         "required": [
           "id",
           "outcome"
         ],
         "properties": {
           "id": {
             "type": "string"
           },
           "outcome": {
             "$ref": "#/definitions/voteOutcomes"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "LobbyVoteSubmitRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "lobby/voteSubmit"
       },
       "data": {
         "title": "LobbyVoteSubmitRequestData",
         "type": "object",
         "required": [
           "id",
           "vote"
         ],
         "properties": {
           "id": {
             "type": "string"
           },
           "vote": {
             "enum": [
               "yes",
               "no",
               "abstain"
             ]
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "LobbyVoteSubmitResponse",
     "anyOf": [
       {
         "title": "LobbyVoteSubmitOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/voteSubmit"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "LobbyVoteSubmitFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "lobby/voteSubmit"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingCancelRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/cancel"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "MatchmakingCancelResponse",
     "anyOf": [
       {
         "title": "MatchmakingCancelOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/cancel"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "MatchmakingCancelFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/cancel"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_queued",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingCancelledEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/cancelled"
       },
       "data": {
         "title": "MatchmakingCancelledEventData",
         "type": "object",
         "required": [
           "reason"
         ],
         "properties": {
           "reason": {
             "enum": [
               "intentional",
               "server_error",
               "party_user_left",
               "ready_timeout",
               "version_changed"
             ]
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingFoundEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/found"
       },
       "data": {
         "title": "MatchmakingFoundEventData",
         "type": "object",
         "required": [
           "queueId",
           "timeoutMs"
         ],
         "properties": {
           "queueId": {
             "type": "string"
           },
           "timeoutMs": {
             "type": "integer"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingFoundUpdateEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/foundUpdate"
       },
       "data": {
         "title": "MatchmakingFoundUpdateEventData",
         "type": "object",
         "required": [
           "readyCount"
         ],
         "properties": {
           "readyCount": {
             "type": "integer"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingListRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/list"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "MatchmakingListResponse",
     "anyOf": [
       {
         "title": "MatchmakingListOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/list"
           },
           "data": {
             "title": "MatchmakingListOkResponseData",
             "examples": [
               {
                 "playlists": [
                   {
                     "engines": [
                       {
                         "version": "2025.01.6"
                       }
                     ],
                     "games": [
                       {
                         "springName": "Beyond All Reason test-27414-a84d7e6"
                       }
                     ],
                     "id": "1v1",
                     "maps": [
                       {
                         "springName": "Theta Crystals 1.3"
                       },
                       {
                         "springName": "Comet Catcher Remake 1.8"
                       },
                       {
                         "springName": "Aurelia v4.1"
                       }
                     ],
                     "name": "Duel",
                     "numOfTeams": 2,
                     "ranked": true,
                     "teamSize": 1,
                     "version": "27n6cr76nyfqic73647c1328c94"
                   },
                   {
                     "engines": [
                       {
                         "version": "2025.01.6"
                       }
                     ],
                     "games": [
                       {
                         "springName": "Beyond All Reason test-27414-a84d7e6"
                       }
                     ],
                     "id": "1v1v1",
                     "maps": [
                       {
                         "springName": "Ghenna Rising 4.0.1"
                       }
                     ],
                     "name": "3 Way FFA",
                     "numOfTeams": 3,
                     "ranked": true,
                     "teamSize": 1
                   }
                 ]
               }
             ],
             "type": "object",
             "required": [
               "playlists"
             ],
             "properties": {
               "playlists": {
                 "type": "array",
                 "items": {
                   "type": "object",
                   "required": [
                     "engines",
                     "games",
                     "id",
                     "maps",
                     "name",
                     "numOfTeams",
                     "ranked",
                     "teamSize",
                     "version"
                   ],
                   "properties": {
                     "engines": {
                       "type": "array",
                       "items": {
                         "type": "object",
                         "required": [
                           "version"
                         ],
                         "properties": {
                           "version": {
                             "type": "string"
                           }
                         }
                       }
                     },
                     "games": {
                       "type": "array",
                       "items": {
                         "type": "object",
                         "required": [
                           "springName"
                         ],
                         "properties": {
                           "springName": {
                             "type": "string"
                           }
                         }
                       }
                     },
                     "id": {
                       "type": "string"
                     },
                     "maps": {
                       "type": "array",
                       "items": {
                         "type": "object",
                         "required": [
                           "springName"
                         ],
                         "properties": {
                           "springName": {
                             "type": "string"
                           }
                         }
                       }
                     },
                     "name": {
                       "type": "string"
                     },
                     "numOfTeams": {
                       "type": "integer"
                     },
                     "ranked": {
                       "type": "boolean"
                     },
                     "teamSize": {
                       "type": "integer"
                     },
                     "version": {
                       "description": "Opaque version string that uniquely identifies the properties of the queue with this id, including list of required assets versions",
                       "type": "string"
                     }
                   }
                 }
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "MatchmakingListFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/list"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingLostEvent",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/lost"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingQueueRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/queue"
       },
       "data": {
         "title": "MatchmakingQueueRequestData",
         "examples": [
           {
             "queues": [
               {
                 "id": "1v1",
                 "version": "27n6cr76nyfqic73647c1328c94"
               }
             ]
           }
         ],
         "type": "object",
         "required": [
           "queues"
         ],
         "properties": {
           "queues": {
             "type": "array",
             "items": {
               "type": "object",
               "required": [
                 "id",
                 "version"
               ],
               "properties": {
                 "id": {
                   "type": "string"
                 },
                 "version": {
                   "type": "string"
                 }
               }
             },
             "minItems": 1
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "MatchmakingQueueResponse",
     "anyOf": [
       {
         "title": "MatchmakingQueueOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/queue"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "MatchmakingQueueFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/queue"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "invalid_queue_specified",
               "already_queued",
               "already_in_battle",
               "version_mismatch",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingQueueUpdateEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/queueUpdate"
       },
       "data": {
         "title": "MatchmakingQueueUpdateEventData",
         "type": "object",
         "required": [
           "playersQueued"
         ],
         "properties": {
           "playersQueued": {
             "type": "integer"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingQueuesJoinedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/queuesJoined"
       },
       "data": {
         "title": "MatchmakingQueuesJoinedEventData",
         "type": "object",
         "required": [
           "queues"
         ],
         "properties": {
           "queues": {
             "type": "array",
             "items": {
               "type": "string"
             },
             "minItems": 1
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MatchmakingReadyRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "matchmaking/ready"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "MatchmakingReadyResponse",
     "anyOf": [
       {
         "title": "MatchmakingReadyOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/ready"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "MatchmakingReadyFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "matchmaking/ready"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "no_match",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MessagingReceivedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "messaging/received"
       },
       "data": {
         "title": "MessagingReceivedEventData",
         "type": "object",
         "required": [
           "marker",
           "message",
           "source",
           "timestamp"
         ],
         "properties": {
           "marker": {
             "$ref": "#/definitions/historyMarker"
           },
           "message": {
             "type": "string"
           },
           "source": {
             "anyOf": [
               {
                 "type": "object",
                 "required": [
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "type": {
                     "const": "player"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               },
               {
                 "type": "object",
                 "required": [
                   "partyId",
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "partyId": {
                     "$ref": "#/definitions/partyId"
                   },
                   "type": {
                     "const": "party"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               },
               {
                 "type": "object",
                 "required": [
                   "lobbyId",
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "lobbyId": {
                     "$ref": "#/definitions/lobbyId"
                   },
                   "type": {
                     "const": "lobby"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               }
             ]
           },
           "timestamp": {
             "description": "time at which the message was received by the server",
             "$ref": "#/definitions/unixTime"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MessagingSendRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "messaging/send"
       },
       "data": {
         "title": "MessagingSendRequestData",
         "type": "object",
         "required": [
           "message",
           "target"
         ],
         "properties": {
           "message": {
             "type": "string",
             "maxLength": 512
           },
           "target": {
             "anyOf": [
               {
                 "type": "object",
                 "required": [
                   "type",
                   "userId"
                 ],
                 "properties": {
                   "type": {
                     "const": "player"
                   },
                   "userId": {
                     "$ref": "#/definitions/userId"
                   }
                 }
               },
               {
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "type": {
                     "const": "party"
                   }
                 }
               },
               {
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "type": {
                     "const": "lobby"
                   }
                 }
               }
             ]
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "MessagingSendResponse",
     "anyOf": [
       {
         "title": "MessagingSendOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "messaging/send"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "MessagingSendFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "messaging/send"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "message_too_long",
               "invalid_target",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "MessagingSubscribeReceivedRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "messaging/subscribeReceived"
       },
       "data": {
         "title": "MessagingSubscribeReceivedRequestData",
         "type": "object",
         "properties": {
           "since": {
             "default": {
               "type": "latest"
             },
             "anyOf": [
               {
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "type": {
                     "const": "from_start"
                   }
                 }
               },
               {
                 "type": "object",
                 "required": [
                   "type"
                 ],
                 "properties": {
                   "type": {
                     "const": "latest"
                   }
                 }
               },
               {
                 "type": "object",
                 "required": [
                   "type",
                   "value"
                 ],
                 "properties": {
                   "type": {
                     "const": "marker"
                   },
                   "value": {
                     "$ref": "#/definitions/historyMarker"
                   }
                 }
               }
             ]
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "MessagingSubscribeReceivedResponse",
     "anyOf": [
       {
         "title": "MessagingSubscribeReceivedOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "messaging/subscribeReceived"
           },
           "data": {
             "title": "MessagingSubscribeReceivedOkResponseData",
             "type": "object",
             "required": [
               "hasMissedMessages"
             ],
             "properties": {
               "hasMissedMessages": {
                 "description": "set to true when the marker sent doesn't match any message stored by the server.",
                 "type": "boolean"
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "MessagingSubscribeReceivedFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "messaging/subscribeReceived"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyAcceptInviteRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/acceptInvite"
       },
       "data": {
         "title": "PartyAcceptInviteRequestData",
         "type": "object",
         "required": [
           "partyId"
         ],
         "properties": {
           "partyId": {
             "$ref": "#/definitions/partyId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyAcceptInviteResponse",
     "anyOf": [
       {
         "title": "PartyAcceptInviteOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/acceptInvite"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyAcceptInviteFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/acceptInvite"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyCancelInviteRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/cancelInvite"
       },
       "data": {
         "title": "PartyCancelInviteRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyCancelInviteResponse",
     "anyOf": [
       {
         "title": "PartyCancelInviteOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/cancelInvite"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyCancelInviteFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/cancelInvite"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "not_in_party",
               "invalid_invite",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyCreateRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/create"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyCreateResponse",
     "anyOf": [
       {
         "title": "PartyCreateOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/create"
           },
           "data": {
             "title": "PartyCreateOkResponseData",
             "type": "object",
             "required": [
               "partyId"
             ],
             "properties": {
               "partyId": {
                 "$ref": "#/definitions/partyId"
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyCreateFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/create"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyDeclineInviteRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/declineInvite"
       },
       "data": {
         "title": "PartyDeclineInviteRequestData",
         "type": "object",
         "required": [
           "partyId"
         ],
         "properties": {
           "partyId": {
             "$ref": "#/definitions/partyId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyDeclineInviteResponse",
     "anyOf": [
       {
         "title": "PartyDeclineInviteOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/declineInvite"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyDeclineInviteFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/declineInvite"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyInviteRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/invite"
       },
       "data": {
         "title": "PartyInviteRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyInviteResponse",
     "anyOf": [
       {
         "title": "PartyInviteOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/invite"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyInviteFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/invite"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyInvitedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/invited"
       },
       "data": {
         "title": "PartyInvitedEventData",
         "type": "object",
         "required": [
           "party"
         ],
         "properties": {
           "party": {
             "$ref": "#/definitions/partyState"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyKickMemberRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/kickMember"
       },
       "data": {
         "title": "PartyKickMemberRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyKickMemberResponse",
     "anyOf": [
       {
         "title": "PartyKickMemberOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/kickMember"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyKickMemberFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/kickMember"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyLeaveRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/leave"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "PartyLeaveResponse",
     "anyOf": [
       {
         "title": "PartyLeaveOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/leave"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "PartyLeaveFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "party/leave"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyRemovedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/removed"
       },
       "data": {
         "title": "PartyRemovedEventData",
         "type": "object",
         "required": [
           "partyId"
         ],
         "properties": {
           "partyId": {
             "$ref": "#/definitions/partyId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "PartyUpdatedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "party/updated"
       },
       "data": {
         "title": "PartyUpdatedEventData",
         "$ref": "#/definitions/partyState"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "SystemDisconnectRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "system/disconnect"
       },
       "data": {
         "title": "SystemDisconnectRequestData",
         "type": "object",
         "required": [
           "reason"
         ],
         "properties": {
           "reason": {
             "type": "string"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "SystemDisconnectResponse",
     "anyOf": [
       {
         "title": "SystemDisconnectOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "system/disconnect"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "SystemDisconnectFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "system/disconnect"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "SystemServerStatsRequest",
     "type": "object",
     "required": [
       "commandId",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "system/serverStats"
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "SystemServerStatsResponse",
     "anyOf": [
       {
         "title": "SystemServerStatsOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "system/serverStats"
           },
           "data": {
             "title": "SystemServerStatsOkResponseData",
             "type": "object",
             "required": [
               "userCount"
             ],
             "properties": {
               "userCount": {
                 "type": "integer"
               }
             }
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "SystemServerStatsFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "system/serverStats"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "UserInfoRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "user/info"
       },
       "data": {
         "title": "UserInfoRequestData",
         "type": "object",
         "required": [
           "userId"
         ],
         "properties": {
           "userId": {
             "$ref": "#/definitions/userId"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "UserInfoResponse",
     "anyOf": [
       {
         "title": "UserInfoOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "data",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "user/info"
           },
           "data": {
             "title": "UserInfoOkResponseData",
             "$ref": "#/definitions/user"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "UserInfoFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "user/info"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "unknown_user",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "UserSelfEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "user/self"
       },
       "data": {
         "title": "UserSelfEventData",
         "type": "object",
         "required": [
           "user"
         ],
         "properties": {
           "user": {
             "$ref": "#/definitions/privateUser"
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "UserSubscribeUpdatesRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "user/subscribeUpdates"
       },
       "data": {
         "title": "UserSubscribeUpdatesRequestData",
         "type": "object",
         "required": [
           "userIds"
         ],
         "properties": {
           "userIds": {
             "type": "array",
             "items": {
               "$ref": "#/definitions/userId"
             },
             "maxItems": 100,
             "minItems": 1
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "UserSubscribeUpdatesResponse",
     "anyOf": [
       {
         "title": "UserSubscribeUpdatesOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "user/subscribeUpdates"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "UserSubscribeUpdatesFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "user/subscribeUpdates"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "subscription_limit_reached",
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "UserUnsubscribeUpdatesRequest",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "user/unsubscribeUpdates"
       },
       "data": {
         "title": "UserUnsubscribeUpdatesRequestData",
         "type": "object",
         "required": [
           "userIds"
         ],
         "properties": {
           "userIds": {
             "type": "array",
             "items": {
               "$ref": "#/definitions/userId"
             },
             "maxItems": 100,
             "minItems": 1
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "request"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "user",
       "target": "server"
     }
   },
   {
     "title": "UserUnsubscribeUpdatesResponse",
     "anyOf": [
       {
         "title": "UserUnsubscribeUpdatesOkResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "user/unsubscribeUpdates"
           },
           "messageId": {
             "type": "string"
           },
           "status": {
             "const": "success"
           },
           "type": {
             "const": "response"
           }
         }
       },
       {
         "title": "UserUnsubscribeUpdatesFailResponse",
         "type": "object",
         "required": [
           "commandId",
           "messageId",
           "reason",
           "status",
           "type"
         ],
         "properties": {
           "commandId": {
             "const": "user/unsubscribeUpdates"
           },
           "details": {
             "type": "string"
           },
           "messageId": {
             "type": "string"
           },
           "reason": {
             "enum": [
               "internal_error",
               "unauthorized",
               "invalid_request",
               "command_unimplemented"
             ]
           },
           "status": {
             "const": "failed"
           },
           "type": {
             "const": "response"
           }
         }
       }
     ],
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   },
   {
     "title": "UserUpdatedEvent",
     "type": "object",
     "required": [
       "commandId",
       "data",
       "messageId",
       "type"
     ],
     "properties": {
       "commandId": {
         "const": "user/updated"
       },
       "data": {
         "title": "UserUpdatedEventData",
         "type": "object",
         "required": [
           "users"
         ],
         "properties": {
           "users": {
             "type": "array",
             "items": {
               "type": "object",
               "properties": {
                 "clanBaseData": {
                   "anyOf": [
                     {
                       "allOf": [
                         {
                           "type": "object",
                           "required": [
                             "clanId"
                           ],
                           "properties": {
                             "clanId": {
                               "$ref": "#/definitions/clanId"
                             }
                           }
                         },
                         {
                           "$ref": "#/definitions/clanUpdateableBaseData"
                         }
                       ]
                     },
                     {
                       "type": "null"
                     }
                   ]
                 },
                 "countryCode": {
                   "type": "string"
                 },
                 "displayName": {
                   "type": "string"
                 },
                 "rating": {
                   "type": "object",
                   "required": [
                     "value"
                   ],
                   "properties": {
                     "value": {
                       "description": "Key is omitted when the player isn't rated yet.",
                       "type": "number"
                     }
                   }
                 },
                 "roles": {
                   "type": "array",
                   "items": {
                     "enum": [
                       "contributor",
                       "admin",
                       "moderator",
                       "tournament_winner",
                       "tournament_caster"
                     ]
                   },
                   "uniqueItems": true
                 },
                 "status": {
                   "enum": [
                     "offline",
                     "menu",
                     "playing",
                     "lobby"
                   ]
                 },
                 "userId": {
                   "$ref": "#/definitions/userId"
                 },
                 "username": {
                   "type": "string"
                 }
               }
             }
           }
         }
       },
       "messageId": {
         "type": "string"
       },
       "type": {
         "const": "event"
       }
     },
     "tachyon": {
       "scopes": [
         "tachyon.lobby"
       ],
       "source": "server",
       "target": "user"
     }
   }
 ]
}

Fields§

§subtype_0: Option<AutohostAddPlayerRequest>§subtype_1: Option<AutohostAddPlayerResponse>§subtype_2: Option<AutohostInstallEngineRequest>§subtype_3: Option<AutohostInstallEngineResponse>§subtype_4: Option<AutohostKickPlayerRequest>§subtype_5: Option<AutohostKickPlayerResponse>§subtype_6: Option<AutohostKillRequest>§subtype_7: Option<AutohostKillResponse>§subtype_8: Option<AutohostMutePlayerRequest>§subtype_9: Option<AutohostMutePlayerResponse>§subtype_10: Option<AutohostSendCommandRequest>§subtype_11: Option<AutohostSendCommandResponse>§subtype_12: Option<AutohostSendMessageRequest>§subtype_13: Option<AutohostSendMessageResponse>§subtype_14: Option<AutohostSpecPlayersRequest>§subtype_15: Option<AutohostSpecPlayersResponse>§subtype_16: Option<AutohostStartRequest>§subtype_17: Option<AutohostStartResponse>§subtype_18: Option<AutohostStatusEvent>§subtype_19: Option<AutohostSubscribeUpdatesRequest>§subtype_20: Option<AutohostSubscribeUpdatesResponse>§subtype_21: Option<AutohostUpdateEvent>§subtype_22: Option<BattleStartRequest>§subtype_23: Option<BattleStartResponse>§subtype_24: Option<ClanAcceptRequest>§subtype_25: Option<ClanAcceptResponse>§subtype_26: Option<ClanCancelRequest>§subtype_27: Option<ClanCancelResponse>§subtype_28: Option<ClanCreateRequest>§subtype_29: Option<ClanCreateResponse>§subtype_30: Option<ClanDeclineRequest>§subtype_31: Option<ClanDeclineResponse>§subtype_32: Option<ClanDeleteRequest>§subtype_33: Option<ClanDeleteResponse>§subtype_34: Option<ClanDeletedEvent>§subtype_35: Option<ClanInviteRequest>§subtype_36: Option<ClanInviteResponse>§subtype_37: Option<ClanInvitedEvent>§subtype_38: Option<ClanKickRequest>§subtype_39: Option<ClanKickResponse>§subtype_40: Option<ClanKickedEvent>§subtype_41: Option<ClanLeaveRequest>§subtype_42: Option<ClanLeaveResponse>§subtype_43: Option<ClanRoleChangedEvent>§subtype_44: Option<ClanSetRoleRequest>§subtype_45: Option<ClanSetRoleResponse>§subtype_46: Option<ClanUpdateRequest>§subtype_47: Option<ClanUpdateResponse>§subtype_48: Option<ClanUpdatedEvent>§subtype_49: Option<ClanViewRequest>§subtype_50: Option<ClanViewResponse>§subtype_51: Option<ClanViewListRequest>§subtype_52: Option<ClanViewListResponse>§subtype_53: Option<FriendAcceptRequestRequest>§subtype_54: Option<FriendAcceptRequestResponse>§subtype_55: Option<FriendCancelRequestRequest>§subtype_56: Option<FriendCancelRequestResponse>§subtype_57: Option<FriendListRequest>§subtype_58: Option<FriendListResponse>§subtype_59: Option<FriendRejectRequestRequest>§subtype_60: Option<FriendRejectRequestResponse>§subtype_61: Option<FriendRemoveRequest>§subtype_62: Option<FriendRemoveResponse>§subtype_63: Option<FriendRemovedEvent>§subtype_64: Option<FriendRequestAcceptedEvent>§subtype_65: Option<FriendRequestCancelledEvent>§subtype_66: Option<FriendRequestReceivedEvent>§subtype_67: Option<FriendRequestRejectedEvent>§subtype_68: Option<FriendSendRequestRequest>§subtype_69: Option<FriendSendRequestResponse>§subtype_70: Option<LobbyAddBotRequest>§subtype_71: Option<LobbyAddBotResponse>§subtype_72: Option<LobbyAppointBossRequest>§subtype_73: Option<LobbyAppointBossResponse>§subtype_74: Option<LobbyCreateRequest>§subtype_75: Option<LobbyCreateResponse>§subtype_76: Option<LobbyJoinRequest>§subtype_77: Option<LobbyJoinResponse>§subtype_78: Option<LobbyJoinAllyTeamRequest>§subtype_79: Option<LobbyJoinAllyTeamResponse>§subtype_80: Option<LobbyJoinBattleRequest>§subtype_81: Option<LobbyJoinBattleResponse>§subtype_82: Option<LobbyJoinQueueRequest>§subtype_83: Option<LobbyJoinQueueResponse>§subtype_84: Option<LobbyLeaveRequest>§subtype_85: Option<LobbyLeaveResponse>§subtype_86: Option<LobbyLeftEvent>§subtype_87: Option<LobbyListResetEvent>§subtype_88: Option<LobbyListUpdatedEvent>§subtype_89: Option<LobbyRemoveBotRequest>§subtype_90: Option<LobbyRemoveBotResponse>§subtype_91: Option<LobbySpectateRequest>§subtype_92: Option<LobbySpectateResponse>§subtype_93: Option<LobbyStartBattleRequest>§subtype_94: Option<LobbyStartBattleResponse>§subtype_95: Option<LobbySubscribeListRequest>§subtype_96: Option<LobbySubscribeListResponse>§subtype_97: Option<LobbyUnbossRequest>§subtype_98: Option<LobbyUnbossResponse>§subtype_99: Option<LobbyUnsubscribeListRequest>§subtype_100: Option<LobbyUnsubscribeListResponse>§subtype_101: Option<LobbyUpdateRequest>§subtype_102: Option<LobbyUpdateResponse>§subtype_103: Option<LobbyUpdateBotRequest>§subtype_104: Option<LobbyUpdateBotResponse>§subtype_105: Option<LobbyUpdateClientStatusRequest>§subtype_106: Option<LobbyUpdateClientStatusResponse>§subtype_107: Option<LobbyUpdatedEvent>§subtype_108: Option<LobbyVoteEndedEvent>§subtype_109: Option<LobbyVoteSubmitRequest>§subtype_110: Option<LobbyVoteSubmitResponse>§subtype_111: Option<MatchmakingCancelRequest>§subtype_112: Option<MatchmakingCancelResponse>§subtype_113: Option<MatchmakingCancelledEvent>§subtype_114: Option<MatchmakingFoundEvent>§subtype_115: Option<MatchmakingFoundUpdateEvent>§subtype_116: Option<MatchmakingListRequest>§subtype_117: Option<MatchmakingListResponse>§subtype_118: Option<MatchmakingLostEvent>§subtype_119: Option<MatchmakingQueueRequest>§subtype_120: Option<MatchmakingQueueResponse>§subtype_121: Option<MatchmakingQueueUpdateEvent>§subtype_122: Option<MatchmakingQueuesJoinedEvent>§subtype_123: Option<MatchmakingReadyRequest>§subtype_124: Option<MatchmakingReadyResponse>§subtype_125: Option<MessagingReceivedEvent>§subtype_126: Option<MessagingSendRequest>§subtype_127: Option<MessagingSendResponse>§subtype_128: Option<MessagingSubscribeReceivedRequest>§subtype_129: Option<MessagingSubscribeReceivedResponse>§subtype_130: Option<PartyAcceptInviteRequest>§subtype_131: Option<PartyAcceptInviteResponse>§subtype_132: Option<PartyCancelInviteRequest>§subtype_133: Option<PartyCancelInviteResponse>§subtype_134: Option<PartyCreateRequest>§subtype_135: Option<PartyCreateResponse>§subtype_136: Option<PartyDeclineInviteRequest>§subtype_137: Option<PartyDeclineInviteResponse>§subtype_138: Option<PartyInviteRequest>§subtype_139: Option<PartyInviteResponse>§subtype_140: Option<PartyInvitedEvent>§subtype_141: Option<PartyKickMemberRequest>§subtype_142: Option<PartyKickMemberResponse>§subtype_143: Option<PartyLeaveRequest>§subtype_144: Option<PartyLeaveResponse>§subtype_145: Option<PartyRemovedEvent>§subtype_146: Option<PartyUpdatedEvent>§subtype_147: Option<SystemDisconnectRequest>§subtype_148: Option<SystemDisconnectResponse>§subtype_149: Option<SystemServerStatsRequest>§subtype_150: Option<SystemServerStatsResponse>§subtype_151: Option<UserInfoRequest>§subtype_152: Option<UserInfoResponse>§subtype_153: Option<UserSelfEvent>§subtype_154: Option<UserSubscribeUpdatesRequest>§subtype_155: Option<UserSubscribeUpdatesResponse>§subtype_156: Option<UserUnsubscribeUpdatesRequest>§subtype_157: Option<UserUnsubscribeUpdatesResponse>§subtype_158: Option<UserUpdatedEvent>

Implementations§

Trait Implementations§

Source§

impl Clone for TachyonCommand

Source§

fn clone(&self) -> TachyonCommand

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TachyonCommand

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TachyonCommand

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for TachyonCommand

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<TachyonCommand> for TachyonCommand

Source§

fn from(value: TachyonCommand) -> Self

Converts to this type from the input type.
Source§

impl Serialize for TachyonCommand

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<TachyonCommand> for TachyonCommand

Source§

type Error = ConversionError

The type returned in the event of a conversion error.
Source§

fn try_from(value: TachyonCommand) -> Result<Self, ConversionError>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,