@ughuuu/game_server 1.0.1059 → 1.0.1063

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +72 -36
  2. package/dist/ApiClient.js +2 -2
  3. package/dist/api/AdminChatApi.js +2 -2
  4. package/dist/api/AdminEconomyApi.js +2 -2
  5. package/dist/api/AdminGroupsApi.js +2 -2
  6. package/dist/api/AdminKVApi.js +2 -2
  7. package/dist/api/AdminLeaderboardsApi.js +2 -2
  8. package/dist/api/AdminLobbiesApi.js +2 -2
  9. package/dist/api/AdminMatchmakingApi.js +2 -2
  10. package/dist/api/AdminNotificationsApi.js +2 -2
  11. package/dist/api/AdminPushApi.js +179 -0
  12. package/dist/api/AdminQuestsApi.js +418 -0
  13. package/dist/api/AdminSessionsApi.js +2 -2
  14. package/dist/api/AdminStorageApi.js +2 -2
  15. package/dist/api/AdminTournamentsApi.js +2 -2
  16. package/dist/api/AdminUsersApi.js +2 -2
  17. package/dist/api/AuthenticationApi.js +2 -2
  18. package/dist/api/ChatApi.js +2 -2
  19. package/dist/api/EconomyApi.js +2 -2
  20. package/dist/api/FriendsApi.js +2 -2
  21. package/dist/api/GroupsApi.js +2 -2
  22. package/dist/api/HealthApi.js +2 -2
  23. package/dist/api/HooksApi.js +2 -2
  24. package/dist/api/KVApi.js +2 -2
  25. package/dist/api/LeaderboardsApi.js +2 -2
  26. package/dist/api/LobbiesApi.js +41 -2
  27. package/dist/api/MatchmakingApi.js +2 -2
  28. package/dist/api/NotificationsApi.js +2 -2
  29. package/dist/api/PartiesApi.js +2 -2
  30. package/dist/api/PaymentsApi.js +2 -2
  31. package/dist/api/PushApi.js +166 -0
  32. package/dist/api/QuestsApi.js +233 -0
  33. package/dist/api/TournamentsApi.js +2 -2
  34. package/dist/api/UsersApi.js +2 -2
  35. package/dist/gamend_proto.js +14 -5
  36. package/dist/gamend_realtime.pb.js +205 -106
  37. package/dist/index.js +185 -80
  38. package/dist/model/AcceptPartyInvite200Response.js +2 -2
  39. package/dist/model/AcceptPartyInvite200ResponseMembersInner.js +2 -2
  40. package/dist/model/AcceptPartyInviteRequest.js +2 -2
  41. package/dist/model/AdminCancelMatchmakingTicket200Response.js +2 -2
  42. package/dist/model/AdminCreateLeaderboard200Response.js +2 -2
  43. package/dist/model/AdminCreateLeaderboard200ResponseData.js +2 -2
  44. package/dist/model/AdminCreateLeaderboardRequest.js +2 -2
  45. package/dist/model/AdminCreateNotificationRequest.js +2 -2
  46. package/dist/model/AdminCreateQuestRequest.js +321 -0
  47. package/dist/model/AdminCreateQuestRequestObjectivesInner.js +128 -0
  48. package/dist/model/AdminCreateQuestRequestRewardsInner.js +152 -0
  49. package/dist/model/AdminDeleteChatConversation200Response.js +2 -2
  50. package/dist/model/AdminDrawTournament200Response.js +2 -2
  51. package/dist/model/AdminDrawTournament200ResponseData.js +2 -2
  52. package/dist/model/AdminGrantItemRequest.js +2 -2
  53. package/dist/model/AdminListChatMessages200Response.js +6 -6
  54. package/dist/model/AdminListChatMessages200ResponseDataInner.js +2 -2
  55. package/dist/model/AdminListGroups200Response.js +6 -6
  56. package/dist/model/AdminListKvEntries200Response.js +6 -6
  57. package/dist/model/AdminListLobbies200Response.js +6 -6
  58. package/dist/model/AdminListLobbies200ResponseDataInner.js +2 -2
  59. package/dist/model/AdminListMatchmakingTickets200Response.js +6 -6
  60. package/dist/model/AdminListMatchmakingTickets200ResponseDataInner.js +2 -2
  61. package/dist/model/AdminListNotifications200Response.js +6 -6
  62. package/dist/model/AdminListNotifications200ResponseDataInner.js +2 -2
  63. package/dist/model/AdminListPushTokens200Response.js +118 -0
  64. package/dist/model/AdminListPushTokens200ResponseDataInner.js +226 -0
  65. package/dist/model/AdminListQuestProgress200Response.js +118 -0
  66. package/dist/model/AdminListQuestProgress200ResponseDataInner.js +208 -0
  67. package/dist/model/AdminListQuests200Response.js +118 -0
  68. package/dist/model/AdminListQuests200ResponseDataInner.js +310 -0
  69. package/dist/model/AdminListSessions200Response.js +6 -6
  70. package/dist/model/AdminListSessions200ResponseDataInner.js +2 -2
  71. package/dist/model/AdminListStorageObjects200Response.js +2 -2
  72. package/dist/model/AdminListStorageObjects200ResponseDataInner.js +2 -2
  73. package/dist/model/AdminListStorageObjects200ResponseUsage.js +2 -2
  74. package/dist/model/AdminMatchmakingStats200Response.js +2 -2
  75. package/dist/model/AdminMatchmakingStats200ResponseData.js +2 -2
  76. package/dist/model/AdminResetQuestRequest.js +127 -0
  77. package/dist/model/AdminResolveTournamentMatchRequest.js +2 -2
  78. package/dist/model/AdminSendPushRequest.js +190 -0
  79. package/dist/model/AdminSpendCurrencyRequest.js +2 -2
  80. package/dist/model/AdminSubmitLeaderboardScoreRequest.js +2 -2
  81. package/dist/model/AdminUpdateGroup200Response.js +2 -2
  82. package/dist/model/AdminUpdateGroupRequest.js +2 -2
  83. package/dist/model/AdminUpdateKvEntryRequest.js +2 -2
  84. package/dist/model/AdminUpdateLeaderboardRecord200Response.js +2 -2
  85. package/dist/model/AdminUpdateLeaderboardRecord200ResponseData.js +2 -2
  86. package/dist/model/AdminUpdateLeaderboardRecordRequest.js +2 -2
  87. package/dist/model/AdminUpdateLeaderboardRequest.js +2 -2
  88. package/dist/model/AdminUpdateLobby200Response.js +2 -2
  89. package/dist/model/AdminUpdateLobbyRequest.js +2 -2
  90. package/dist/model/AdminUpdateTournamentRequest.js +2 -2
  91. package/dist/model/AdminUpdateUser200Response.js +2 -2
  92. package/dist/model/AdminUpdateUser200ResponseData.js +2 -2
  93. package/dist/model/AdminUpdateUserRequest.js +2 -2
  94. package/dist/model/AdminUpsertKv200Response.js +2 -2
  95. package/dist/model/AdminUpsertKv200ResponseData.js +2 -2
  96. package/dist/model/AdminUpsertKvRequest.js +2 -2
  97. package/dist/model/ApproveJoinRequest200Response.js +2 -2
  98. package/dist/model/CallHook200Response.js +2 -2
  99. package/dist/model/CallHookRequest.js +2 -2
  100. package/dist/model/CancelJoinRequest200Response.js +2 -2
  101. package/dist/model/CancelPartyInviteRequest.js +2 -2
  102. package/dist/model/ChatUnreadCount200Response.js +2 -2
  103. package/dist/model/ClaimQuest200Response.js +91 -0
  104. package/dist/model/ClaimQuest200ResponseData.js +124 -0
  105. package/dist/model/CreateCurrentUserAvatarUploadUrlRequest.js +2 -2
  106. package/dist/model/CreateFriendRequestRequest.js +2 -2
  107. package/dist/model/CreateGroupRequest.js +2 -2
  108. package/dist/model/CreateLobbyRequest.js +2 -2
  109. package/dist/model/CreatePartyRequest.js +2 -2
  110. package/dist/model/DeclineGroupInvite200Response.js +2 -2
  111. package/dist/model/DeclinePartyInviteRequest.js +2 -2
  112. package/dist/model/DeleteNotifications200Response.js +2 -2
  113. package/dist/model/DeleteNotificationsRequest.js +2 -2
  114. package/dist/model/DeletePushToken200Response.js +210 -0
  115. package/dist/model/DemoteGroupMemberRequest.js +2 -2
  116. package/dist/model/DeviceLoginRequest.js +2 -2
  117. package/dist/model/ErrorResponse.js +2 -2
  118. package/dist/model/GetCurrentUser200Response.js +2 -2
  119. package/dist/model/GetCurrentUser200ResponseLinkedProviders.js +2 -2
  120. package/dist/model/GetCurrentUserInventory200Response.js +2 -2
  121. package/dist/model/GetKv200Response.js +2 -2
  122. package/dist/model/GetLobby200Response.js +2 -2
  123. package/dist/model/GetMyRecord200Response.js +2 -2
  124. package/dist/model/GetMyRecord200ResponseData.js +2 -2
  125. package/dist/model/HealthResponse.js +2 -2
  126. package/dist/model/InviteToGroup200Response.js +2 -2
  127. package/dist/model/InviteToGroupRequest.js +2 -2
  128. package/dist/model/InviteToPartyRequest.js +2 -2
  129. package/dist/model/KickGroupMemberRequest.js +2 -2
  130. package/dist/model/KickPartyMemberRequest.js +2 -2
  131. package/dist/model/LinkDeviceRequest.js +2 -2
  132. package/dist/model/ListBlacklistedUsers200Response.js +2 -2
  133. package/dist/model/ListBlacklistedUsers200ResponseDataInner.js +2 -2
  134. package/dist/model/ListBlockedFriends200Response.js +6 -6
  135. package/dist/model/ListBlockedFriends200ResponseDataInner.js +2 -2
  136. package/dist/model/ListChatMessages200Response.js +2 -2
  137. package/dist/model/ListChatMessages200ResponseDataInner.js +2 -2
  138. package/dist/model/ListCurrentUserLedger200Response.js +2 -2
  139. package/dist/model/ListCurrentUserLedger200ResponseDataInner.js +2 -2
  140. package/dist/model/ListCurrentUserLedger401Response.js +2 -2
  141. package/dist/model/ListFriendRequests200Response.js +2 -2
  142. package/dist/model/ListFriendRequests200ResponseIncomingInner.js +2 -2
  143. package/dist/model/ListFriendRequests200ResponseIncomingInnerRequester.js +2 -2
  144. package/dist/model/ListFriendRequests200ResponseMeta.js +2 -2
  145. package/dist/model/ListFriends200Response.js +6 -6
  146. package/dist/model/ListFriends200ResponseDataInner.js +2 -2
  147. package/dist/model/ListGroupInvitations200Response.js +6 -6
  148. package/dist/model/ListGroupInvitations200ResponseDataInner.js +2 -2
  149. package/dist/model/ListGroupMembers200Response.js +6 -6
  150. package/dist/model/ListJoinRequests200Response.js +6 -6
  151. package/dist/model/ListLeaderboardRecords200Response.js +6 -6
  152. package/dist/model/ListLeaderboards200Response.js +6 -6
  153. package/dist/model/ListLobbies200Response.js +6 -6
  154. package/dist/model/ListLobbies200ResponseDataInner.js +2 -2
  155. package/dist/model/ListMyGroups200Response.js +6 -6
  156. package/dist/model/ListMyGroups200ResponseDataInner.js +2 -2
  157. package/dist/model/ListNotifications200Response.js +6 -6
  158. package/dist/model/ListNotifications200ResponseDataInner.js +2 -2
  159. package/dist/model/ListPartyInvitations200ResponseInner.js +2 -2
  160. package/dist/model/ListPushTokens200Response.js +118 -0
  161. package/dist/model/ListRecordsAroundUser200Response.js +2 -2
  162. package/dist/model/ListSentInvitations200Response.js +6 -6
  163. package/dist/model/ListSentInvitations200ResponseDataInner.js +2 -2
  164. package/dist/model/ListTournaments200Response.js +2 -2
  165. package/dist/model/ListTournaments200ResponseDataInner.js +2 -2
  166. package/dist/model/Login200Response.js +2 -2
  167. package/dist/model/Login200ResponseData.js +2 -2
  168. package/dist/model/LoginRequest.js +2 -2
  169. package/dist/model/MarkChatReadRequest.js +2 -2
  170. package/dist/model/MatchmakingCancel200Response.js +2 -2
  171. package/dist/model/MatchmakingJoin201Response.js +2 -2
  172. package/dist/model/MatchmakingJoin201ResponseData.js +2 -2
  173. package/dist/model/MatchmakingJoinRequest.js +2 -2
  174. package/dist/model/MatchmakingMyTicket200Response.js +2 -2
  175. package/dist/model/MatchmakingMyTicket200ResponseData.js +2 -2
  176. package/dist/model/MatchmakingStats200Response.js +2 -2
  177. package/dist/model/MatchmakingStats200ResponseData.js +2 -2
  178. package/dist/model/MatchmakingStats200ResponseDataQueuesInner.js +2 -2
  179. package/dist/model/NotifyGroup200Response.js +2 -2
  180. package/dist/model/NotifyGroupRequest.js +2 -2
  181. package/dist/model/OAuthSessionData.js +2 -2
  182. package/dist/model/OAuthSessionDataDetails.js +2 -2
  183. package/dist/model/OAuthSessionStatus.js +2 -2
  184. package/dist/model/OauthApiCallback200Response.js +2 -2
  185. package/dist/model/OauthApiCallbackRequest.js +2 -2
  186. package/dist/model/OauthCallbackApiAppleIosRequest.js +2 -2
  187. package/dist/model/OauthGoogleIdTokenRequest.js +2 -2
  188. package/dist/model/OauthRequest200Response.js +2 -2
  189. package/dist/model/OauthSessionStatus404Response.js +2 -2
  190. package/dist/model/PartyCreateLobbyRequest.js +2 -2
  191. package/dist/model/PartyJoinLobbyRequest.js +2 -2
  192. package/dist/model/PaymentsSteamCheckoutRequest.js +2 -2
  193. package/dist/model/PaymentsSteamFinalizeRequest.js +2 -2
  194. package/dist/model/PaymentsStripeCheckoutRequest.js +2 -2
  195. package/dist/model/PromoteGroupMemberRequest.js +2 -2
  196. package/dist/model/QuickJoinRequest.js +2 -2
  197. package/dist/model/RefreshToken200Response.js +2 -2
  198. package/dist/model/RefreshToken200ResponseData.js +2 -2
  199. package/dist/model/RefreshTokenRequest.js +2 -2
  200. package/dist/model/RegisterPushTokenRequest.js +199 -0
  201. package/dist/model/ResolveLeaderboardSlugs200Response.js +2 -2
  202. package/dist/model/ResolveLeaderboardSlugs200ResponseDataValue.js +2 -2
  203. package/dist/model/ResolveLeaderboardSlugsRequest.js +2 -2
  204. package/dist/model/SearchUsers200Response.js +6 -6
  205. package/dist/model/SearchUsers200ResponseDataInner.js +2 -2
  206. package/dist/model/SendChatMessageRequest.js +2 -2
  207. package/dist/model/SendNotificationRequest.js +2 -2
  208. package/dist/model/SetCurrentUserAvatarRequest.js +2 -2
  209. package/dist/model/SetLobbyStateRequest.js +113 -0
  210. package/dist/model/TournamentMyMatch200Response.js +2 -2
  211. package/dist/model/UpdateChatMessageRequest.js +2 -2
  212. package/dist/model/UpdateCurrentUserDisplayName400Response.js +2 -2
  213. package/dist/model/UpdateCurrentUserDisplayNameRequest.js +2 -2
  214. package/dist/model/UpdateCurrentUserPasswordRequest.js +2 -2
  215. package/dist/model/UpdateCurrentUserUsernameRequest.js +2 -2
  216. package/dist/model/UpdateGroupRequest.js +2 -2
  217. package/dist/model/UpdateLobbyRequest.js +2 -2
  218. package/dist/model/UpdatePartyRequest.js +2 -2
  219. package/dist/model/UserQuests200Response.js +124 -0
  220. package/dist/model/UserQuests200ResponseDataInner.js +361 -0
  221. package/dist/model/UserQuests200ResponseDataInnerObjectivesInner.js +108 -0
  222. package/dist/model/UserQuests200ResponseDataInnerProgress.js +150 -0
  223. package/dist/model/UserQuests200ResponseDataInnerRewardsInner.js +130 -0
  224. package/dist/model/UserQuests200ResponseMeta.js +125 -0
  225. package/package.json +2 -2
  226. package/dist/api/AchievementsApi.js +0 -224
  227. package/dist/api/AdminAchievementsApi.js +0 -356
  228. package/dist/model/AdminCreateAchievementRequest.js +0 -182
  229. package/dist/model/AdminGrantAchievementRequest.js +0 -126
  230. package/dist/model/AdminIncrementAchievementRequest.js +0 -134
  231. package/dist/model/AdminListAchievements200Response.js +0 -118
  232. package/dist/model/AdminListAchievements200ResponseDataInner.js +0 -185
  233. package/dist/model/AdminRevokeAchievementRequest.js +0 -126
  234. package/dist/model/AdminUpdateAchievementRequest.js +0 -145
  235. package/dist/model/ListFriends200ResponseMeta.js +0 -125
  236. package/dist/model/MyAchievements200Response.js +0 -124
  237. package/dist/model/MyAchievements200ResponseDataInner.js +0 -196
package/dist/index.js CHANGED
@@ -21,18 +21,6 @@ Object.defineProperty(exports, "AcceptPartyInviteRequest", {
21
21
  return _AcceptPartyInviteRequest["default"];
22
22
  }
23
23
  });
24
- Object.defineProperty(exports, "AchievementsApi", {
25
- enumerable: true,
26
- get: function get() {
27
- return _AchievementsApi["default"];
28
- }
29
- });
30
- Object.defineProperty(exports, "AdminAchievementsApi", {
31
- enumerable: true,
32
- get: function get() {
33
- return _AdminAchievementsApi["default"];
34
- }
35
- });
36
24
  Object.defineProperty(exports, "AdminCancelMatchmakingTicket200Response", {
37
25
  enumerable: true,
38
26
  get: function get() {
@@ -45,12 +33,6 @@ Object.defineProperty(exports, "AdminChatApi", {
45
33
  return _AdminChatApi["default"];
46
34
  }
47
35
  });
48
- Object.defineProperty(exports, "AdminCreateAchievementRequest", {
49
- enumerable: true,
50
- get: function get() {
51
- return _AdminCreateAchievementRequest["default"];
52
- }
53
- });
54
36
  Object.defineProperty(exports, "AdminCreateLeaderboard200Response", {
55
37
  enumerable: true,
56
38
  get: function get() {
@@ -75,6 +57,24 @@ Object.defineProperty(exports, "AdminCreateNotificationRequest", {
75
57
  return _AdminCreateNotificationRequest["default"];
76
58
  }
77
59
  });
60
+ Object.defineProperty(exports, "AdminCreateQuestRequest", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _AdminCreateQuestRequest["default"];
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "AdminCreateQuestRequestObjectivesInner", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _AdminCreateQuestRequestObjectivesInner["default"];
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "AdminCreateQuestRequestRewardsInner", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _AdminCreateQuestRequestRewardsInner["default"];
76
+ }
77
+ });
78
78
  Object.defineProperty(exports, "AdminDeleteChatConversation200Response", {
79
79
  enumerable: true,
80
80
  get: function get() {
@@ -99,12 +99,6 @@ Object.defineProperty(exports, "AdminEconomyApi", {
99
99
  return _AdminEconomyApi["default"];
100
100
  }
101
101
  });
102
- Object.defineProperty(exports, "AdminGrantAchievementRequest", {
103
- enumerable: true,
104
- get: function get() {
105
- return _AdminGrantAchievementRequest["default"];
106
- }
107
- });
108
102
  Object.defineProperty(exports, "AdminGrantItemRequest", {
109
103
  enumerable: true,
110
104
  get: function get() {
@@ -117,12 +111,6 @@ Object.defineProperty(exports, "AdminGroupsApi", {
117
111
  return _AdminGroupsApi["default"];
118
112
  }
119
113
  });
120
- Object.defineProperty(exports, "AdminIncrementAchievementRequest", {
121
- enumerable: true,
122
- get: function get() {
123
- return _AdminIncrementAchievementRequest["default"];
124
- }
125
- });
126
114
  Object.defineProperty(exports, "AdminKVApi", {
127
115
  enumerable: true,
128
116
  get: function get() {
@@ -135,18 +123,6 @@ Object.defineProperty(exports, "AdminLeaderboardsApi", {
135
123
  return _AdminLeaderboardsApi["default"];
136
124
  }
137
125
  });
138
- Object.defineProperty(exports, "AdminListAchievements200Response", {
139
- enumerable: true,
140
- get: function get() {
141
- return _AdminListAchievements200Response["default"];
142
- }
143
- });
144
- Object.defineProperty(exports, "AdminListAchievements200ResponseDataInner", {
145
- enumerable: true,
146
- get: function get() {
147
- return _AdminListAchievements200ResponseDataInner["default"];
148
- }
149
- });
150
126
  Object.defineProperty(exports, "AdminListChatMessages200Response", {
151
127
  enumerable: true,
152
128
  get: function get() {
@@ -207,6 +183,42 @@ Object.defineProperty(exports, "AdminListNotifications200ResponseDataInner", {
207
183
  return _AdminListNotifications200ResponseDataInner["default"];
208
184
  }
209
185
  });
186
+ Object.defineProperty(exports, "AdminListPushTokens200Response", {
187
+ enumerable: true,
188
+ get: function get() {
189
+ return _AdminListPushTokens200Response["default"];
190
+ }
191
+ });
192
+ Object.defineProperty(exports, "AdminListPushTokens200ResponseDataInner", {
193
+ enumerable: true,
194
+ get: function get() {
195
+ return _AdminListPushTokens200ResponseDataInner["default"];
196
+ }
197
+ });
198
+ Object.defineProperty(exports, "AdminListQuestProgress200Response", {
199
+ enumerable: true,
200
+ get: function get() {
201
+ return _AdminListQuestProgress200Response["default"];
202
+ }
203
+ });
204
+ Object.defineProperty(exports, "AdminListQuestProgress200ResponseDataInner", {
205
+ enumerable: true,
206
+ get: function get() {
207
+ return _AdminListQuestProgress200ResponseDataInner["default"];
208
+ }
209
+ });
210
+ Object.defineProperty(exports, "AdminListQuests200Response", {
211
+ enumerable: true,
212
+ get: function get() {
213
+ return _AdminListQuests200Response["default"];
214
+ }
215
+ });
216
+ Object.defineProperty(exports, "AdminListQuests200ResponseDataInner", {
217
+ enumerable: true,
218
+ get: function get() {
219
+ return _AdminListQuests200ResponseDataInner["default"];
220
+ }
221
+ });
210
222
  Object.defineProperty(exports, "AdminListSessions200Response", {
211
223
  enumerable: true,
212
224
  get: function get() {
@@ -267,16 +279,34 @@ Object.defineProperty(exports, "AdminNotificationsApi", {
267
279
  return _AdminNotificationsApi["default"];
268
280
  }
269
281
  });
282
+ Object.defineProperty(exports, "AdminPushApi", {
283
+ enumerable: true,
284
+ get: function get() {
285
+ return _AdminPushApi["default"];
286
+ }
287
+ });
288
+ Object.defineProperty(exports, "AdminQuestsApi", {
289
+ enumerable: true,
290
+ get: function get() {
291
+ return _AdminQuestsApi["default"];
292
+ }
293
+ });
294
+ Object.defineProperty(exports, "AdminResetQuestRequest", {
295
+ enumerable: true,
296
+ get: function get() {
297
+ return _AdminResetQuestRequest["default"];
298
+ }
299
+ });
270
300
  Object.defineProperty(exports, "AdminResolveTournamentMatchRequest", {
271
301
  enumerable: true,
272
302
  get: function get() {
273
303
  return _AdminResolveTournamentMatchRequest["default"];
274
304
  }
275
305
  });
276
- Object.defineProperty(exports, "AdminRevokeAchievementRequest", {
306
+ Object.defineProperty(exports, "AdminSendPushRequest", {
277
307
  enumerable: true,
278
308
  get: function get() {
279
- return _AdminRevokeAchievementRequest["default"];
309
+ return _AdminSendPushRequest["default"];
280
310
  }
281
311
  });
282
312
  Object.defineProperty(exports, "AdminSessionsApi", {
@@ -309,12 +339,6 @@ Object.defineProperty(exports, "AdminTournamentsApi", {
309
339
  return _AdminTournamentsApi["default"];
310
340
  }
311
341
  });
312
- Object.defineProperty(exports, "AdminUpdateAchievementRequest", {
313
- enumerable: true,
314
- get: function get() {
315
- return _AdminUpdateAchievementRequest["default"];
316
- }
317
- });
318
342
  Object.defineProperty(exports, "AdminUpdateGroup200Response", {
319
343
  enumerable: true,
320
344
  get: function get() {
@@ -471,6 +495,18 @@ Object.defineProperty(exports, "ChatUnreadCount200Response", {
471
495
  return _ChatUnreadCount200Response["default"];
472
496
  }
473
497
  });
498
+ Object.defineProperty(exports, "ClaimQuest200Response", {
499
+ enumerable: true,
500
+ get: function get() {
501
+ return _ClaimQuest200Response["default"];
502
+ }
503
+ });
504
+ Object.defineProperty(exports, "ClaimQuest200ResponseData", {
505
+ enumerable: true,
506
+ get: function get() {
507
+ return _ClaimQuest200ResponseData["default"];
508
+ }
509
+ });
474
510
  Object.defineProperty(exports, "CreateCurrentUserAvatarUploadUrlRequest", {
475
511
  enumerable: true,
476
512
  get: function get() {
@@ -525,6 +561,12 @@ Object.defineProperty(exports, "DeleteNotificationsRequest", {
525
561
  return _DeleteNotificationsRequest["default"];
526
562
  }
527
563
  });
564
+ Object.defineProperty(exports, "DeletePushToken200Response", {
565
+ enumerable: true,
566
+ get: function get() {
567
+ return _DeletePushToken200Response["default"];
568
+ }
569
+ });
528
570
  Object.defineProperty(exports, "DemoteGroupMemberRequest", {
529
571
  enumerable: true,
530
572
  get: function get() {
@@ -759,12 +801,6 @@ Object.defineProperty(exports, "ListFriends200ResponseDataInner", {
759
801
  return _ListFriends200ResponseDataInner["default"];
760
802
  }
761
803
  });
762
- Object.defineProperty(exports, "ListFriends200ResponseMeta", {
763
- enumerable: true,
764
- get: function get() {
765
- return _ListFriends200ResponseMeta["default"];
766
- }
767
- });
768
804
  Object.defineProperty(exports, "ListGroupInvitations200Response", {
769
805
  enumerable: true,
770
806
  get: function get() {
@@ -843,6 +879,12 @@ Object.defineProperty(exports, "ListPartyInvitations200ResponseInner", {
843
879
  return _ListPartyInvitations200ResponseInner["default"];
844
880
  }
845
881
  });
882
+ Object.defineProperty(exports, "ListPushTokens200Response", {
883
+ enumerable: true,
884
+ get: function get() {
885
+ return _ListPushTokens200Response["default"];
886
+ }
887
+ });
846
888
  Object.defineProperty(exports, "ListRecordsAroundUser200Response", {
847
889
  enumerable: true,
848
890
  get: function get() {
@@ -963,18 +1005,6 @@ Object.defineProperty(exports, "MatchmakingStats200ResponseDataQueuesInner", {
963
1005
  return _MatchmakingStats200ResponseDataQueuesInner["default"];
964
1006
  }
965
1007
  });
966
- Object.defineProperty(exports, "MyAchievements200Response", {
967
- enumerable: true,
968
- get: function get() {
969
- return _MyAchievements200Response["default"];
970
- }
971
- });
972
- Object.defineProperty(exports, "MyAchievements200ResponseDataInner", {
973
- enumerable: true,
974
- get: function get() {
975
- return _MyAchievements200ResponseDataInner["default"];
976
- }
977
- });
978
1008
  Object.defineProperty(exports, "NotificationsApi", {
979
1009
  enumerable: true,
980
1010
  get: function get() {
@@ -1095,6 +1125,18 @@ Object.defineProperty(exports, "PromoteGroupMemberRequest", {
1095
1125
  return _PromoteGroupMemberRequest["default"];
1096
1126
  }
1097
1127
  });
1128
+ Object.defineProperty(exports, "PushApi", {
1129
+ enumerable: true,
1130
+ get: function get() {
1131
+ return _PushApi["default"];
1132
+ }
1133
+ });
1134
+ Object.defineProperty(exports, "QuestsApi", {
1135
+ enumerable: true,
1136
+ get: function get() {
1137
+ return _QuestsApi["default"];
1138
+ }
1139
+ });
1098
1140
  Object.defineProperty(exports, "QuickJoinRequest", {
1099
1141
  enumerable: true,
1100
1142
  get: function get() {
@@ -1119,6 +1161,12 @@ Object.defineProperty(exports, "RefreshTokenRequest", {
1119
1161
  return _RefreshTokenRequest["default"];
1120
1162
  }
1121
1163
  });
1164
+ Object.defineProperty(exports, "RegisterPushTokenRequest", {
1165
+ enumerable: true,
1166
+ get: function get() {
1167
+ return _RegisterPushTokenRequest["default"];
1168
+ }
1169
+ });
1122
1170
  Object.defineProperty(exports, "ResolveLeaderboardSlugs200Response", {
1123
1171
  enumerable: true,
1124
1172
  get: function get() {
@@ -1167,6 +1215,12 @@ Object.defineProperty(exports, "SetCurrentUserAvatarRequest", {
1167
1215
  return _SetCurrentUserAvatarRequest["default"];
1168
1216
  }
1169
1217
  });
1218
+ Object.defineProperty(exports, "SetLobbyStateRequest", {
1219
+ enumerable: true,
1220
+ get: function get() {
1221
+ return _SetLobbyStateRequest["default"];
1222
+ }
1223
+ });
1170
1224
  Object.defineProperty(exports, "TournamentMyMatch200Response", {
1171
1225
  enumerable: true,
1172
1226
  get: function get() {
@@ -1227,6 +1281,42 @@ Object.defineProperty(exports, "UpdatePartyRequest", {
1227
1281
  return _UpdatePartyRequest["default"];
1228
1282
  }
1229
1283
  });
1284
+ Object.defineProperty(exports, "UserQuests200Response", {
1285
+ enumerable: true,
1286
+ get: function get() {
1287
+ return _UserQuests200Response["default"];
1288
+ }
1289
+ });
1290
+ Object.defineProperty(exports, "UserQuests200ResponseDataInner", {
1291
+ enumerable: true,
1292
+ get: function get() {
1293
+ return _UserQuests200ResponseDataInner["default"];
1294
+ }
1295
+ });
1296
+ Object.defineProperty(exports, "UserQuests200ResponseDataInnerObjectivesInner", {
1297
+ enumerable: true,
1298
+ get: function get() {
1299
+ return _UserQuests200ResponseDataInnerObjectivesInner["default"];
1300
+ }
1301
+ });
1302
+ Object.defineProperty(exports, "UserQuests200ResponseDataInnerProgress", {
1303
+ enumerable: true,
1304
+ get: function get() {
1305
+ return _UserQuests200ResponseDataInnerProgress["default"];
1306
+ }
1307
+ });
1308
+ Object.defineProperty(exports, "UserQuests200ResponseDataInnerRewardsInner", {
1309
+ enumerable: true,
1310
+ get: function get() {
1311
+ return _UserQuests200ResponseDataInnerRewardsInner["default"];
1312
+ }
1313
+ });
1314
+ Object.defineProperty(exports, "UserQuests200ResponseMeta", {
1315
+ enumerable: true,
1316
+ get: function get() {
1317
+ return _UserQuests200ResponseMeta["default"];
1318
+ }
1319
+ });
1230
1320
  Object.defineProperty(exports, "UsersApi", {
1231
1321
  enumerable: true,
1232
1322
  get: function get() {
@@ -1238,19 +1328,17 @@ var _AcceptPartyInvite200Response = _interopRequireDefault(require("./model/Acce
1238
1328
  var _AcceptPartyInvite200ResponseMembersInner = _interopRequireDefault(require("./model/AcceptPartyInvite200ResponseMembersInner"));
1239
1329
  var _AcceptPartyInviteRequest = _interopRequireDefault(require("./model/AcceptPartyInviteRequest"));
1240
1330
  var _AdminCancelMatchmakingTicket200Response = _interopRequireDefault(require("./model/AdminCancelMatchmakingTicket200Response"));
1241
- var _AdminCreateAchievementRequest = _interopRequireDefault(require("./model/AdminCreateAchievementRequest"));
1242
1331
  var _AdminCreateLeaderboard200Response = _interopRequireDefault(require("./model/AdminCreateLeaderboard200Response"));
1243
1332
  var _AdminCreateLeaderboard200ResponseData = _interopRequireDefault(require("./model/AdminCreateLeaderboard200ResponseData"));
1244
1333
  var _AdminCreateLeaderboardRequest = _interopRequireDefault(require("./model/AdminCreateLeaderboardRequest"));
1245
1334
  var _AdminCreateNotificationRequest = _interopRequireDefault(require("./model/AdminCreateNotificationRequest"));
1335
+ var _AdminCreateQuestRequest = _interopRequireDefault(require("./model/AdminCreateQuestRequest"));
1336
+ var _AdminCreateQuestRequestObjectivesInner = _interopRequireDefault(require("./model/AdminCreateQuestRequestObjectivesInner"));
1337
+ var _AdminCreateQuestRequestRewardsInner = _interopRequireDefault(require("./model/AdminCreateQuestRequestRewardsInner"));
1246
1338
  var _AdminDeleteChatConversation200Response = _interopRequireDefault(require("./model/AdminDeleteChatConversation200Response"));
1247
1339
  var _AdminDrawTournament200Response = _interopRequireDefault(require("./model/AdminDrawTournament200Response"));
1248
1340
  var _AdminDrawTournament200ResponseData = _interopRequireDefault(require("./model/AdminDrawTournament200ResponseData"));
1249
- var _AdminGrantAchievementRequest = _interopRequireDefault(require("./model/AdminGrantAchievementRequest"));
1250
1341
  var _AdminGrantItemRequest = _interopRequireDefault(require("./model/AdminGrantItemRequest"));
1251
- var _AdminIncrementAchievementRequest = _interopRequireDefault(require("./model/AdminIncrementAchievementRequest"));
1252
- var _AdminListAchievements200Response = _interopRequireDefault(require("./model/AdminListAchievements200Response"));
1253
- var _AdminListAchievements200ResponseDataInner = _interopRequireDefault(require("./model/AdminListAchievements200ResponseDataInner"));
1254
1342
  var _AdminListChatMessages200Response = _interopRequireDefault(require("./model/AdminListChatMessages200Response"));
1255
1343
  var _AdminListChatMessages200ResponseDataInner = _interopRequireDefault(require("./model/AdminListChatMessages200ResponseDataInner"));
1256
1344
  var _AdminListGroups200Response = _interopRequireDefault(require("./model/AdminListGroups200Response"));
@@ -1261,6 +1349,12 @@ var _AdminListMatchmakingTickets200Response = _interopRequireDefault(require("./
1261
1349
  var _AdminListMatchmakingTickets200ResponseDataInner = _interopRequireDefault(require("./model/AdminListMatchmakingTickets200ResponseDataInner"));
1262
1350
  var _AdminListNotifications200Response = _interopRequireDefault(require("./model/AdminListNotifications200Response"));
1263
1351
  var _AdminListNotifications200ResponseDataInner = _interopRequireDefault(require("./model/AdminListNotifications200ResponseDataInner"));
1352
+ var _AdminListPushTokens200Response = _interopRequireDefault(require("./model/AdminListPushTokens200Response"));
1353
+ var _AdminListPushTokens200ResponseDataInner = _interopRequireDefault(require("./model/AdminListPushTokens200ResponseDataInner"));
1354
+ var _AdminListQuestProgress200Response = _interopRequireDefault(require("./model/AdminListQuestProgress200Response"));
1355
+ var _AdminListQuestProgress200ResponseDataInner = _interopRequireDefault(require("./model/AdminListQuestProgress200ResponseDataInner"));
1356
+ var _AdminListQuests200Response = _interopRequireDefault(require("./model/AdminListQuests200Response"));
1357
+ var _AdminListQuests200ResponseDataInner = _interopRequireDefault(require("./model/AdminListQuests200ResponseDataInner"));
1264
1358
  var _AdminListSessions200Response = _interopRequireDefault(require("./model/AdminListSessions200Response"));
1265
1359
  var _AdminListSessions200ResponseDataInner = _interopRequireDefault(require("./model/AdminListSessions200ResponseDataInner"));
1266
1360
  var _AdminListStorageObjects200Response = _interopRequireDefault(require("./model/AdminListStorageObjects200Response"));
@@ -1268,11 +1362,11 @@ var _AdminListStorageObjects200ResponseDataInner = _interopRequireDefault(requir
1268
1362
  var _AdminListStorageObjects200ResponseUsage = _interopRequireDefault(require("./model/AdminListStorageObjects200ResponseUsage"));
1269
1363
  var _AdminMatchmakingStats200Response = _interopRequireDefault(require("./model/AdminMatchmakingStats200Response"));
1270
1364
  var _AdminMatchmakingStats200ResponseData = _interopRequireDefault(require("./model/AdminMatchmakingStats200ResponseData"));
1365
+ var _AdminResetQuestRequest = _interopRequireDefault(require("./model/AdminResetQuestRequest"));
1271
1366
  var _AdminResolveTournamentMatchRequest = _interopRequireDefault(require("./model/AdminResolveTournamentMatchRequest"));
1272
- var _AdminRevokeAchievementRequest = _interopRequireDefault(require("./model/AdminRevokeAchievementRequest"));
1367
+ var _AdminSendPushRequest = _interopRequireDefault(require("./model/AdminSendPushRequest"));
1273
1368
  var _AdminSpendCurrencyRequest = _interopRequireDefault(require("./model/AdminSpendCurrencyRequest"));
1274
1369
  var _AdminSubmitLeaderboardScoreRequest = _interopRequireDefault(require("./model/AdminSubmitLeaderboardScoreRequest"));
1275
- var _AdminUpdateAchievementRequest = _interopRequireDefault(require("./model/AdminUpdateAchievementRequest"));
1276
1370
  var _AdminUpdateGroup200Response = _interopRequireDefault(require("./model/AdminUpdateGroup200Response"));
1277
1371
  var _AdminUpdateGroupRequest = _interopRequireDefault(require("./model/AdminUpdateGroupRequest"));
1278
1372
  var _AdminUpdateKvEntryRequest = _interopRequireDefault(require("./model/AdminUpdateKvEntryRequest"));
@@ -1295,6 +1389,8 @@ var _CallHookRequest = _interopRequireDefault(require("./model/CallHookRequest")
1295
1389
  var _CancelJoinRequest200Response = _interopRequireDefault(require("./model/CancelJoinRequest200Response"));
1296
1390
  var _CancelPartyInviteRequest = _interopRequireDefault(require("./model/CancelPartyInviteRequest"));
1297
1391
  var _ChatUnreadCount200Response = _interopRequireDefault(require("./model/ChatUnreadCount200Response"));
1392
+ var _ClaimQuest200Response = _interopRequireDefault(require("./model/ClaimQuest200Response"));
1393
+ var _ClaimQuest200ResponseData = _interopRequireDefault(require("./model/ClaimQuest200ResponseData"));
1298
1394
  var _CreateCurrentUserAvatarUploadUrlRequest = _interopRequireDefault(require("./model/CreateCurrentUserAvatarUploadUrlRequest"));
1299
1395
  var _CreateFriendRequestRequest = _interopRequireDefault(require("./model/CreateFriendRequestRequest"));
1300
1396
  var _CreateGroupRequest = _interopRequireDefault(require("./model/CreateGroupRequest"));
@@ -1304,6 +1400,7 @@ var _DeclineGroupInvite200Response = _interopRequireDefault(require("./model/Dec
1304
1400
  var _DeclinePartyInviteRequest = _interopRequireDefault(require("./model/DeclinePartyInviteRequest"));
1305
1401
  var _DeleteNotifications200Response = _interopRequireDefault(require("./model/DeleteNotifications200Response"));
1306
1402
  var _DeleteNotificationsRequest = _interopRequireDefault(require("./model/DeleteNotificationsRequest"));
1403
+ var _DeletePushToken200Response = _interopRequireDefault(require("./model/DeletePushToken200Response"));
1307
1404
  var _DemoteGroupMemberRequest = _interopRequireDefault(require("./model/DemoteGroupMemberRequest"));
1308
1405
  var _DeviceLoginRequest = _interopRequireDefault(require("./model/DeviceLoginRequest"));
1309
1406
  var _ErrorResponse = _interopRequireDefault(require("./model/ErrorResponse"));
@@ -1336,7 +1433,6 @@ var _ListFriendRequests200ResponseIncomingInnerRequester = _interopRequireDefaul
1336
1433
  var _ListFriendRequests200ResponseMeta = _interopRequireDefault(require("./model/ListFriendRequests200ResponseMeta"));
1337
1434
  var _ListFriends200Response = _interopRequireDefault(require("./model/ListFriends200Response"));
1338
1435
  var _ListFriends200ResponseDataInner = _interopRequireDefault(require("./model/ListFriends200ResponseDataInner"));
1339
- var _ListFriends200ResponseMeta = _interopRequireDefault(require("./model/ListFriends200ResponseMeta"));
1340
1436
  var _ListGroupInvitations200Response = _interopRequireDefault(require("./model/ListGroupInvitations200Response"));
1341
1437
  var _ListGroupInvitations200ResponseDataInner = _interopRequireDefault(require("./model/ListGroupInvitations200ResponseDataInner"));
1342
1438
  var _ListGroupMembers200Response = _interopRequireDefault(require("./model/ListGroupMembers200Response"));
@@ -1350,6 +1446,7 @@ var _ListMyGroups200ResponseDataInner = _interopRequireDefault(require("./model/
1350
1446
  var _ListNotifications200Response = _interopRequireDefault(require("./model/ListNotifications200Response"));
1351
1447
  var _ListNotifications200ResponseDataInner = _interopRequireDefault(require("./model/ListNotifications200ResponseDataInner"));
1352
1448
  var _ListPartyInvitations200ResponseInner = _interopRequireDefault(require("./model/ListPartyInvitations200ResponseInner"));
1449
+ var _ListPushTokens200Response = _interopRequireDefault(require("./model/ListPushTokens200Response"));
1353
1450
  var _ListRecordsAroundUser200Response = _interopRequireDefault(require("./model/ListRecordsAroundUser200Response"));
1354
1451
  var _ListSentInvitations200Response = _interopRequireDefault(require("./model/ListSentInvitations200Response"));
1355
1452
  var _ListSentInvitations200ResponseDataInner = _interopRequireDefault(require("./model/ListSentInvitations200ResponseDataInner"));
@@ -1368,8 +1465,6 @@ var _MatchmakingMyTicket200ResponseData = _interopRequireDefault(require("./mode
1368
1465
  var _MatchmakingStats200Response = _interopRequireDefault(require("./model/MatchmakingStats200Response"));
1369
1466
  var _MatchmakingStats200ResponseData = _interopRequireDefault(require("./model/MatchmakingStats200ResponseData"));
1370
1467
  var _MatchmakingStats200ResponseDataQueuesInner = _interopRequireDefault(require("./model/MatchmakingStats200ResponseDataQueuesInner"));
1371
- var _MyAchievements200Response = _interopRequireDefault(require("./model/MyAchievements200Response"));
1372
- var _MyAchievements200ResponseDataInner = _interopRequireDefault(require("./model/MyAchievements200ResponseDataInner"));
1373
1468
  var _NotifyGroup200Response = _interopRequireDefault(require("./model/NotifyGroup200Response"));
1374
1469
  var _NotifyGroupRequest = _interopRequireDefault(require("./model/NotifyGroupRequest"));
1375
1470
  var _OAuthSessionData = _interopRequireDefault(require("./model/OAuthSessionData"));
@@ -1391,6 +1486,7 @@ var _QuickJoinRequest = _interopRequireDefault(require("./model/QuickJoinRequest
1391
1486
  var _RefreshToken200Response = _interopRequireDefault(require("./model/RefreshToken200Response"));
1392
1487
  var _RefreshToken200ResponseData = _interopRequireDefault(require("./model/RefreshToken200ResponseData"));
1393
1488
  var _RefreshTokenRequest = _interopRequireDefault(require("./model/RefreshTokenRequest"));
1489
+ var _RegisterPushTokenRequest = _interopRequireDefault(require("./model/RegisterPushTokenRequest"));
1394
1490
  var _ResolveLeaderboardSlugs200Response = _interopRequireDefault(require("./model/ResolveLeaderboardSlugs200Response"));
1395
1491
  var _ResolveLeaderboardSlugs200ResponseDataValue = _interopRequireDefault(require("./model/ResolveLeaderboardSlugs200ResponseDataValue"));
1396
1492
  var _ResolveLeaderboardSlugsRequest = _interopRequireDefault(require("./model/ResolveLeaderboardSlugsRequest"));
@@ -1399,6 +1495,7 @@ var _SearchUsers200ResponseDataInner = _interopRequireDefault(require("./model/S
1399
1495
  var _SendChatMessageRequest = _interopRequireDefault(require("./model/SendChatMessageRequest"));
1400
1496
  var _SendNotificationRequest = _interopRequireDefault(require("./model/SendNotificationRequest"));
1401
1497
  var _SetCurrentUserAvatarRequest = _interopRequireDefault(require("./model/SetCurrentUserAvatarRequest"));
1498
+ var _SetLobbyStateRequest = _interopRequireDefault(require("./model/SetLobbyStateRequest"));
1402
1499
  var _TournamentMyMatch200Response = _interopRequireDefault(require("./model/TournamentMyMatch200Response"));
1403
1500
  var _UpdateChatMessageRequest = _interopRequireDefault(require("./model/UpdateChatMessageRequest"));
1404
1501
  var _UpdateCurrentUserDisplayName400Response = _interopRequireDefault(require("./model/UpdateCurrentUserDisplayName400Response"));
@@ -1408,8 +1505,12 @@ var _UpdateCurrentUserUsernameRequest = _interopRequireDefault(require("./model/
1408
1505
  var _UpdateGroupRequest = _interopRequireDefault(require("./model/UpdateGroupRequest"));
1409
1506
  var _UpdateLobbyRequest = _interopRequireDefault(require("./model/UpdateLobbyRequest"));
1410
1507
  var _UpdatePartyRequest = _interopRequireDefault(require("./model/UpdatePartyRequest"));
1411
- var _AchievementsApi = _interopRequireDefault(require("./api/AchievementsApi"));
1412
- var _AdminAchievementsApi = _interopRequireDefault(require("./api/AdminAchievementsApi"));
1508
+ var _UserQuests200Response = _interopRequireDefault(require("./model/UserQuests200Response"));
1509
+ var _UserQuests200ResponseDataInner = _interopRequireDefault(require("./model/UserQuests200ResponseDataInner"));
1510
+ var _UserQuests200ResponseDataInnerObjectivesInner = _interopRequireDefault(require("./model/UserQuests200ResponseDataInnerObjectivesInner"));
1511
+ var _UserQuests200ResponseDataInnerProgress = _interopRequireDefault(require("./model/UserQuests200ResponseDataInnerProgress"));
1512
+ var _UserQuests200ResponseDataInnerRewardsInner = _interopRequireDefault(require("./model/UserQuests200ResponseDataInnerRewardsInner"));
1513
+ var _UserQuests200ResponseMeta = _interopRequireDefault(require("./model/UserQuests200ResponseMeta"));
1413
1514
  var _AdminChatApi = _interopRequireDefault(require("./api/AdminChatApi"));
1414
1515
  var _AdminEconomyApi = _interopRequireDefault(require("./api/AdminEconomyApi"));
1415
1516
  var _AdminGroupsApi = _interopRequireDefault(require("./api/AdminGroupsApi"));
@@ -1418,6 +1519,8 @@ var _AdminLeaderboardsApi = _interopRequireDefault(require("./api/AdminLeaderboa
1418
1519
  var _AdminLobbiesApi = _interopRequireDefault(require("./api/AdminLobbiesApi"));
1419
1520
  var _AdminMatchmakingApi = _interopRequireDefault(require("./api/AdminMatchmakingApi"));
1420
1521
  var _AdminNotificationsApi = _interopRequireDefault(require("./api/AdminNotificationsApi"));
1522
+ var _AdminPushApi = _interopRequireDefault(require("./api/AdminPushApi"));
1523
+ var _AdminQuestsApi = _interopRequireDefault(require("./api/AdminQuestsApi"));
1421
1524
  var _AdminSessionsApi = _interopRequireDefault(require("./api/AdminSessionsApi"));
1422
1525
  var _AdminStorageApi = _interopRequireDefault(require("./api/AdminStorageApi"));
1423
1526
  var _AdminTournamentsApi = _interopRequireDefault(require("./api/AdminTournamentsApi"));
@@ -1436,6 +1539,8 @@ var _MatchmakingApi = _interopRequireDefault(require("./api/MatchmakingApi"));
1436
1539
  var _NotificationsApi = _interopRequireDefault(require("./api/NotificationsApi"));
1437
1540
  var _PartiesApi = _interopRequireDefault(require("./api/PartiesApi"));
1438
1541
  var _PaymentsApi = _interopRequireDefault(require("./api/PaymentsApi"));
1542
+ var _PushApi = _interopRequireDefault(require("./api/PushApi"));
1543
+ var _QuestsApi = _interopRequireDefault(require("./api/QuestsApi"));
1439
1544
  var _TournamentsApi = _interopRequireDefault(require("./api/TournamentsApi"));
1440
1545
  var _UsersApi = _interopRequireDefault(require("./api/UsersApi"));
1441
1546
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -17,9 +17,9 @@ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r),
17
17
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
18
18
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /**
19
19
  * Game Server API
20
- * API for the Gamend Game Server. Provides HTTP REST API, real-time WebSocket channels, and WebRTC DataChannels for low-latency game data. Features authentication, users, lobbies, groups, parties, friends, chat, notifications, achievements, leaderboards, tournaments, matchmaking, payments, server scripting, and admin portal. ## **1. Authentication** This API uses JWT (JSON Web Tokens) with access and refresh tokens: ### **1.1 Getting Tokens** - **Email/Password**: POST to `/api/v1/login` with email and password - **Device (SDK)**: POST to `/api/v1/login` with a `device_id` string (creates/returns a device user) - **Discord OAuth**: Use `/api/v1/auth/discord` flow - **Google OAuth**: Use `/api/v1/auth/google` flow - **Facebook OAuth**: Use `/api/v1/auth/facebook` flow - **Apple Sign In**: Use `/auth/apple` browser flow or apple sdk flow - **Steam (OpenID)**: Use `/api/v1/auth/steam` flow Both methods return: - `access_token` - Short-lived (15 min), use for API requests - `refresh_token` - Long-lived (30 days), use to get new access tokens ### **1.2 Using Tokens** Include the access token in the Authorization header: ``` Authorization: Bearer <access_token> ``` ### **1.3 Refreshing Tokens** When your access token expires, use POST `/api/v1/refresh` with your refresh token to get a new access token. ## **2. Users** Users endpoints cover the user lifecycle and profile features. Key highlights: - **Registration and login** (email/password, device token for SDKs, and OAuth providers) - **Profile metadata** (JSON blob per user) and editable profile fields - **Account lifecycle**: password reset, email confirmation, and account deletion - **Sessions & tokens**: both browser sessions and JWT-based API tokens are supported ## **3. Friends** The Friends domain offers lightweight social features: - **Friend requests** (send / accept / reject / block flows) - **Friend listing & pagination**, with basic privacy controls - **Domain helpers** to manage and query friend relationships from API or UI contexts ## **4. Lobbies** Lobbies provide matchmaking / room management primitives. Highlights: - **Create / list / update / delete** lobbies with rich metadata (mode, region, tags) - **Host-managed or hostless** modes (hostless allowed internally, not creatable via public API) - **Membership management**: join, leave, kick users, and automatic host transfer - **Controls & protection**: max users, hidden/locked states, and optional password protection - **Hidden lobbies** are excluded from public listings; public listing endpoints are paginated ## **5. Notifications** Persistent user-to-user notifications that survive across sessions: - **Send notifications** to accepted friends with a title, optional content, and optional metadata - **List own notifications** with pagination (ordered oldest-first) - **Delete notifications** by ID (single or batch) - **Real-time delivery** via the user WebSocket channel (`\"notification\"` events) - **Offline delivery**: undeleted notifications are replayed on WebSocket reconnect ## **6. Groups** Groups provide persistent community management for players: - **Three group types**: `public` (anyone joins directly), `private` (users request to join, admins approve), `hidden` (invite-only, never listed) - **Membership roles**: `admin` and `member`, with promote/demote capabilities - **Join requests**: for private groups, users submit requests that admins approve or reject - **Invitations**: admins can invite users directly (blocked users are rejected) - **CRUD operations**: create, update, delete groups with metadata support - **Group chat**: integrated via the Chat API with `chat_type: \"group\"` ## **7. Parties** Ephemeral groups of users for short-lived sessions (e.g., matchmaking squads): - **Invite-only joining**: the party leader sends invites by user ID to friends or shared-group members - **Invite flow**: `POST /parties/invite` → recipient accepts via `POST /parties/invite/accept` or declines via `POST /parties/invite/decline`; leader can cancel via `POST /parties/invite/cancel` - **Invite visibility**: leader can list sent invites (`GET /parties/invitations/sent`); recipient can list received invites (`GET /parties/invitations`) - **Connection requirement**: invites can only be sent to users who are friends or share at least one group with the leader - **One party at a time**: a user can only be in one party; accepting an invite while already in a party is rejected - **Leader management**: the creator is the leader; leadership can be transferred - **Lobby integration**: parties can create or join lobbies as a group - **Party chat**: integrated via the Chat API with `chat_type: \"party\"` - **Real-time events** via the party WebSocket channel ## **8. Chat** Real-time messaging across multiple conversation types: - **Chat types**: `lobby` (within a lobby), `group` (within a group), `party` (within a party), `friend` (DMs between friends) - **Send messages** with content, optional metadata, and automatic access validation - **List messages** with pagination (newest first) - **Read tracking**: mark messages as read and get unread counts per conversation - **Real-time delivery** via PubSub and WebSocket channels - **Moderation hooks**: `before_chat_message` pipeline hook for filtering/blocking ## **9. Leaderboards** Server-managed ranked scoreboards: - **Multiple leaderboards**: create named leaderboards with configurable sort order - **Score submission**: submit scores with optional metadata - **Rankings**: retrieve paginated rankings with user details - **Reset support**: leaderboards can be reset periodically ## **10. Key-Value Storage** Per-user persistent key-value storage for game state, preferences, and settings: - **Get/set/delete** key-value pairs scoped to the authenticated user - **List keys** with optional prefix filtering - **Metadata support**: values can include arbitrary JSON metadata ## **11. Achievements** Track player accomplishments with progress-based or instant-unlock achievements: - **Achievement definitions**: admin-created with slug, title, description, icon, sort order, and optional progress target - **Progress tracking**: increment progress toward a target; auto-unlocks when progress reaches the target - **Instant unlock**: directly unlock achievements without progress tracking - **Hidden achievements**: details obscured (\"???\") until unlocked by the user - **Public listings**: paginated, optionally filtered; authenticated users see their own progress - **Admin management**: create, update, delete, grant, revoke, unlock, and increment achievements ## **12. Tournaments** Single-elimination bracket tournaments, server-structured and game-judged: - **Registration window → seeded draw → timed rounds → champions**; recurring tournaments (cron) create one occurrence per cycle sharing a slug; a nil starts_at keeps registration open until an admin draws manually - **Join/leave** as an entry leader (`POST`/`DELETE /tournaments/:id/join`); team composition is game policy - **Browse**: list/filter tournaments, standings, full bracket view, and the caller's current match (`GET /tournaments/:id/my-match`) - **Match verdicts are server-side** (game hooks) — no public resolve endpoint; clients get `tournament_match_ready` / `tournament_match_resolved` / `tournament_updated` / `tournament_finished` on the user channel - **Admin management** over HTTP: create/update/delete, cancel, draw now, finish, and force match verdicts under `/api/v1/admin/tournaments` ## **13. Matchmaking** Ticket-based queueing that turns waiting players into hidden, locked lobbies: - **Join over HTTP** (`POST /matchmaking/tickets` with a `match_params` string map); only tickets with identical params match together — encode mode/map/skill band as parameter values - **A match forms** when a group reaches `max_players`, or has at least `min_players` and the oldest ticket outwaited the timeout; the server creates a hidden lobby, seats everyone and locks it - **The result is a push, not a poll**: matched players receive `match_found` (`lobby_id`, `match_params`) on their user channel; disconnecting cancels your tickets - **Inspect**: `GET /matchmaking/tickets/me` for your ticket, `GET /matchmaking/stats` for queue depths - **Admin management** over HTTP: list/filter tickets, force-cancel, and stats under `/api/v1/admin/matchmaking` ## **14. Real-time: WebSocket Channels** The server provides real-time communication via Phoenix WebSocket channels. Connect to the WebSocket endpoint and join topic-based channels for live updates. ### **14.1 Connection** Connect to `wss://your-server.com/socket` with your JWT token as a parameter: ``` const socket = new Socket(\"wss://your-server.com/socket\", { params: { token: \"<access_token>\" } }) socket.connect() ``` ### **14.2 Available Channels** - **User channel** (`user:<user_id>`): notifications, friend events, achievement unlocks, party/group invites, tournament events, KV subscriptions - **Lobby channel** (`lobby:<lobby_id>`): lobby member joins/leaves, lobby updates, lobby chat - **Lobbies channel** (`lobbies`): global lobby list changes (created, updated, deleted) - **Group channel** (`group:<group_id>`): group member changes, group updates, group chat - **Groups channel** (`groups`): global group list changes - **Party channel** (`party:<party_id>`): party member changes, party updates, party chat ### **14.3 JS SDK Helper** The `GameRealtime` class (included in this SDK) wraps Phoenix.Socket with convenient channel helpers: ```javascript import { GameRealtime } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', accessToken) const userChannel = realtime.joinUserChannel(userId) userChannel.on('notification', payload => console.log(payload)) ``` Requires the `phoenix` npm package as a peer dependency: `npm install phoenix` ## **15. Real-time: WebRTC DataChannels** For low-latency game data, the server supports WebRTC DataChannels alongside WebSocket. The server acts as a WebRTC peer (not P2P between clients). ### **15.1 How It Works** 1. Client connects via WebSocket and joins the **User channel** 2. Client sends an SDP offer over the channel (`webrtc:offer` event) 3. Server responds with an SDP answer (`webrtc:answer` event) 4. ICE candidates are exchanged (`webrtc:ice` events) 5. Once connected, named DataChannels carry game data at low latency ### **15.2 Default DataChannels** - **`events`** (reliable, ordered): important game events (player actions, state changes) - **`state`** (unreliable, unordered): high-frequency position/state sync ### **15.3 JS SDK Helper** The `GameWebRTC` class (included in this SDK, browser-only) handles signaling automatically: ```javascript import { GameRealtime, GameWebRTC } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', token) const userChannel = realtime.joinUserChannel(userId) const webrtc = new GameWebRTC(userChannel, { onData: (label, data) => console.log(label, data) }) await webrtc.connect() webrtc.send('events', JSON.stringify({ type: 'move', x: 10, y: 20 })) ```
20
+ * API for the Gamend Game Server. Provides HTTP REST API, real-time WebSocket channels, and WebRTC DataChannels for low-latency game data. Features authentication, users, lobbies, groups, parties, friends, chat, notifications, quests, leaderboards, tournaments, matchmaking, payments, server scripting, and admin portal. ## **1. Authentication** This API uses JWT (JSON Web Tokens) with access and refresh tokens: ### **1.1 Getting Tokens** - **Email/Password**: POST to `/api/v1/login` with email and password - **Device (SDK)**: POST to `/api/v1/login` with a `device_id` string (creates/returns a device user) - **Discord OAuth**: Use `/api/v1/auth/discord` flow - **Google OAuth**: Use `/api/v1/auth/google` flow - **Facebook OAuth**: Use `/api/v1/auth/facebook` flow - **Apple Sign In**: Use `/auth/apple` browser flow or apple sdk flow - **Steam (OpenID)**: Use `/api/v1/auth/steam` flow Both methods return: - `access_token` - Short-lived (15 min), use for API requests - `refresh_token` - Long-lived (30 days), use to get new access tokens ### **1.2 Using Tokens** Include the access token in the Authorization header: ``` Authorization: Bearer <access_token> ``` ### **1.3 Refreshing Tokens** When your access token expires, use POST `/api/v1/refresh` with your refresh token to get a new access token. ## **2. Users** Users endpoints cover the user lifecycle and profile features. Key highlights: - **Registration and login** (email/password, device token for SDKs, and OAuth providers) - **Profile metadata** (JSON blob per user) and editable profile fields - **Account lifecycle**: password reset, email confirmation, and account deletion - **Sessions & tokens**: both browser sessions and JWT-based API tokens are supported ## **3. Friends** The Friends domain offers lightweight social features: - **Friend requests** (send / accept / reject / block flows) - **Friend listing & pagination**, with basic privacy controls - **Domain helpers** to manage and query friend relationships from API or UI contexts ## **4. Lobbies** Lobbies provide matchmaking / room management primitives. Highlights: - **Create / list / update / delete** lobbies with rich metadata (mode, region, tags) - **Host-managed or hostless** modes (hostless allowed internally, not creatable via public API) - **Membership management**: join, leave, kick users, and automatic host transfer - **Controls & protection**: max users, hidden/locked states, and optional password protection - **Hidden lobbies** are excluded from public listings; public listing endpoints are paginated ## **5. Notifications** Persistent user-to-user notifications that survive across sessions: - **Send notifications** to accepted friends with a title, optional content, and optional metadata - **List own notifications** with pagination (ordered oldest-first) - **Delete notifications** by ID (single or batch) - **Real-time delivery** via the user WebSocket channel (`\"notification\"` events) - **Offline delivery**: undeleted notifications are replayed on WebSocket reconnect - **Push delivery**: notifications also fan out to the recipient's registered mobile devices (see Push notifications) ## **5b. Push notifications** Mobile/web push delivery to registered devices (FCM for Android/Web, APNs-direct for iOS): - **Register device tokens** via `POST /me/push-tokens` (`token`, `platform`, optional `provider`/`device_id`); re-registering a `device_id` rotates its token in place - **List/remove own devices** via `GET /me/push-tokens` and `DELETE /me/push-tokens/:id` - **Server-authoritative sending** — no public send endpoint; pushes originate from server hooks (`GameServer.Push.send_to_user/2`) or the admin API - **Per-token routing**: each token's `provider` (\"fcm\" | \"apns\") selects the delivery backend; unconfigured backends log instead of sending (dev-friendly) - **Reliability**: delivery rides the durable job queue with retries; dead tokens reported by the provider are disabled automatically ## **6. Groups** Groups provide persistent community management for players: - **Three group types**: `public` (anyone joins directly), `private` (users request to join, admins approve), `hidden` (invite-only, never listed) - **Membership roles**: `admin` and `member`, with promote/demote capabilities - **Join requests**: for private groups, users submit requests that admins approve or reject - **Invitations**: admins can invite users directly (blocked users are rejected) - **CRUD operations**: create, update, delete groups with metadata support - **Group chat**: integrated via the Chat API with `chat_type: \"group\"` ## **7. Parties** Ephemeral groups of users for short-lived sessions (e.g., matchmaking squads): - **Invite-only joining**: the party leader sends invites by user ID to friends or shared-group members - **Invite flow**: `POST /parties/invite` → recipient accepts via `POST /parties/invite/accept` or declines via `POST /parties/invite/decline`; leader can cancel via `POST /parties/invite/cancel` - **Invite visibility**: leader can list sent invites (`GET /parties/invitations/sent`); recipient can list received invites (`GET /parties/invitations`) - **Connection requirement**: invites can only be sent to users who are friends or share at least one group with the leader - **One party at a time**: a user can only be in one party; accepting an invite while already in a party is rejected - **Leader management**: the creator is the leader; leadership can be transferred - **Lobby integration**: parties can create or join lobbies as a group - **Party chat**: integrated via the Chat API with `chat_type: \"party\"` - **Real-time events** via the party WebSocket channel ## **8. Chat** Real-time messaging across multiple conversation types: - **Chat types**: `lobby` (within a lobby), `group` (within a group), `party` (within a party), `friend` (DMs between friends) - **Send messages** with content, optional metadata, and automatic access validation - **List messages** with pagination (newest first) - **Read tracking**: mark messages as read and get unread counts per conversation - **Real-time delivery** via PubSub and WebSocket channels - **Moderation hooks**: `before_chat_message` pipeline hook for filtering/blocking ## **9. Leaderboards** Server-managed ranked scoreboards: - **Multiple leaderboards**: create named leaderboards with configurable sort order - **Score submission**: submit scores with optional metadata - **Rankings**: retrieve paginated rankings with user details - **Reset support**: leaderboards can be reset periodically ## **10. Key-Value Storage** Per-user persistent key-value storage for game state, preferences, and settings: - **Get/set/delete** key-value pairs scoped to the authenticated user - **List keys** with optional prefix filtering - **Metadata support**: values can include arbitrary JSON metadata ## **11. Quests / Progression** One event-driven progression engine covering achievements, daily/weekly quests, time-boxed event quests, and chains: - **Kinds**: `achievement` (permanent one-shot — the replacement for the old achievements system), `daily`/`weekly` (reset per UTC period), `event` (starts_at/ends_at window), `chain` (requires a prerequisite quest) - **Objectives**: each quest lists objectives `{event, target, params}`; server-side `report_event` advances every matching active quest — there is **no public endpoint to advance progress** (server-authoritative) - **Rewards**: currencies (Economy) and items (Inventory), paid **exactly once** per period via idempotent grants; `auto_claim` quests pay on completion, others via `POST /me/quests/:key/claim` - **My quests**: `GET /me/quests` returns active quests, per-period progress, and a claimable flag; hidden quests appear once completed - **Catalog**: `GET /quests` and per-user completions `GET /quests/user/:user_id` (gated by `LIST_QUESTS_ENABLED`) - **Admin management**: definitions CRUD plus per-user grant/reset/force-claim under `/api/v1/admin/quests` ## **12. Tournaments** Single-elimination bracket tournaments, server-structured and game-judged: - **Registration window → seeded draw → timed rounds → champions**; recurring tournaments (cron) create one occurrence per cycle sharing a slug; a nil starts_at keeps registration open until an admin draws manually - **Join/leave** as an entry leader (`POST`/`DELETE /tournaments/:id/join`); team composition is game policy - **Browse**: list/filter tournaments, standings, full bracket view, and the caller's current match (`GET /tournaments/:id/my-match`) - **Match verdicts are server-side** (game hooks) — no public resolve endpoint; clients get `tournament_match_ready` / `tournament_match_resolved` / `tournament_updated` / `tournament_finished` on the user channel - **Admin management** over HTTP: create/update/delete, cancel, draw now, finish, and force match verdicts under `/api/v1/admin/tournaments` ## **13. Matchmaking** Ticket-based queueing that turns waiting players into hidden, locked lobbies: - **Join over HTTP** (`POST /matchmaking/tickets` with a `match_params` string map); only tickets with identical params match together — encode mode/map/skill band as parameter values - **A match forms** when a group reaches `max_players`, or has at least `min_players` and the oldest ticket outwaited the timeout; the server creates a hidden lobby, seats everyone and locks it - **The result is a push, not a poll**: matched players receive `match_found` (`lobby_id`, `match_params`) on their user channel; disconnecting cancels your tickets - **Inspect**: `GET /matchmaking/tickets/me` for your ticket, `GET /matchmaking/stats` for queue depths - **Admin management** over HTTP: list/filter tickets, force-cancel, and stats under `/api/v1/admin/matchmaking` ## **14. Real-time: WebSocket Channels** The server provides real-time communication via Phoenix WebSocket channels. Connect to the WebSocket endpoint and join topic-based channels for live updates. ### **14.1 Connection** Connect to `wss://your-server.com/socket` with your JWT token as a parameter: ``` const socket = new Socket(\"wss://your-server.com/socket\", { params: { token: \"<access_token>\" } }) socket.connect() ``` ### **14.2 Available Channels** - **User channel** (`user:<user_id>`): notifications, friend events, quest progress/completions/claims, party/group invites, tournament events, KV subscriptions - **Lobby channel** (`lobby:<lobby_id>`): lobby member joins/leaves, lobby updates, lobby chat - **Lobbies channel** (`lobbies`): global lobby list changes (created, updated, deleted) - **Group channel** (`group:<group_id>`): group member changes, group updates, group chat - **Groups channel** (`groups`): global group list changes - **Party channel** (`party:<party_id>`): party member changes, party updates, party chat ### **14.3 JS SDK Helper** The `GameRealtime` class (included in this SDK) wraps Phoenix.Socket with convenient channel helpers: ```javascript import { GameRealtime } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', accessToken) const userChannel = realtime.joinUserChannel(userId) userChannel.on('notification', payload => console.log(payload)) ``` Requires the `phoenix` npm package as a peer dependency: `npm install phoenix` ## **15. Real-time: WebRTC DataChannels** For low-latency game data, the server supports WebRTC DataChannels alongside WebSocket. The server acts as a WebRTC peer (not P2P between clients). ### **15.1 How It Works** 1. Client connects via WebSocket and joins the **User channel** 2. Client sends an SDP offer over the channel (`webrtc:offer` event) 3. Server responds with an SDP answer (`webrtc:answer` event) 4. ICE candidates are exchanged (`webrtc:ice` events) 5. Once connected, named DataChannels carry game data at low latency ### **15.2 Default DataChannels** - **`events`** (reliable, ordered): important game events (player actions, state changes) - **`state`** (unreliable, unordered): high-frequency position/state sync ### **15.3 JS SDK Helper** The `GameWebRTC` class (included in this SDK, browser-only) handles signaling automatically: ```javascript import { GameRealtime, GameWebRTC } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', token) const userChannel = realtime.joinUserChannel(userId) const webrtc = new GameWebRTC(userChannel, { onData: (label, data) => console.log(label, data) }) await webrtc.connect() webrtc.send('events', JSON.stringify({ type: 'move', x: 10, y: 20 })) ```
21
21
  *
22
- * The version of the OpenAPI document: 1.0.1059
22
+ * The version of the OpenAPI document: 1.0.1063
23
23
  *
24
24
  *
25
25
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -13,9 +13,9 @@ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r),
13
13
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
14
14
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /**
15
15
  * Game Server API
16
- * API for the Gamend Game Server. Provides HTTP REST API, real-time WebSocket channels, and WebRTC DataChannels for low-latency game data. Features authentication, users, lobbies, groups, parties, friends, chat, notifications, achievements, leaderboards, tournaments, matchmaking, payments, server scripting, and admin portal. ## **1. Authentication** This API uses JWT (JSON Web Tokens) with access and refresh tokens: ### **1.1 Getting Tokens** - **Email/Password**: POST to `/api/v1/login` with email and password - **Device (SDK)**: POST to `/api/v1/login` with a `device_id` string (creates/returns a device user) - **Discord OAuth**: Use `/api/v1/auth/discord` flow - **Google OAuth**: Use `/api/v1/auth/google` flow - **Facebook OAuth**: Use `/api/v1/auth/facebook` flow - **Apple Sign In**: Use `/auth/apple` browser flow or apple sdk flow - **Steam (OpenID)**: Use `/api/v1/auth/steam` flow Both methods return: - `access_token` - Short-lived (15 min), use for API requests - `refresh_token` - Long-lived (30 days), use to get new access tokens ### **1.2 Using Tokens** Include the access token in the Authorization header: ``` Authorization: Bearer <access_token> ``` ### **1.3 Refreshing Tokens** When your access token expires, use POST `/api/v1/refresh` with your refresh token to get a new access token. ## **2. Users** Users endpoints cover the user lifecycle and profile features. Key highlights: - **Registration and login** (email/password, device token for SDKs, and OAuth providers) - **Profile metadata** (JSON blob per user) and editable profile fields - **Account lifecycle**: password reset, email confirmation, and account deletion - **Sessions & tokens**: both browser sessions and JWT-based API tokens are supported ## **3. Friends** The Friends domain offers lightweight social features: - **Friend requests** (send / accept / reject / block flows) - **Friend listing & pagination**, with basic privacy controls - **Domain helpers** to manage and query friend relationships from API or UI contexts ## **4. Lobbies** Lobbies provide matchmaking / room management primitives. Highlights: - **Create / list / update / delete** lobbies with rich metadata (mode, region, tags) - **Host-managed or hostless** modes (hostless allowed internally, not creatable via public API) - **Membership management**: join, leave, kick users, and automatic host transfer - **Controls & protection**: max users, hidden/locked states, and optional password protection - **Hidden lobbies** are excluded from public listings; public listing endpoints are paginated ## **5. Notifications** Persistent user-to-user notifications that survive across sessions: - **Send notifications** to accepted friends with a title, optional content, and optional metadata - **List own notifications** with pagination (ordered oldest-first) - **Delete notifications** by ID (single or batch) - **Real-time delivery** via the user WebSocket channel (`\"notification\"` events) - **Offline delivery**: undeleted notifications are replayed on WebSocket reconnect ## **6. Groups** Groups provide persistent community management for players: - **Three group types**: `public` (anyone joins directly), `private` (users request to join, admins approve), `hidden` (invite-only, never listed) - **Membership roles**: `admin` and `member`, with promote/demote capabilities - **Join requests**: for private groups, users submit requests that admins approve or reject - **Invitations**: admins can invite users directly (blocked users are rejected) - **CRUD operations**: create, update, delete groups with metadata support - **Group chat**: integrated via the Chat API with `chat_type: \"group\"` ## **7. Parties** Ephemeral groups of users for short-lived sessions (e.g., matchmaking squads): - **Invite-only joining**: the party leader sends invites by user ID to friends or shared-group members - **Invite flow**: `POST /parties/invite` → recipient accepts via `POST /parties/invite/accept` or declines via `POST /parties/invite/decline`; leader can cancel via `POST /parties/invite/cancel` - **Invite visibility**: leader can list sent invites (`GET /parties/invitations/sent`); recipient can list received invites (`GET /parties/invitations`) - **Connection requirement**: invites can only be sent to users who are friends or share at least one group with the leader - **One party at a time**: a user can only be in one party; accepting an invite while already in a party is rejected - **Leader management**: the creator is the leader; leadership can be transferred - **Lobby integration**: parties can create or join lobbies as a group - **Party chat**: integrated via the Chat API with `chat_type: \"party\"` - **Real-time events** via the party WebSocket channel ## **8. Chat** Real-time messaging across multiple conversation types: - **Chat types**: `lobby` (within a lobby), `group` (within a group), `party` (within a party), `friend` (DMs between friends) - **Send messages** with content, optional metadata, and automatic access validation - **List messages** with pagination (newest first) - **Read tracking**: mark messages as read and get unread counts per conversation - **Real-time delivery** via PubSub and WebSocket channels - **Moderation hooks**: `before_chat_message` pipeline hook for filtering/blocking ## **9. Leaderboards** Server-managed ranked scoreboards: - **Multiple leaderboards**: create named leaderboards with configurable sort order - **Score submission**: submit scores with optional metadata - **Rankings**: retrieve paginated rankings with user details - **Reset support**: leaderboards can be reset periodically ## **10. Key-Value Storage** Per-user persistent key-value storage for game state, preferences, and settings: - **Get/set/delete** key-value pairs scoped to the authenticated user - **List keys** with optional prefix filtering - **Metadata support**: values can include arbitrary JSON metadata ## **11. Achievements** Track player accomplishments with progress-based or instant-unlock achievements: - **Achievement definitions**: admin-created with slug, title, description, icon, sort order, and optional progress target - **Progress tracking**: increment progress toward a target; auto-unlocks when progress reaches the target - **Instant unlock**: directly unlock achievements without progress tracking - **Hidden achievements**: details obscured (\"???\") until unlocked by the user - **Public listings**: paginated, optionally filtered; authenticated users see their own progress - **Admin management**: create, update, delete, grant, revoke, unlock, and increment achievements ## **12. Tournaments** Single-elimination bracket tournaments, server-structured and game-judged: - **Registration window → seeded draw → timed rounds → champions**; recurring tournaments (cron) create one occurrence per cycle sharing a slug; a nil starts_at keeps registration open until an admin draws manually - **Join/leave** as an entry leader (`POST`/`DELETE /tournaments/:id/join`); team composition is game policy - **Browse**: list/filter tournaments, standings, full bracket view, and the caller's current match (`GET /tournaments/:id/my-match`) - **Match verdicts are server-side** (game hooks) — no public resolve endpoint; clients get `tournament_match_ready` / `tournament_match_resolved` / `tournament_updated` / `tournament_finished` on the user channel - **Admin management** over HTTP: create/update/delete, cancel, draw now, finish, and force match verdicts under `/api/v1/admin/tournaments` ## **13. Matchmaking** Ticket-based queueing that turns waiting players into hidden, locked lobbies: - **Join over HTTP** (`POST /matchmaking/tickets` with a `match_params` string map); only tickets with identical params match together — encode mode/map/skill band as parameter values - **A match forms** when a group reaches `max_players`, or has at least `min_players` and the oldest ticket outwaited the timeout; the server creates a hidden lobby, seats everyone and locks it - **The result is a push, not a poll**: matched players receive `match_found` (`lobby_id`, `match_params`) on their user channel; disconnecting cancels your tickets - **Inspect**: `GET /matchmaking/tickets/me` for your ticket, `GET /matchmaking/stats` for queue depths - **Admin management** over HTTP: list/filter tickets, force-cancel, and stats under `/api/v1/admin/matchmaking` ## **14. Real-time: WebSocket Channels** The server provides real-time communication via Phoenix WebSocket channels. Connect to the WebSocket endpoint and join topic-based channels for live updates. ### **14.1 Connection** Connect to `wss://your-server.com/socket` with your JWT token as a parameter: ``` const socket = new Socket(\"wss://your-server.com/socket\", { params: { token: \"<access_token>\" } }) socket.connect() ``` ### **14.2 Available Channels** - **User channel** (`user:<user_id>`): notifications, friend events, achievement unlocks, party/group invites, tournament events, KV subscriptions - **Lobby channel** (`lobby:<lobby_id>`): lobby member joins/leaves, lobby updates, lobby chat - **Lobbies channel** (`lobbies`): global lobby list changes (created, updated, deleted) - **Group channel** (`group:<group_id>`): group member changes, group updates, group chat - **Groups channel** (`groups`): global group list changes - **Party channel** (`party:<party_id>`): party member changes, party updates, party chat ### **14.3 JS SDK Helper** The `GameRealtime` class (included in this SDK) wraps Phoenix.Socket with convenient channel helpers: ```javascript import { GameRealtime } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', accessToken) const userChannel = realtime.joinUserChannel(userId) userChannel.on('notification', payload => console.log(payload)) ``` Requires the `phoenix` npm package as a peer dependency: `npm install phoenix` ## **15. Real-time: WebRTC DataChannels** For low-latency game data, the server supports WebRTC DataChannels alongside WebSocket. The server acts as a WebRTC peer (not P2P between clients). ### **15.1 How It Works** 1. Client connects via WebSocket and joins the **User channel** 2. Client sends an SDP offer over the channel (`webrtc:offer` event) 3. Server responds with an SDP answer (`webrtc:answer` event) 4. ICE candidates are exchanged (`webrtc:ice` events) 5. Once connected, named DataChannels carry game data at low latency ### **15.2 Default DataChannels** - **`events`** (reliable, ordered): important game events (player actions, state changes) - **`state`** (unreliable, unordered): high-frequency position/state sync ### **15.3 JS SDK Helper** The `GameWebRTC` class (included in this SDK, browser-only) handles signaling automatically: ```javascript import { GameRealtime, GameWebRTC } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', token) const userChannel = realtime.joinUserChannel(userId) const webrtc = new GameWebRTC(userChannel, { onData: (label, data) => console.log(label, data) }) await webrtc.connect() webrtc.send('events', JSON.stringify({ type: 'move', x: 10, y: 20 })) ```
16
+ * API for the Gamend Game Server. Provides HTTP REST API, real-time WebSocket channels, and WebRTC DataChannels for low-latency game data. Features authentication, users, lobbies, groups, parties, friends, chat, notifications, quests, leaderboards, tournaments, matchmaking, payments, server scripting, and admin portal. ## **1. Authentication** This API uses JWT (JSON Web Tokens) with access and refresh tokens: ### **1.1 Getting Tokens** - **Email/Password**: POST to `/api/v1/login` with email and password - **Device (SDK)**: POST to `/api/v1/login` with a `device_id` string (creates/returns a device user) - **Discord OAuth**: Use `/api/v1/auth/discord` flow - **Google OAuth**: Use `/api/v1/auth/google` flow - **Facebook OAuth**: Use `/api/v1/auth/facebook` flow - **Apple Sign In**: Use `/auth/apple` browser flow or apple sdk flow - **Steam (OpenID)**: Use `/api/v1/auth/steam` flow Both methods return: - `access_token` - Short-lived (15 min), use for API requests - `refresh_token` - Long-lived (30 days), use to get new access tokens ### **1.2 Using Tokens** Include the access token in the Authorization header: ``` Authorization: Bearer <access_token> ``` ### **1.3 Refreshing Tokens** When your access token expires, use POST `/api/v1/refresh` with your refresh token to get a new access token. ## **2. Users** Users endpoints cover the user lifecycle and profile features. Key highlights: - **Registration and login** (email/password, device token for SDKs, and OAuth providers) - **Profile metadata** (JSON blob per user) and editable profile fields - **Account lifecycle**: password reset, email confirmation, and account deletion - **Sessions & tokens**: both browser sessions and JWT-based API tokens are supported ## **3. Friends** The Friends domain offers lightweight social features: - **Friend requests** (send / accept / reject / block flows) - **Friend listing & pagination**, with basic privacy controls - **Domain helpers** to manage and query friend relationships from API or UI contexts ## **4. Lobbies** Lobbies provide matchmaking / room management primitives. Highlights: - **Create / list / update / delete** lobbies with rich metadata (mode, region, tags) - **Host-managed or hostless** modes (hostless allowed internally, not creatable via public API) - **Membership management**: join, leave, kick users, and automatic host transfer - **Controls & protection**: max users, hidden/locked states, and optional password protection - **Hidden lobbies** are excluded from public listings; public listing endpoints are paginated ## **5. Notifications** Persistent user-to-user notifications that survive across sessions: - **Send notifications** to accepted friends with a title, optional content, and optional metadata - **List own notifications** with pagination (ordered oldest-first) - **Delete notifications** by ID (single or batch) - **Real-time delivery** via the user WebSocket channel (`\"notification\"` events) - **Offline delivery**: undeleted notifications are replayed on WebSocket reconnect - **Push delivery**: notifications also fan out to the recipient's registered mobile devices (see Push notifications) ## **5b. Push notifications** Mobile/web push delivery to registered devices (FCM for Android/Web, APNs-direct for iOS): - **Register device tokens** via `POST /me/push-tokens` (`token`, `platform`, optional `provider`/`device_id`); re-registering a `device_id` rotates its token in place - **List/remove own devices** via `GET /me/push-tokens` and `DELETE /me/push-tokens/:id` - **Server-authoritative sending** — no public send endpoint; pushes originate from server hooks (`GameServer.Push.send_to_user/2`) or the admin API - **Per-token routing**: each token's `provider` (\"fcm\" | \"apns\") selects the delivery backend; unconfigured backends log instead of sending (dev-friendly) - **Reliability**: delivery rides the durable job queue with retries; dead tokens reported by the provider are disabled automatically ## **6. Groups** Groups provide persistent community management for players: - **Three group types**: `public` (anyone joins directly), `private` (users request to join, admins approve), `hidden` (invite-only, never listed) - **Membership roles**: `admin` and `member`, with promote/demote capabilities - **Join requests**: for private groups, users submit requests that admins approve or reject - **Invitations**: admins can invite users directly (blocked users are rejected) - **CRUD operations**: create, update, delete groups with metadata support - **Group chat**: integrated via the Chat API with `chat_type: \"group\"` ## **7. Parties** Ephemeral groups of users for short-lived sessions (e.g., matchmaking squads): - **Invite-only joining**: the party leader sends invites by user ID to friends or shared-group members - **Invite flow**: `POST /parties/invite` → recipient accepts via `POST /parties/invite/accept` or declines via `POST /parties/invite/decline`; leader can cancel via `POST /parties/invite/cancel` - **Invite visibility**: leader can list sent invites (`GET /parties/invitations/sent`); recipient can list received invites (`GET /parties/invitations`) - **Connection requirement**: invites can only be sent to users who are friends or share at least one group with the leader - **One party at a time**: a user can only be in one party; accepting an invite while already in a party is rejected - **Leader management**: the creator is the leader; leadership can be transferred - **Lobby integration**: parties can create or join lobbies as a group - **Party chat**: integrated via the Chat API with `chat_type: \"party\"` - **Real-time events** via the party WebSocket channel ## **8. Chat** Real-time messaging across multiple conversation types: - **Chat types**: `lobby` (within a lobby), `group` (within a group), `party` (within a party), `friend` (DMs between friends) - **Send messages** with content, optional metadata, and automatic access validation - **List messages** with pagination (newest first) - **Read tracking**: mark messages as read and get unread counts per conversation - **Real-time delivery** via PubSub and WebSocket channels - **Moderation hooks**: `before_chat_message` pipeline hook for filtering/blocking ## **9. Leaderboards** Server-managed ranked scoreboards: - **Multiple leaderboards**: create named leaderboards with configurable sort order - **Score submission**: submit scores with optional metadata - **Rankings**: retrieve paginated rankings with user details - **Reset support**: leaderboards can be reset periodically ## **10. Key-Value Storage** Per-user persistent key-value storage for game state, preferences, and settings: - **Get/set/delete** key-value pairs scoped to the authenticated user - **List keys** with optional prefix filtering - **Metadata support**: values can include arbitrary JSON metadata ## **11. Quests / Progression** One event-driven progression engine covering achievements, daily/weekly quests, time-boxed event quests, and chains: - **Kinds**: `achievement` (permanent one-shot — the replacement for the old achievements system), `daily`/`weekly` (reset per UTC period), `event` (starts_at/ends_at window), `chain` (requires a prerequisite quest) - **Objectives**: each quest lists objectives `{event, target, params}`; server-side `report_event` advances every matching active quest — there is **no public endpoint to advance progress** (server-authoritative) - **Rewards**: currencies (Economy) and items (Inventory), paid **exactly once** per period via idempotent grants; `auto_claim` quests pay on completion, others via `POST /me/quests/:key/claim` - **My quests**: `GET /me/quests` returns active quests, per-period progress, and a claimable flag; hidden quests appear once completed - **Catalog**: `GET /quests` and per-user completions `GET /quests/user/:user_id` (gated by `LIST_QUESTS_ENABLED`) - **Admin management**: definitions CRUD plus per-user grant/reset/force-claim under `/api/v1/admin/quests` ## **12. Tournaments** Single-elimination bracket tournaments, server-structured and game-judged: - **Registration window → seeded draw → timed rounds → champions**; recurring tournaments (cron) create one occurrence per cycle sharing a slug; a nil starts_at keeps registration open until an admin draws manually - **Join/leave** as an entry leader (`POST`/`DELETE /tournaments/:id/join`); team composition is game policy - **Browse**: list/filter tournaments, standings, full bracket view, and the caller's current match (`GET /tournaments/:id/my-match`) - **Match verdicts are server-side** (game hooks) — no public resolve endpoint; clients get `tournament_match_ready` / `tournament_match_resolved` / `tournament_updated` / `tournament_finished` on the user channel - **Admin management** over HTTP: create/update/delete, cancel, draw now, finish, and force match verdicts under `/api/v1/admin/tournaments` ## **13. Matchmaking** Ticket-based queueing that turns waiting players into hidden, locked lobbies: - **Join over HTTP** (`POST /matchmaking/tickets` with a `match_params` string map); only tickets with identical params match together — encode mode/map/skill band as parameter values - **A match forms** when a group reaches `max_players`, or has at least `min_players` and the oldest ticket outwaited the timeout; the server creates a hidden lobby, seats everyone and locks it - **The result is a push, not a poll**: matched players receive `match_found` (`lobby_id`, `match_params`) on their user channel; disconnecting cancels your tickets - **Inspect**: `GET /matchmaking/tickets/me` for your ticket, `GET /matchmaking/stats` for queue depths - **Admin management** over HTTP: list/filter tickets, force-cancel, and stats under `/api/v1/admin/matchmaking` ## **14. Real-time: WebSocket Channels** The server provides real-time communication via Phoenix WebSocket channels. Connect to the WebSocket endpoint and join topic-based channels for live updates. ### **14.1 Connection** Connect to `wss://your-server.com/socket` with your JWT token as a parameter: ``` const socket = new Socket(\"wss://your-server.com/socket\", { params: { token: \"<access_token>\" } }) socket.connect() ``` ### **14.2 Available Channels** - **User channel** (`user:<user_id>`): notifications, friend events, quest progress/completions/claims, party/group invites, tournament events, KV subscriptions - **Lobby channel** (`lobby:<lobby_id>`): lobby member joins/leaves, lobby updates, lobby chat - **Lobbies channel** (`lobbies`): global lobby list changes (created, updated, deleted) - **Group channel** (`group:<group_id>`): group member changes, group updates, group chat - **Groups channel** (`groups`): global group list changes - **Party channel** (`party:<party_id>`): party member changes, party updates, party chat ### **14.3 JS SDK Helper** The `GameRealtime` class (included in this SDK) wraps Phoenix.Socket with convenient channel helpers: ```javascript import { GameRealtime } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', accessToken) const userChannel = realtime.joinUserChannel(userId) userChannel.on('notification', payload => console.log(payload)) ``` Requires the `phoenix` npm package as a peer dependency: `npm install phoenix` ## **15. Real-time: WebRTC DataChannels** For low-latency game data, the server supports WebRTC DataChannels alongside WebSocket. The server acts as a WebRTC peer (not P2P between clients). ### **15.1 How It Works** 1. Client connects via WebSocket and joins the **User channel** 2. Client sends an SDP offer over the channel (`webrtc:offer` event) 3. Server responds with an SDP answer (`webrtc:answer` event) 4. ICE candidates are exchanged (`webrtc:ice` events) 5. Once connected, named DataChannels carry game data at low latency ### **15.2 Default DataChannels** - **`events`** (reliable, ordered): important game events (player actions, state changes) - **`state`** (unreliable, unordered): high-frequency position/state sync ### **15.3 JS SDK Helper** The `GameWebRTC` class (included in this SDK, browser-only) handles signaling automatically: ```javascript import { GameRealtime, GameWebRTC } from '@ughuuu/game_server' const realtime = new GameRealtime('https://your-server.com', token) const userChannel = realtime.joinUserChannel(userId) const webrtc = new GameWebRTC(userChannel, { onData: (label, data) => console.log(label, data) }) await webrtc.connect() webrtc.send('events', JSON.stringify({ type: 'move', x: 10, y: 20 })) ```
17
17
  *
18
- * The version of the OpenAPI document: 1.0.1059
18
+ * The version of the OpenAPI document: 1.0.1063
19
19
  *
20
20
  *
21
21
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).