@rebornteam/reborn-api 3.2.1 → 4.5.0

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 (118) hide show
  1. package/.openapi-generator/FILES +70 -4
  2. package/README.md +103 -8
  3. package/api.ts +4362 -455
  4. package/base.ts +1 -1
  5. package/common.ts +1 -1
  6. package/configuration.ts +1 -1
  7. package/dist/api.d.ts +2735 -394
  8. package/dist/api.js +3171 -444
  9. package/dist/base.d.ts +1 -1
  10. package/dist/base.js +1 -1
  11. package/dist/common.d.ts +1 -1
  12. package/dist/common.js +1 -1
  13. package/dist/configuration.d.ts +1 -1
  14. package/dist/configuration.js +1 -1
  15. package/dist/esm/api.d.ts +2735 -394
  16. package/dist/esm/api.js +3146 -439
  17. package/dist/esm/base.d.ts +1 -1
  18. package/dist/esm/base.js +1 -1
  19. package/dist/esm/common.d.ts +1 -1
  20. package/dist/esm/common.js +1 -1
  21. package/dist/esm/configuration.d.ts +1 -1
  22. package/dist/esm/configuration.js +1 -1
  23. package/dist/esm/index.d.ts +1 -1
  24. package/dist/esm/index.js +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +1 -1
  27. package/docs/AdminAltAccount.md +27 -0
  28. package/docs/AdminAltExemption.md +31 -0
  29. package/docs/AdminAltGraph.md +27 -0
  30. package/docs/AdminAltGraphEdge.md +25 -0
  31. package/docs/AdminAltGraphNode.md +29 -0
  32. package/docs/AdminApplyPunishmentResult.md +4 -4
  33. package/docs/AdminAsyncJob.md +49 -0
  34. package/docs/AdminAsyncJobArtifactMeta.md +23 -0
  35. package/docs/AdminAsyncJobStartResponse.md +21 -0
  36. package/docs/AdminAuditLogApi.md +141 -0
  37. package/docs/AdminAuditLogEntry.md +33 -0
  38. package/docs/AdminBulkRevokeRequest.md +25 -0
  39. package/docs/AdminBulkRevokeResponse.md +21 -0
  40. package/docs/AdminConnectionCheckResult.md +4 -0
  41. package/docs/AdminConnectionsApi.md +154 -39
  42. package/docs/AdminCreateAltExemptionRequest.md +23 -0
  43. package/docs/AdminCreatePlayerNoteRequest.md +21 -0
  44. package/docs/AdminDashboardConnectionResponse.md +4 -2
  45. package/docs/AdminJobsApi.md +230 -0
  46. package/docs/AdminPlayerDetailResponse.md +4 -4
  47. package/docs/AdminPlayerNote.md +31 -0
  48. package/docs/AdminPlayerPunishmentResponse.md +51 -0
  49. package/docs/AdminPlayerReport.md +39 -0
  50. package/docs/AdminPlayerSession.md +31 -0
  51. package/docs/AdminPlayerSessionStats.md +29 -0
  52. package/docs/AdminPlayerSummary.md +2 -4
  53. package/docs/AdminPlayersApi.md +1043 -19
  54. package/docs/AdminPunishmentEvaluation.md +4 -8
  55. package/docs/AdminPunishmentTargets.md +23 -0
  56. package/docs/AdminPunishmentsApi.md +179 -21
  57. package/docs/AdminReportTarget.md +23 -0
  58. package/docs/AdminReportsApi.md +123 -0
  59. package/docs/AdminResolveReportRequest.md +21 -0
  60. package/docs/AdminSetAggressiveModeImmunityRequest.md +21 -0
  61. package/docs/AdminTrustFactorBreakdown.md +61 -0
  62. package/docs/AdminTrustFactorHistoryEntry.md +23 -0
  63. package/docs/AdminTrustFactorImpact.md +23 -0
  64. package/docs/AdminUpdatePunishmentRequest.md +35 -0
  65. package/docs/ChatApi.md +4 -4
  66. package/docs/ConnectionApi.md +4 -4
  67. package/docs/ConnectionGetConnectionDetailsResponse.md +5 -1
  68. package/docs/ConnectionResult.md +1 -1
  69. package/docs/CreateReportRequest.md +27 -0
  70. package/docs/CreateReportResponse.md +23 -0
  71. package/docs/CursoredPageAdminAuditLogEntry.md +38 -0
  72. package/docs/CursoredPageable.md +30 -0
  73. package/docs/JobStatus.md +17 -0
  74. package/docs/PageAdminAltAccount.md +36 -0
  75. package/docs/PageAdminAltExemption.md +36 -0
  76. package/docs/PageAdminAsyncJob.md +36 -0
  77. package/docs/PageAdminAuditLogEntry.md +36 -0
  78. package/docs/PageAdminDashboardConnectionResponse.md +36 -0
  79. package/docs/PageAdminPlayerNote.md +36 -0
  80. package/docs/PageAdminPlayerPunishmentResponse.md +36 -0
  81. package/docs/PageAdminPlayerReport.md +36 -0
  82. package/docs/PageAdminPlayerSession.md +36 -0
  83. package/docs/PageAdminPlayerSummary.md +36 -0
  84. package/docs/PageAdminPunishmentListItem.md +36 -0
  85. package/docs/PagePunishmentGetPunishmentResponse.md +36 -0
  86. package/docs/Pageable.md +28 -0
  87. package/docs/PageableMode.md +12 -0
  88. package/docs/PlayerGetPlayerInformation.md +5 -3
  89. package/docs/PlayerSessionEndRequest.md +23 -0
  90. package/docs/PlayerSessionStartRequest.md +27 -0
  91. package/docs/PlayerSessionStartResponse.md +51 -0
  92. package/docs/PlayerSessionsApi.md +116 -0
  93. package/docs/PunishmentApi.md +22 -24
  94. package/docs/PunishmentSource.md +11 -0
  95. package/docs/PunishmentType.md +1 -0
  96. package/docs/ReportApi.md +64 -0
  97. package/docs/ReportCategory.md +17 -0
  98. package/docs/SliceAdminAltAccount.md +32 -0
  99. package/docs/SliceAdminAltExemption.md +32 -0
  100. package/docs/SliceAdminAsyncJob.md +32 -0
  101. package/docs/SliceAdminAuditLogEntry.md +32 -0
  102. package/docs/SliceAdminDashboardConnectionResponse.md +32 -0
  103. package/docs/SliceAdminPlayerNote.md +32 -0
  104. package/docs/SliceAdminPlayerPunishmentResponse.md +32 -0
  105. package/docs/SliceAdminPlayerReport.md +32 -0
  106. package/docs/SliceAdminPlayerSession.md +32 -0
  107. package/docs/SliceAdminPlayerSummary.md +32 -0
  108. package/docs/SliceAdminPunishmentListItem.md +32 -0
  109. package/docs/SlicePunishmentGetPunishmentResponse.md +32 -0
  110. package/docs/Sort.md +20 -0
  111. package/docs/SortOrder.md +26 -0
  112. package/docs/SortOrderDirection.md +10 -0
  113. package/index.ts +1 -1
  114. package/package.json +1 -1
  115. package/docs/AdminBackfillLocationResponse.md +0 -25
  116. package/docs/AdminPagedConnectionResponse.md +0 -29
  117. package/docs/AdminPagedPlayerResponse.md +0 -29
  118. package/docs/AdminPagedPunishmentResponse.md +0 -29
package/dist/api.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * Reborn API
6
6
  * The Reborn API serves as the central backend for the platform, orchestrating secure communication between game clients and data services. This API supports two authentication methods: - **OAuth 2.0 Client Credentials**: For programmatic API access - **Discord SSO Bearer Token**: For admin endpoints requiring Discord authentication
7
7
  *
8
- * The version of the OpenAPI document: 3.2.1
8
+ * The version of the OpenAPI document: 4.5.0
9
9
  *
10
10
  *
11
11
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -22,8 +22,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
22
22
  });
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.ServerSessionsApiFactory = exports.ServerSessionsApiFp = exports.ServerSessionsApiAxiosParamCreator = exports.PunishmentApi = exports.PunishmentApiFactory = exports.PunishmentApiFp = exports.PunishmentApiAxiosParamCreator = exports.PlayerApi = exports.PlayerApiFactory = exports.PlayerApiFp = exports.PlayerApiAxiosParamCreator = exports.ConnectionApi = exports.ConnectionApiFactory = exports.ConnectionApiFp = exports.ConnectionApiAxiosParamCreator = exports.ChatApi = exports.ChatApiFactory = exports.ChatApiFp = exports.ChatApiAxiosParamCreator = exports.AuthenticationApi = exports.AuthenticationApiFactory = exports.AuthenticationApiFp = exports.AuthenticationApiAxiosParamCreator = exports.AdminPunishmentsApi = exports.AdminPunishmentsApiFactory = exports.AdminPunishmentsApiFp = exports.AdminPunishmentsApiAxiosParamCreator = exports.AdminPlayersApi = exports.AdminPlayersApiFactory = exports.AdminPlayersApiFp = exports.AdminPlayersApiAxiosParamCreator = exports.AdminDashboardApi = exports.AdminDashboardApiFactory = exports.AdminDashboardApiFp = exports.AdminDashboardApiAxiosParamCreator = exports.AdminConnectionsApi = exports.AdminConnectionsApiFactory = exports.AdminConnectionsApiFp = exports.AdminConnectionsApiAxiosParamCreator = exports.AdminClientCredentialsApi = exports.AdminClientCredentialsApiFactory = exports.AdminClientCredentialsApiFp = exports.AdminClientCredentialsApiAxiosParamCreator = exports.SearchKind = exports.Region = exports.Rank = exports.PunishmentType = exports.PunishmentTargetType = exports.GameType = exports.ConnectionResultResultCode = void 0;
26
- exports.ServerSessionsApi = void 0;
25
+ exports.ChatApiFp = exports.ChatApiAxiosParamCreator = exports.AuthenticationApi = exports.AuthenticationApiFactory = exports.AuthenticationApiFp = exports.AuthenticationApiAxiosParamCreator = exports.AdminReportsApi = exports.AdminReportsApiFactory = exports.AdminReportsApiFp = exports.AdminReportsApiAxiosParamCreator = exports.AdminPunishmentsApi = exports.AdminPunishmentsApiFactory = exports.AdminPunishmentsApiFp = exports.AdminPunishmentsApiAxiosParamCreator = exports.AdminPlayersApi = exports.AdminPlayersApiFactory = exports.AdminPlayersApiFp = exports.AdminPlayersApiAxiosParamCreator = exports.AdminJobsApi = exports.AdminJobsApiFactory = exports.AdminJobsApiFp = exports.AdminJobsApiAxiosParamCreator = exports.AdminDashboardApi = exports.AdminDashboardApiFactory = exports.AdminDashboardApiFp = exports.AdminDashboardApiAxiosParamCreator = exports.AdminConnectionsApi = exports.AdminConnectionsApiFactory = exports.AdminConnectionsApiFp = exports.AdminConnectionsApiAxiosParamCreator = exports.AdminClientCredentialsApi = exports.AdminClientCredentialsApiFactory = exports.AdminClientCredentialsApiFp = exports.AdminClientCredentialsApiAxiosParamCreator = exports.AdminAuditLogApi = exports.AdminAuditLogApiFactory = exports.AdminAuditLogApiFp = exports.AdminAuditLogApiAxiosParamCreator = exports.SortOrderDirection = exports.SearchKind = exports.ReportCategory = exports.Region = exports.Rank = exports.PunishmentType = exports.PunishmentTargetType = exports.PunishmentSource = exports.PageableMode = exports.JobStatus = exports.GameType = exports.ConnectionResultResultCode = void 0;
26
+ exports.ServerSessionsApi = exports.ServerSessionsApiFactory = exports.ServerSessionsApiFp = exports.ServerSessionsApiAxiosParamCreator = exports.ReportApi = exports.ReportApiFactory = exports.ReportApiFp = exports.ReportApiAxiosParamCreator = exports.PunishmentApi = exports.PunishmentApiFactory = exports.PunishmentApiFp = exports.PunishmentApiAxiosParamCreator = exports.PlayerSessionsApi = exports.PlayerSessionsApiFactory = exports.PlayerSessionsApiFp = exports.PlayerSessionsApiAxiosParamCreator = exports.PlayerApi = exports.PlayerApiFactory = exports.PlayerApiFp = exports.PlayerApiAxiosParamCreator = exports.ConnectionApi = exports.ConnectionApiFactory = exports.ConnectionApiFp = exports.ConnectionApiAxiosParamCreator = exports.ChatApi = exports.ChatApiFactory = void 0;
27
27
  const axios_1 = require("axios");
28
28
  // Some imports not used depending on template conditions
29
29
  // @ts-ignore
@@ -44,10 +44,35 @@ exports.GameType = {
44
44
  Legacy: 'LEGACY',
45
45
  Classic: 'CLASSIC'
46
46
  };
47
+ /**
48
+ * Current lifecycle state.
49
+ */
50
+ exports.JobStatus = {
51
+ Queued: 'QUEUED',
52
+ Running: 'RUNNING',
53
+ Completed: 'COMPLETED',
54
+ Failed: 'FAILED',
55
+ Cancelled: 'CANCELLED'
56
+ };
57
+ exports.PageableMode = {
58
+ CursorNext: 'CURSOR_NEXT',
59
+ CursorPrevious: 'CURSOR_PREVIOUS',
60
+ Offset: 'OFFSET'
61
+ };
62
+ /**
63
+ * How this link came to exist. DIRECT links are immutable from the link side (remove via the punishment-level delete); PROPAGATED links are revocable individually.
64
+ */
65
+ exports.PunishmentSource = {
66
+ Direct: 'DIRECT',
67
+ Propagated: 'PROPAGATED'
68
+ };
47
69
  exports.PunishmentTargetType = {
48
70
  Player: 'PLAYER',
49
71
  Connection: 'CONNECTION'
50
72
  };
73
+ /**
74
+ * Type of punishment
75
+ */
51
76
  exports.PunishmentType = {
52
77
  Ban: 'BAN',
53
78
  Mute: 'MUTE',
@@ -63,6 +88,16 @@ exports.Region = {
63
88
  Eu: 'EU',
64
89
  Au: 'AU'
65
90
  };
91
+ /**
92
+ * Category of misconduct. Coarse on purpose — staff refine in triage.
93
+ */
94
+ exports.ReportCategory = {
95
+ Cheating: 'CHEATING',
96
+ Harassment: 'HARASSMENT',
97
+ ChatAbuse: 'CHAT_ABUSE',
98
+ Griefing: 'GRIEFING',
99
+ Other: 'OTHER'
100
+ };
66
101
  /**
67
102
  * Search kind — PLAYER for UUID/username searches, IP for IP address searches
68
103
  */
@@ -70,6 +105,240 @@ exports.SearchKind = {
70
105
  Player: 'PLAYER',
71
106
  Ip: 'IP'
72
107
  };
108
+ exports.SortOrderDirection = {
109
+ Asc: 'ASC',
110
+ Desc: 'DESC'
111
+ };
112
+ /**
113
+ * AdminAuditLogApi - axios parameter creator
114
+ */
115
+ const AdminAuditLogApiAxiosParamCreator = function (configuration) {
116
+ return {
117
+ /**
118
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
119
+ * @summary Search the admin audit log
120
+ * @param {Pageable} pageable
121
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
122
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
123
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
124
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
125
+ * @param {*} [options] Override http request option.
126
+ * @throws {RequiredError}
127
+ */
128
+ search: (pageable_1, actor_1, action_1, targetType_1, targetId_1, ...args_1) => __awaiter(this, [pageable_1, actor_1, action_1, targetType_1, targetId_1, ...args_1], void 0, function* (pageable, actor, action, targetType, targetId, options = {}) {
129
+ // verify required parameter 'pageable' is not null or undefined
130
+ (0, common_1.assertParamExists)('search', 'pageable', pageable);
131
+ const localVarPath = `/admin/audit-log`;
132
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
133
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
134
+ let baseOptions;
135
+ if (configuration) {
136
+ baseOptions = configuration.baseOptions;
137
+ }
138
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
139
+ const localVarHeaderParameter = {};
140
+ const localVarQueryParameter = {};
141
+ // authentication DiscordAuth required
142
+ // http bearer authentication required
143
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
144
+ if (actor !== undefined) {
145
+ localVarQueryParameter['actor'] = actor;
146
+ }
147
+ if (action !== undefined) {
148
+ localVarQueryParameter['action'] = action;
149
+ }
150
+ if (targetType !== undefined) {
151
+ localVarQueryParameter['targetType'] = targetType;
152
+ }
153
+ if (targetId !== undefined) {
154
+ localVarQueryParameter['targetId'] = targetId;
155
+ }
156
+ if (pageable !== undefined) {
157
+ localVarQueryParameter['pageable'] = pageable;
158
+ }
159
+ localVarHeaderParameter['Accept'] = 'application/json';
160
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
161
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
162
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
163
+ return {
164
+ url: (0, common_1.toPathString)(localVarUrlObj),
165
+ options: localVarRequestOptions,
166
+ };
167
+ }),
168
+ /**
169
+ * Cursor-based companion to GET /admin/audit-log. Preferred for the admin UI\'s infinite-scroll view of the audit log because the SQL plan stays flat as the table grows — offset pagination degrades linearly with depth, this does not. Pass the {@code cursor} returned in the previous response to get the next page; omit it for the first page.
170
+ * @summary Cursor-paginated audit-log search (infinite scroll)
171
+ * @param {CursoredPageable} pageable
172
+ * @param {string | null} [actor]
173
+ * @param {string | null} [action]
174
+ * @param {string | null} [targetType]
175
+ * @param {string | null} [targetId]
176
+ * @param {*} [options] Override http request option.
177
+ * @throws {RequiredError}
178
+ */
179
+ searchCursor: (pageable_1, actor_1, action_1, targetType_1, targetId_1, ...args_1) => __awaiter(this, [pageable_1, actor_1, action_1, targetType_1, targetId_1, ...args_1], void 0, function* (pageable, actor, action, targetType, targetId, options = {}) {
180
+ // verify required parameter 'pageable' is not null or undefined
181
+ (0, common_1.assertParamExists)('searchCursor', 'pageable', pageable);
182
+ const localVarPath = `/admin/audit-log/cursor`;
183
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
184
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
185
+ let baseOptions;
186
+ if (configuration) {
187
+ baseOptions = configuration.baseOptions;
188
+ }
189
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
190
+ const localVarHeaderParameter = {};
191
+ const localVarQueryParameter = {};
192
+ // authentication DiscordAuth required
193
+ // http bearer authentication required
194
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
195
+ if (actor !== undefined) {
196
+ localVarQueryParameter['actor'] = actor;
197
+ }
198
+ if (action !== undefined) {
199
+ localVarQueryParameter['action'] = action;
200
+ }
201
+ if (targetType !== undefined) {
202
+ localVarQueryParameter['targetType'] = targetType;
203
+ }
204
+ if (targetId !== undefined) {
205
+ localVarQueryParameter['targetId'] = targetId;
206
+ }
207
+ if (pageable !== undefined) {
208
+ localVarQueryParameter['pageable'] = pageable;
209
+ }
210
+ localVarHeaderParameter['Accept'] = 'application/json';
211
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
212
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
213
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
214
+ return {
215
+ url: (0, common_1.toPathString)(localVarUrlObj),
216
+ options: localVarRequestOptions,
217
+ };
218
+ }),
219
+ };
220
+ };
221
+ exports.AdminAuditLogApiAxiosParamCreator = AdminAuditLogApiAxiosParamCreator;
222
+ /**
223
+ * AdminAuditLogApi - functional programming interface
224
+ */
225
+ const AdminAuditLogApiFp = function (configuration) {
226
+ const localVarAxiosParamCreator = (0, exports.AdminAuditLogApiAxiosParamCreator)(configuration);
227
+ return {
228
+ /**
229
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
230
+ * @summary Search the admin audit log
231
+ * @param {Pageable} pageable
232
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
233
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
234
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
235
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
236
+ * @param {*} [options] Override http request option.
237
+ * @throws {RequiredError}
238
+ */
239
+ search(pageable, actor, action, targetType, targetId, options) {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ var _a, _b, _c;
242
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.search(pageable, actor, action, targetType, targetId, options);
243
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
244
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminAuditLogApi.search']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
245
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
246
+ });
247
+ },
248
+ /**
249
+ * Cursor-based companion to GET /admin/audit-log. Preferred for the admin UI\'s infinite-scroll view of the audit log because the SQL plan stays flat as the table grows — offset pagination degrades linearly with depth, this does not. Pass the {@code cursor} returned in the previous response to get the next page; omit it for the first page.
250
+ * @summary Cursor-paginated audit-log search (infinite scroll)
251
+ * @param {CursoredPageable} pageable
252
+ * @param {string | null} [actor]
253
+ * @param {string | null} [action]
254
+ * @param {string | null} [targetType]
255
+ * @param {string | null} [targetId]
256
+ * @param {*} [options] Override http request option.
257
+ * @throws {RequiredError}
258
+ */
259
+ searchCursor(pageable, actor, action, targetType, targetId, options) {
260
+ return __awaiter(this, void 0, void 0, function* () {
261
+ var _a, _b, _c;
262
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.searchCursor(pageable, actor, action, targetType, targetId, options);
263
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
264
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminAuditLogApi.searchCursor']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
265
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
266
+ });
267
+ },
268
+ };
269
+ };
270
+ exports.AdminAuditLogApiFp = AdminAuditLogApiFp;
271
+ /**
272
+ * AdminAuditLogApi - factory interface
273
+ */
274
+ const AdminAuditLogApiFactory = function (configuration, basePath, axios) {
275
+ const localVarFp = (0, exports.AdminAuditLogApiFp)(configuration);
276
+ return {
277
+ /**
278
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
279
+ * @summary Search the admin audit log
280
+ * @param {Pageable} pageable
281
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
282
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
283
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
284
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
285
+ * @param {*} [options] Override http request option.
286
+ * @throws {RequiredError}
287
+ */
288
+ search(pageable, actor, action, targetType, targetId, options) {
289
+ return localVarFp.search(pageable, actor, action, targetType, targetId, options).then((request) => request(axios, basePath));
290
+ },
291
+ /**
292
+ * Cursor-based companion to GET /admin/audit-log. Preferred for the admin UI\'s infinite-scroll view of the audit log because the SQL plan stays flat as the table grows — offset pagination degrades linearly with depth, this does not. Pass the {@code cursor} returned in the previous response to get the next page; omit it for the first page.
293
+ * @summary Cursor-paginated audit-log search (infinite scroll)
294
+ * @param {CursoredPageable} pageable
295
+ * @param {string | null} [actor]
296
+ * @param {string | null} [action]
297
+ * @param {string | null} [targetType]
298
+ * @param {string | null} [targetId]
299
+ * @param {*} [options] Override http request option.
300
+ * @throws {RequiredError}
301
+ */
302
+ searchCursor(pageable, actor, action, targetType, targetId, options) {
303
+ return localVarFp.searchCursor(pageable, actor, action, targetType, targetId, options).then((request) => request(axios, basePath));
304
+ },
305
+ };
306
+ };
307
+ exports.AdminAuditLogApiFactory = AdminAuditLogApiFactory;
308
+ /**
309
+ * AdminAuditLogApi - object-oriented interface
310
+ */
311
+ class AdminAuditLogApi extends base_1.BaseAPI {
312
+ /**
313
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
314
+ * @summary Search the admin audit log
315
+ * @param {Pageable} pageable
316
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
317
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
318
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
319
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
320
+ * @param {*} [options] Override http request option.
321
+ * @throws {RequiredError}
322
+ */
323
+ search(pageable, actor, action, targetType, targetId, options) {
324
+ return (0, exports.AdminAuditLogApiFp)(this.configuration).search(pageable, actor, action, targetType, targetId, options).then((request) => request(this.axios, this.basePath));
325
+ }
326
+ /**
327
+ * Cursor-based companion to GET /admin/audit-log. Preferred for the admin UI\'s infinite-scroll view of the audit log because the SQL plan stays flat as the table grows — offset pagination degrades linearly with depth, this does not. Pass the {@code cursor} returned in the previous response to get the next page; omit it for the first page.
328
+ * @summary Cursor-paginated audit-log search (infinite scroll)
329
+ * @param {CursoredPageable} pageable
330
+ * @param {string | null} [actor]
331
+ * @param {string | null} [action]
332
+ * @param {string | null} [targetType]
333
+ * @param {string | null} [targetId]
334
+ * @param {*} [options] Override http request option.
335
+ * @throws {RequiredError}
336
+ */
337
+ searchCursor(pageable, actor, action, targetType, targetId, options) {
338
+ return (0, exports.AdminAuditLogApiFp)(this.configuration).searchCursor(pageable, actor, action, targetType, targetId, options).then((request) => request(this.axios, this.basePath));
339
+ }
340
+ }
341
+ exports.AdminAuditLogApi = AdminAuditLogApi;
73
342
  /**
74
343
  * AdminClientCredentialsApi - axios parameter creator
75
344
  */
@@ -590,8 +859,8 @@ exports.AdminClientCredentialsApi = AdminClientCredentialsApi;
590
859
  const AdminConnectionsApiAxiosParamCreator = function (configuration) {
591
860
  return {
592
861
  /**
593
- * Iterates every connection_check row where both city and country are NULL and re-runs that row\'s source VPN service to populate location data. Concurrency is capped to avoid overwhelming external providers. Synchronous returns once the run completes.
594
- * @summary Backfill missing location data
862
+ * Submits an async job that iterates every connection_check row missing both city and country and re-runs its source VPN service to populate location data. Returns immediately with a job id poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final {@code Admin_BackfillLocationResponse} (processed/succeeded/failed counts) lands in the job\'s {@code result_payload} on COMPLETED.
863
+ * @summary Start a location backfill job
595
864
  * @param {*} [options] Override http request option.
596
865
  * @throws {RequiredError}
597
866
  */
@@ -652,18 +921,93 @@ const AdminConnectionsApiAxiosParamCreator = function (configuration) {
652
921
  options: localVarRequestOptions,
653
922
  };
654
923
  }),
924
+ /**
925
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
926
+ * @summary Get connection detail
927
+ * @param {number} id
928
+ * @param {*} [options] Override http request option.
929
+ * @throws {RequiredError}
930
+ */
931
+ getConnection: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
932
+ // verify required parameter 'id' is not null or undefined
933
+ (0, common_1.assertParamExists)('getConnection', 'id', id);
934
+ const localVarPath = `/admin/connection/{id}`
935
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
936
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
937
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
938
+ let baseOptions;
939
+ if (configuration) {
940
+ baseOptions = configuration.baseOptions;
941
+ }
942
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
943
+ const localVarHeaderParameter = {};
944
+ const localVarQueryParameter = {};
945
+ // authentication DiscordAuth required
946
+ // http bearer authentication required
947
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
948
+ localVarHeaderParameter['Accept'] = 'application/json';
949
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
950
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
951
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
952
+ return {
953
+ url: (0, common_1.toPathString)(localVarUrlObj),
954
+ options: localVarRequestOptions,
955
+ };
956
+ }),
957
+ /**
958
+ * Paginated list of every player ever seen on this connection, with punishment scoring inline. Suitable for an infinite-scroll panel inside the connection detail modal.
959
+ * @summary List players who have used this connection
960
+ * @param {number} id
961
+ * @param {Pageable} pageable
962
+ * @param {*} [options] Override http request option.
963
+ * @throws {RequiredError}
964
+ */
965
+ getConnectionPlayers: (id_1, pageable_1, ...args_1) => __awaiter(this, [id_1, pageable_1, ...args_1], void 0, function* (id, pageable, options = {}) {
966
+ // verify required parameter 'id' is not null or undefined
967
+ (0, common_1.assertParamExists)('getConnectionPlayers', 'id', id);
968
+ // verify required parameter 'pageable' is not null or undefined
969
+ (0, common_1.assertParamExists)('getConnectionPlayers', 'pageable', pageable);
970
+ const localVarPath = `/admin/connection/{id}/players`
971
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
972
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
973
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
974
+ let baseOptions;
975
+ if (configuration) {
976
+ baseOptions = configuration.baseOptions;
977
+ }
978
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
979
+ const localVarHeaderParameter = {};
980
+ const localVarQueryParameter = {};
981
+ // authentication DiscordAuth required
982
+ // http bearer authentication required
983
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
984
+ if (pageable !== undefined) {
985
+ localVarQueryParameter['pageable'] = pageable;
986
+ }
987
+ localVarHeaderParameter['Accept'] = 'application/json';
988
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
989
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
990
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
991
+ return {
992
+ url: (0, common_1.toPathString)(localVarUrlObj),
993
+ options: localVarRequestOptions,
994
+ };
995
+ }),
655
996
  /**
656
997
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
657
998
  * @summary List all connections (paginated)
658
- * @param {string | null} [ipAddress] Filter by IP address
659
- * @param {string | null} [uuid] Filter by player UUID
660
- * @param {boolean | null} [isVpn] Filter by VPN status
661
- * @param {number | null} [page] Page number (1-indexed)
662
- * @param {number | null} [limit] Page size
999
+ * @param {Pageable} pageable
1000
+ * @param {number | null} [createdAfter]
1001
+ * @param {number | null} [createdBefore]
1002
+ * @param {string | null} [ipAddress]
1003
+ * @param {string | null} [uuid]
1004
+ * @param {boolean | null} [isVpn]
663
1005
  * @param {*} [options] Override http request option.
664
1006
  * @throws {RequiredError}
665
1007
  */
666
- listAllConnections: (ipAddress_1, uuid_1, isVpn_1, page_1, limit_1, ...args_1) => __awaiter(this, [ipAddress_1, uuid_1, isVpn_1, page_1, limit_1, ...args_1], void 0, function* (ipAddress, uuid, isVpn, page, limit, options = {}) {
1008
+ listAllConnections: (pageable_1, createdAfter_1, createdBefore_1, ipAddress_1, uuid_1, isVpn_1, ...args_1) => __awaiter(this, [pageable_1, createdAfter_1, createdBefore_1, ipAddress_1, uuid_1, isVpn_1, ...args_1], void 0, function* (pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options = {}) {
1009
+ // verify required parameter 'pageable' is not null or undefined
1010
+ (0, common_1.assertParamExists)('listAllConnections', 'pageable', pageable);
667
1011
  const localVarPath = `/admin/connection`;
668
1012
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
669
1013
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -677,6 +1021,12 @@ const AdminConnectionsApiAxiosParamCreator = function (configuration) {
677
1021
  // authentication DiscordAuth required
678
1022
  // http bearer authentication required
679
1023
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1024
+ if (createdAfter !== undefined) {
1025
+ localVarQueryParameter['createdAfter'] = createdAfter;
1026
+ }
1027
+ if (createdBefore !== undefined) {
1028
+ localVarQueryParameter['createdBefore'] = createdBefore;
1029
+ }
680
1030
  if (ipAddress !== undefined) {
681
1031
  localVarQueryParameter['ipAddress'] = ipAddress;
682
1032
  }
@@ -686,11 +1036,8 @@ const AdminConnectionsApiAxiosParamCreator = function (configuration) {
686
1036
  if (isVpn !== undefined) {
687
1037
  localVarQueryParameter['isVpn'] = isVpn;
688
1038
  }
689
- if (page !== undefined) {
690
- localVarQueryParameter['page'] = page;
691
- }
692
- if (limit !== undefined) {
693
- localVarQueryParameter['limit'] = limit;
1039
+ if (pageable !== undefined) {
1040
+ localVarQueryParameter['pageable'] = pageable;
694
1041
  }
695
1042
  localVarHeaderParameter['Accept'] = 'application/json';
696
1043
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
@@ -704,17 +1051,18 @@ const AdminConnectionsApiAxiosParamCreator = function (configuration) {
704
1051
  /**
705
1052
  * Returns a list of recent connections with VPN detection status, bypass information, and associated player data. Optionally filter by epoch timestamp (seconds since Unix epoch).
706
1053
  * @summary List recent connections
707
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
708
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
709
- * @param {string | null} [ipAddress] Filter by IP address
710
- * @param {string | null} [uuid] Filter by player UUID
711
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
712
- * @param {number | null} [page] Page number for pagination
713
- * @param {number | null} [limit] Maximum number of records to return
1054
+ * @param {Pageable} pageable
1055
+ * @param {number | null} [createdAfter]
1056
+ * @param {number | null} [createdBefore]
1057
+ * @param {string | null} [ipAddress]
1058
+ * @param {string | null} [uuid]
1059
+ * @param {boolean | null} [isVpn]
714
1060
  * @param {*} [options] Override http request option.
715
1061
  * @throws {RequiredError}
716
1062
  */
717
- listConnections: (createdAfter_1, createdBefore_1, ipAddress_1, uuid_1, isVpn_1, page_1, limit_1, ...args_1) => __awaiter(this, [createdAfter_1, createdBefore_1, ipAddress_1, uuid_1, isVpn_1, page_1, limit_1, ...args_1], void 0, function* (createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options = {}) {
1063
+ listConnections: (pageable_1, createdAfter_1, createdBefore_1, ipAddress_1, uuid_1, isVpn_1, ...args_1) => __awaiter(this, [pageable_1, createdAfter_1, createdBefore_1, ipAddress_1, uuid_1, isVpn_1, ...args_1], void 0, function* (pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options = {}) {
1064
+ // verify required parameter 'pageable' is not null or undefined
1065
+ (0, common_1.assertParamExists)('listConnections', 'pageable', pageable);
718
1066
  const localVarPath = `/admin/connection/recent`;
719
1067
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
720
1068
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -743,11 +1091,8 @@ const AdminConnectionsApiAxiosParamCreator = function (configuration) {
743
1091
  if (isVpn !== undefined) {
744
1092
  localVarQueryParameter['isVpn'] = isVpn;
745
1093
  }
746
- if (page !== undefined) {
747
- localVarQueryParameter['page'] = page;
748
- }
749
- if (limit !== undefined) {
750
- localVarQueryParameter['limit'] = limit;
1094
+ if (pageable !== undefined) {
1095
+ localVarQueryParameter['pageable'] = pageable;
751
1096
  }
752
1097
  localVarHeaderParameter['Accept'] = 'application/json';
753
1098
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
@@ -805,8 +1150,8 @@ const AdminConnectionsApiFp = function (configuration) {
805
1150
  const localVarAxiosParamCreator = (0, exports.AdminConnectionsApiAxiosParamCreator)(configuration);
806
1151
  return {
807
1152
  /**
808
- * Iterates every connection_check row where both city and country are NULL and re-runs that row\'s source VPN service to populate location data. Concurrency is capped to avoid overwhelming external providers. Synchronous returns once the run completes.
809
- * @summary Backfill missing location data
1153
+ * Submits an async job that iterates every connection_check row missing both city and country and re-runs its source VPN service to populate location data. Returns immediately with a job id poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final {@code Admin_BackfillLocationResponse} (processed/succeeded/failed counts) lands in the job\'s {@code result_payload} on COMPLETED.
1154
+ * @summary Start a location backfill job
810
1155
  * @param {*} [options] Override http request option.
811
1156
  * @throws {RequiredError}
812
1157
  */
@@ -835,21 +1180,55 @@ const AdminConnectionsApiFp = function (configuration) {
835
1180
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
836
1181
  });
837
1182
  },
1183
+ /**
1184
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
1185
+ * @summary Get connection detail
1186
+ * @param {number} id
1187
+ * @param {*} [options] Override http request option.
1188
+ * @throws {RequiredError}
1189
+ */
1190
+ getConnection(id, options) {
1191
+ return __awaiter(this, void 0, void 0, function* () {
1192
+ var _a, _b, _c;
1193
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getConnection(id, options);
1194
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1195
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminConnectionsApi.getConnection']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1196
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1197
+ });
1198
+ },
1199
+ /**
1200
+ * Paginated list of every player ever seen on this connection, with punishment scoring inline. Suitable for an infinite-scroll panel inside the connection detail modal.
1201
+ * @summary List players who have used this connection
1202
+ * @param {number} id
1203
+ * @param {Pageable} pageable
1204
+ * @param {*} [options] Override http request option.
1205
+ * @throws {RequiredError}
1206
+ */
1207
+ getConnectionPlayers(id, pageable, options) {
1208
+ return __awaiter(this, void 0, void 0, function* () {
1209
+ var _a, _b, _c;
1210
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getConnectionPlayers(id, pageable, options);
1211
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1212
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminConnectionsApi.getConnectionPlayers']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1213
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1214
+ });
1215
+ },
838
1216
  /**
839
1217
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
840
1218
  * @summary List all connections (paginated)
841
- * @param {string | null} [ipAddress] Filter by IP address
842
- * @param {string | null} [uuid] Filter by player UUID
843
- * @param {boolean | null} [isVpn] Filter by VPN status
844
- * @param {number | null} [page] Page number (1-indexed)
845
- * @param {number | null} [limit] Page size
1219
+ * @param {Pageable} pageable
1220
+ * @param {number | null} [createdAfter]
1221
+ * @param {number | null} [createdBefore]
1222
+ * @param {string | null} [ipAddress]
1223
+ * @param {string | null} [uuid]
1224
+ * @param {boolean | null} [isVpn]
846
1225
  * @param {*} [options] Override http request option.
847
1226
  * @throws {RequiredError}
848
1227
  */
849
- listAllConnections(ipAddress, uuid, isVpn, page, limit, options) {
1228
+ listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
850
1229
  return __awaiter(this, void 0, void 0, function* () {
851
1230
  var _a, _b, _c;
852
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listAllConnections(ipAddress, uuid, isVpn, page, limit, options);
1231
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options);
853
1232
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
854
1233
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminConnectionsApi.listAllConnections']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
855
1234
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -858,20 +1237,19 @@ const AdminConnectionsApiFp = function (configuration) {
858
1237
  /**
859
1238
  * Returns a list of recent connections with VPN detection status, bypass information, and associated player data. Optionally filter by epoch timestamp (seconds since Unix epoch).
860
1239
  * @summary List recent connections
861
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
862
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
863
- * @param {string | null} [ipAddress] Filter by IP address
864
- * @param {string | null} [uuid] Filter by player UUID
865
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
866
- * @param {number | null} [page] Page number for pagination
867
- * @param {number | null} [limit] Maximum number of records to return
1240
+ * @param {Pageable} pageable
1241
+ * @param {number | null} [createdAfter]
1242
+ * @param {number | null} [createdBefore]
1243
+ * @param {string | null} [ipAddress]
1244
+ * @param {string | null} [uuid]
1245
+ * @param {boolean | null} [isVpn]
868
1246
  * @param {*} [options] Override http request option.
869
1247
  * @throws {RequiredError}
870
1248
  */
871
- listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options) {
1249
+ listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
872
1250
  return __awaiter(this, void 0, void 0, function* () {
873
1251
  var _a, _b, _c;
874
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options);
1252
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options);
875
1253
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
876
1254
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminConnectionsApi.listConnections']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
877
1255
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -904,8 +1282,8 @@ const AdminConnectionsApiFactory = function (configuration, basePath, axios) {
904
1282
  const localVarFp = (0, exports.AdminConnectionsApiFp)(configuration);
905
1283
  return {
906
1284
  /**
907
- * Iterates every connection_check row where both city and country are NULL and re-runs that row\'s source VPN service to populate location data. Concurrency is capped to avoid overwhelming external providers. Synchronous returns once the run completes.
908
- * @summary Backfill missing location data
1285
+ * Submits an async job that iterates every connection_check row missing both city and country and re-runs its source VPN service to populate location data. Returns immediately with a job id poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final {@code Admin_BackfillLocationResponse} (processed/succeeded/failed counts) lands in the job\'s {@code result_payload} on COMPLETED.
1286
+ * @summary Start a location backfill job
909
1287
  * @param {*} [options] Override http request option.
910
1288
  * @throws {RequiredError}
911
1289
  */
@@ -922,35 +1300,56 @@ const AdminConnectionsApiFactory = function (configuration, basePath, axios) {
922
1300
  createBypass(createBypassRequest, options) {
923
1301
  return localVarFp.createBypass(createBypassRequest, options).then((request) => request(axios, basePath));
924
1302
  },
1303
+ /**
1304
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
1305
+ * @summary Get connection detail
1306
+ * @param {number} id
1307
+ * @param {*} [options] Override http request option.
1308
+ * @throws {RequiredError}
1309
+ */
1310
+ getConnection(id, options) {
1311
+ return localVarFp.getConnection(id, options).then((request) => request(axios, basePath));
1312
+ },
1313
+ /**
1314
+ * Paginated list of every player ever seen on this connection, with punishment scoring inline. Suitable for an infinite-scroll panel inside the connection detail modal.
1315
+ * @summary List players who have used this connection
1316
+ * @param {number} id
1317
+ * @param {Pageable} pageable
1318
+ * @param {*} [options] Override http request option.
1319
+ * @throws {RequiredError}
1320
+ */
1321
+ getConnectionPlayers(id, pageable, options) {
1322
+ return localVarFp.getConnectionPlayers(id, pageable, options).then((request) => request(axios, basePath));
1323
+ },
925
1324
  /**
926
1325
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
927
1326
  * @summary List all connections (paginated)
928
- * @param {string | null} [ipAddress] Filter by IP address
929
- * @param {string | null} [uuid] Filter by player UUID
930
- * @param {boolean | null} [isVpn] Filter by VPN status
931
- * @param {number | null} [page] Page number (1-indexed)
932
- * @param {number | null} [limit] Page size
1327
+ * @param {Pageable} pageable
1328
+ * @param {number | null} [createdAfter]
1329
+ * @param {number | null} [createdBefore]
1330
+ * @param {string | null} [ipAddress]
1331
+ * @param {string | null} [uuid]
1332
+ * @param {boolean | null} [isVpn]
933
1333
  * @param {*} [options] Override http request option.
934
1334
  * @throws {RequiredError}
935
1335
  */
936
- listAllConnections(ipAddress, uuid, isVpn, page, limit, options) {
937
- return localVarFp.listAllConnections(ipAddress, uuid, isVpn, page, limit, options).then((request) => request(axios, basePath));
1336
+ listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1337
+ return localVarFp.listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
938
1338
  },
939
1339
  /**
940
1340
  * Returns a list of recent connections with VPN detection status, bypass information, and associated player data. Optionally filter by epoch timestamp (seconds since Unix epoch).
941
1341
  * @summary List recent connections
942
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
943
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
944
- * @param {string | null} [ipAddress] Filter by IP address
945
- * @param {string | null} [uuid] Filter by player UUID
946
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
947
- * @param {number | null} [page] Page number for pagination
948
- * @param {number | null} [limit] Maximum number of records to return
1342
+ * @param {Pageable} pageable
1343
+ * @param {number | null} [createdAfter]
1344
+ * @param {number | null} [createdBefore]
1345
+ * @param {string | null} [ipAddress]
1346
+ * @param {string | null} [uuid]
1347
+ * @param {boolean | null} [isVpn]
949
1348
  * @param {*} [options] Override http request option.
950
1349
  * @throws {RequiredError}
951
1350
  */
952
- listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options) {
953
- return localVarFp.listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options).then((request) => request(axios, basePath));
1351
+ listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1352
+ return localVarFp.listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
954
1353
  },
955
1354
  /**
956
1355
  * Re-runs one named VPN detection service for a specific connection, persists the updated result, and recalculates the connection\'s overall `percentPositive` and `numberOfChecks` from all stored checks. Returns the refreshed check result including its new `checkedAt` timestamp.
@@ -971,8 +1370,8 @@ exports.AdminConnectionsApiFactory = AdminConnectionsApiFactory;
971
1370
  */
972
1371
  class AdminConnectionsApi extends base_1.BaseAPI {
973
1372
  /**
974
- * Iterates every connection_check row where both city and country are NULL and re-runs that row\'s source VPN service to populate location data. Concurrency is capped to avoid overwhelming external providers. Synchronous returns once the run completes.
975
- * @summary Backfill missing location data
1373
+ * Submits an async job that iterates every connection_check row missing both city and country and re-runs its source VPN service to populate location data. Returns immediately with a job id poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final {@code Admin_BackfillLocationResponse} (processed/succeeded/failed counts) lands in the job\'s {@code result_payload} on COMPLETED.
1374
+ * @summary Start a location backfill job
976
1375
  * @param {*} [options] Override http request option.
977
1376
  * @throws {RequiredError}
978
1377
  */
@@ -989,35 +1388,56 @@ class AdminConnectionsApi extends base_1.BaseAPI {
989
1388
  createBypass(createBypassRequest, options) {
990
1389
  return (0, exports.AdminConnectionsApiFp)(this.configuration).createBypass(createBypassRequest, options).then((request) => request(this.axios, this.basePath));
991
1390
  }
1391
+ /**
1392
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
1393
+ * @summary Get connection detail
1394
+ * @param {number} id
1395
+ * @param {*} [options] Override http request option.
1396
+ * @throws {RequiredError}
1397
+ */
1398
+ getConnection(id, options) {
1399
+ return (0, exports.AdminConnectionsApiFp)(this.configuration).getConnection(id, options).then((request) => request(this.axios, this.basePath));
1400
+ }
1401
+ /**
1402
+ * Paginated list of every player ever seen on this connection, with punishment scoring inline. Suitable for an infinite-scroll panel inside the connection detail modal.
1403
+ * @summary List players who have used this connection
1404
+ * @param {number} id
1405
+ * @param {Pageable} pageable
1406
+ * @param {*} [options] Override http request option.
1407
+ * @throws {RequiredError}
1408
+ */
1409
+ getConnectionPlayers(id, pageable, options) {
1410
+ return (0, exports.AdminConnectionsApiFp)(this.configuration).getConnectionPlayers(id, pageable, options).then((request) => request(this.axios, this.basePath));
1411
+ }
992
1412
  /**
993
1413
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
994
1414
  * @summary List all connections (paginated)
995
- * @param {string | null} [ipAddress] Filter by IP address
996
- * @param {string | null} [uuid] Filter by player UUID
997
- * @param {boolean | null} [isVpn] Filter by VPN status
998
- * @param {number | null} [page] Page number (1-indexed)
999
- * @param {number | null} [limit] Page size
1415
+ * @param {Pageable} pageable
1416
+ * @param {number | null} [createdAfter]
1417
+ * @param {number | null} [createdBefore]
1418
+ * @param {string | null} [ipAddress]
1419
+ * @param {string | null} [uuid]
1420
+ * @param {boolean | null} [isVpn]
1000
1421
  * @param {*} [options] Override http request option.
1001
1422
  * @throws {RequiredError}
1002
1423
  */
1003
- listAllConnections(ipAddress, uuid, isVpn, page, limit, options) {
1004
- return (0, exports.AdminConnectionsApiFp)(this.configuration).listAllConnections(ipAddress, uuid, isVpn, page, limit, options).then((request) => request(this.axios, this.basePath));
1424
+ listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1425
+ return (0, exports.AdminConnectionsApiFp)(this.configuration).listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
1005
1426
  }
1006
1427
  /**
1007
1428
  * Returns a list of recent connections with VPN detection status, bypass information, and associated player data. Optionally filter by epoch timestamp (seconds since Unix epoch).
1008
1429
  * @summary List recent connections
1009
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
1010
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
1011
- * @param {string | null} [ipAddress] Filter by IP address
1012
- * @param {string | null} [uuid] Filter by player UUID
1013
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
1014
- * @param {number | null} [page] Page number for pagination
1015
- * @param {number | null} [limit] Maximum number of records to return
1430
+ * @param {Pageable} pageable
1431
+ * @param {number | null} [createdAfter]
1432
+ * @param {number | null} [createdBefore]
1433
+ * @param {string | null} [ipAddress]
1434
+ * @param {string | null} [uuid]
1435
+ * @param {boolean | null} [isVpn]
1016
1436
  * @param {*} [options] Override http request option.
1017
1437
  * @throws {RequiredError}
1018
1438
  */
1019
- listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options) {
1020
- return (0, exports.AdminConnectionsApiFp)(this.configuration).listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options).then((request) => request(this.axios, this.basePath));
1439
+ listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1440
+ return (0, exports.AdminConnectionsApiFp)(this.configuration).listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
1021
1441
  }
1022
1442
  /**
1023
1443
  * Re-runs one named VPN detection service for a specific connection, persists the updated result, and recalculates the connection\'s overall `percentPositive` and `numberOfChecks` from all stored checks. Returns the refreshed check result including its new `checkedAt` timestamp.
@@ -1127,35 +1547,34 @@ class AdminDashboardApi extends base_1.BaseAPI {
1127
1547
  }
1128
1548
  exports.AdminDashboardApi = AdminDashboardApi;
1129
1549
  /**
1130
- * AdminPlayersApi - axios parameter creator
1550
+ * AdminJobsApi - axios parameter creator
1131
1551
  */
1132
- const AdminPlayersApiAxiosParamCreator = function (configuration) {
1552
+ const AdminJobsApiAxiosParamCreator = function (configuration) {
1133
1553
  return {
1134
1554
  /**
1135
- * Returns full detail for a single player including all known usernames and punishment scoring.
1136
- * @summary Get player detail
1137
- * @param {string} uuid Player Minecraft UUID
1555
+ * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
1556
+ * @summary Request cancellation of an async job
1557
+ * @param {string} id Job id
1138
1558
  * @param {*} [options] Override http request option.
1139
1559
  * @throws {RequiredError}
1140
1560
  */
1141
- getPlayer: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
1142
- // verify required parameter 'uuid' is not null or undefined
1143
- (0, common_1.assertParamExists)('getPlayer', 'uuid', uuid);
1144
- const localVarPath = `/admin/player/{uuid}`
1145
- .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
1561
+ cancel: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
1562
+ // verify required parameter 'id' is not null or undefined
1563
+ (0, common_1.assertParamExists)('cancel', 'id', id);
1564
+ const localVarPath = `/admin/job/{id}`
1565
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
1146
1566
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1147
1567
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1148
1568
  let baseOptions;
1149
1569
  if (configuration) {
1150
1570
  baseOptions = configuration.baseOptions;
1151
1571
  }
1152
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1572
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
1153
1573
  const localVarHeaderParameter = {};
1154
1574
  const localVarQueryParameter = {};
1155
1575
  // authentication DiscordAuth required
1156
1576
  // http bearer authentication required
1157
1577
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1158
- localVarHeaderParameter['Accept'] = 'application/json';
1159
1578
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1160
1579
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1161
1580
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -1165,20 +1584,17 @@ const AdminPlayersApiAxiosParamCreator = function (configuration) {
1165
1584
  };
1166
1585
  }),
1167
1586
  /**
1168
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1169
- * @summary List players
1170
- * @param {number} page Page number (1-indexed)
1171
- * @param {number} limit Page size
1172
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1587
+ * Returns the CSV emitted by the job typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
1588
+ * @summary Download a job\'s CSV artifact
1589
+ * @param {string} id Job id
1173
1590
  * @param {*} [options] Override http request option.
1174
1591
  * @throws {RequiredError}
1175
1592
  */
1176
- listPlayers: (page_1, limit_1, search_1, ...args_1) => __awaiter(this, [page_1, limit_1, search_1, ...args_1], void 0, function* (page, limit, search, options = {}) {
1177
- // verify required parameter 'page' is not null or undefined
1178
- (0, common_1.assertParamExists)('listPlayers', 'page', page);
1179
- // verify required parameter 'limit' is not null or undefined
1180
- (0, common_1.assertParamExists)('listPlayers', 'limit', limit);
1181
- const localVarPath = `/admin/player`;
1593
+ downloadArtifact: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
1594
+ // verify required parameter 'id' is not null or undefined
1595
+ (0, common_1.assertParamExists)('downloadArtifact', 'id', id);
1596
+ const localVarPath = `/admin/job/{id}/artifact.csv`
1597
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
1182
1598
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1183
1599
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1184
1600
  let baseOptions;
@@ -1191,14 +1607,77 @@ const AdminPlayersApiAxiosParamCreator = function (configuration) {
1191
1607
  // authentication DiscordAuth required
1192
1608
  // http bearer authentication required
1193
1609
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1194
- if (search !== undefined) {
1195
- localVarQueryParameter['search'] = search;
1610
+ localVarHeaderParameter['Accept'] = 'text/csv';
1611
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1612
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1613
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1614
+ return {
1615
+ url: (0, common_1.toPathString)(localVarUrlObj),
1616
+ options: localVarRequestOptions,
1617
+ };
1618
+ }),
1619
+ /**
1620
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1621
+ * @summary Get one async job
1622
+ * @param {string} id Job id
1623
+ * @param {*} [options] Override http request option.
1624
+ * @throws {RequiredError}
1625
+ */
1626
+ get: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
1627
+ // verify required parameter 'id' is not null or undefined
1628
+ (0, common_1.assertParamExists)('get', 'id', id);
1629
+ const localVarPath = `/admin/job/{id}`
1630
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
1631
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1632
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1633
+ let baseOptions;
1634
+ if (configuration) {
1635
+ baseOptions = configuration.baseOptions;
1636
+ }
1637
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1638
+ const localVarHeaderParameter = {};
1639
+ const localVarQueryParameter = {};
1640
+ // authentication DiscordAuth required
1641
+ // http bearer authentication required
1642
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1643
+ localVarHeaderParameter['Accept'] = 'application/json';
1644
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1645
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1646
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1647
+ return {
1648
+ url: (0, common_1.toPathString)(localVarUrlObj),
1649
+ options: localVarRequestOptions,
1650
+ };
1651
+ }),
1652
+ /**
1653
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1654
+ * @summary List async jobs
1655
+ * @param {Pageable} pageable
1656
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1657
+ * @param {*} [options] Override http request option.
1658
+ * @throws {RequiredError}
1659
+ */
1660
+ list: (pageable_1, status_1, ...args_1) => __awaiter(this, [pageable_1, status_1, ...args_1], void 0, function* (pageable, status, options = {}) {
1661
+ // verify required parameter 'pageable' is not null or undefined
1662
+ (0, common_1.assertParamExists)('list', 'pageable', pageable);
1663
+ const localVarPath = `/admin/job`;
1664
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1665
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1666
+ let baseOptions;
1667
+ if (configuration) {
1668
+ baseOptions = configuration.baseOptions;
1196
1669
  }
1197
- if (page !== undefined) {
1198
- localVarQueryParameter['page'] = page;
1670
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1671
+ const localVarHeaderParameter = {};
1672
+ const localVarQueryParameter = {};
1673
+ // authentication DiscordAuth required
1674
+ // http bearer authentication required
1675
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1676
+ if (status !== undefined) {
1677
+ localVarQueryParameter['status'] = status;
1199
1678
  }
1200
- if (limit !== undefined) {
1201
- localVarQueryParameter['limit'] = limit;
1679
+ if (pageable !== undefined) {
1680
+ localVarQueryParameter['pageable'] = pageable;
1202
1681
  }
1203
1682
  localVarHeaderParameter['Accept'] = 'application/json';
1204
1683
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
@@ -1211,125 +1690,198 @@ const AdminPlayersApiAxiosParamCreator = function (configuration) {
1211
1690
  }),
1212
1691
  };
1213
1692
  };
1214
- exports.AdminPlayersApiAxiosParamCreator = AdminPlayersApiAxiosParamCreator;
1693
+ exports.AdminJobsApiAxiosParamCreator = AdminJobsApiAxiosParamCreator;
1215
1694
  /**
1216
- * AdminPlayersApi - functional programming interface
1695
+ * AdminJobsApi - functional programming interface
1217
1696
  */
1218
- const AdminPlayersApiFp = function (configuration) {
1219
- const localVarAxiosParamCreator = (0, exports.AdminPlayersApiAxiosParamCreator)(configuration);
1697
+ const AdminJobsApiFp = function (configuration) {
1698
+ const localVarAxiosParamCreator = (0, exports.AdminJobsApiAxiosParamCreator)(configuration);
1220
1699
  return {
1221
1700
  /**
1222
- * Returns full detail for a single player including all known usernames and punishment scoring.
1223
- * @summary Get player detail
1224
- * @param {string} uuid Player Minecraft UUID
1701
+ * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
1702
+ * @summary Request cancellation of an async job
1703
+ * @param {string} id Job id
1225
1704
  * @param {*} [options] Override http request option.
1226
1705
  * @throws {RequiredError}
1227
1706
  */
1228
- getPlayer(uuid, options) {
1707
+ cancel(id, options) {
1229
1708
  return __awaiter(this, void 0, void 0, function* () {
1230
1709
  var _a, _b, _c;
1231
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayer(uuid, options);
1710
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.cancel(id, options);
1232
1711
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1233
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getPlayer']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1712
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminJobsApi.cancel']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1234
1713
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1235
1714
  });
1236
1715
  },
1237
1716
  /**
1238
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1239
- * @summary List players
1240
- * @param {number} page Page number (1-indexed)
1241
- * @param {number} limit Page size
1242
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1717
+ * Returns the CSV emitted by the job typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
1718
+ * @summary Download a job\'s CSV artifact
1719
+ * @param {string} id Job id
1243
1720
  * @param {*} [options] Override http request option.
1244
1721
  * @throws {RequiredError}
1245
1722
  */
1246
- listPlayers(page, limit, search, options) {
1723
+ downloadArtifact(id, options) {
1247
1724
  return __awaiter(this, void 0, void 0, function* () {
1248
1725
  var _a, _b, _c;
1249
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listPlayers(page, limit, search, options);
1726
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.downloadArtifact(id, options);
1250
1727
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1251
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.listPlayers']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1728
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminJobsApi.downloadArtifact']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1729
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1730
+ });
1731
+ },
1732
+ /**
1733
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1734
+ * @summary Get one async job
1735
+ * @param {string} id Job id
1736
+ * @param {*} [options] Override http request option.
1737
+ * @throws {RequiredError}
1738
+ */
1739
+ get(id, options) {
1740
+ return __awaiter(this, void 0, void 0, function* () {
1741
+ var _a, _b, _c;
1742
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.get(id, options);
1743
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1744
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminJobsApi.get']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1745
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1746
+ });
1747
+ },
1748
+ /**
1749
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1750
+ * @summary List async jobs
1751
+ * @param {Pageable} pageable
1752
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1753
+ * @param {*} [options] Override http request option.
1754
+ * @throws {RequiredError}
1755
+ */
1756
+ list(pageable, status, options) {
1757
+ return __awaiter(this, void 0, void 0, function* () {
1758
+ var _a, _b, _c;
1759
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.list(pageable, status, options);
1760
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1761
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminJobsApi.list']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1252
1762
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1253
1763
  });
1254
1764
  },
1255
1765
  };
1256
1766
  };
1257
- exports.AdminPlayersApiFp = AdminPlayersApiFp;
1767
+ exports.AdminJobsApiFp = AdminJobsApiFp;
1258
1768
  /**
1259
- * AdminPlayersApi - factory interface
1769
+ * AdminJobsApi - factory interface
1260
1770
  */
1261
- const AdminPlayersApiFactory = function (configuration, basePath, axios) {
1262
- const localVarFp = (0, exports.AdminPlayersApiFp)(configuration);
1771
+ const AdminJobsApiFactory = function (configuration, basePath, axios) {
1772
+ const localVarFp = (0, exports.AdminJobsApiFp)(configuration);
1263
1773
  return {
1264
1774
  /**
1265
- * Returns full detail for a single player including all known usernames and punishment scoring.
1266
- * @summary Get player detail
1267
- * @param {string} uuid Player Minecraft UUID
1775
+ * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
1776
+ * @summary Request cancellation of an async job
1777
+ * @param {string} id Job id
1268
1778
  * @param {*} [options] Override http request option.
1269
1779
  * @throws {RequiredError}
1270
1780
  */
1271
- getPlayer(uuid, options) {
1272
- return localVarFp.getPlayer(uuid, options).then((request) => request(axios, basePath));
1781
+ cancel(id, options) {
1782
+ return localVarFp.cancel(id, options).then((request) => request(axios, basePath));
1273
1783
  },
1274
1784
  /**
1275
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1276
- * @summary List players
1277
- * @param {number} page Page number (1-indexed)
1278
- * @param {number} limit Page size
1279
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1785
+ * Returns the CSV emitted by the job typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
1786
+ * @summary Download a job\'s CSV artifact
1787
+ * @param {string} id Job id
1788
+ * @param {*} [options] Override http request option.
1789
+ * @throws {RequiredError}
1790
+ */
1791
+ downloadArtifact(id, options) {
1792
+ return localVarFp.downloadArtifact(id, options).then((request) => request(axios, basePath));
1793
+ },
1794
+ /**
1795
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1796
+ * @summary Get one async job
1797
+ * @param {string} id Job id
1798
+ * @param {*} [options] Override http request option.
1799
+ * @throws {RequiredError}
1800
+ */
1801
+ get(id, options) {
1802
+ return localVarFp.get(id, options).then((request) => request(axios, basePath));
1803
+ },
1804
+ /**
1805
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1806
+ * @summary List async jobs
1807
+ * @param {Pageable} pageable
1808
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1280
1809
  * @param {*} [options] Override http request option.
1281
1810
  * @throws {RequiredError}
1282
1811
  */
1283
- listPlayers(page, limit, search, options) {
1284
- return localVarFp.listPlayers(page, limit, search, options).then((request) => request(axios, basePath));
1812
+ list(pageable, status, options) {
1813
+ return localVarFp.list(pageable, status, options).then((request) => request(axios, basePath));
1285
1814
  },
1286
1815
  };
1287
1816
  };
1288
- exports.AdminPlayersApiFactory = AdminPlayersApiFactory;
1817
+ exports.AdminJobsApiFactory = AdminJobsApiFactory;
1289
1818
  /**
1290
- * AdminPlayersApi - object-oriented interface
1819
+ * AdminJobsApi - object-oriented interface
1291
1820
  */
1292
- class AdminPlayersApi extends base_1.BaseAPI {
1821
+ class AdminJobsApi extends base_1.BaseAPI {
1293
1822
  /**
1294
- * Returns full detail for a single player including all known usernames and punishment scoring.
1295
- * @summary Get player detail
1296
- * @param {string} uuid Player Minecraft UUID
1823
+ * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
1824
+ * @summary Request cancellation of an async job
1825
+ * @param {string} id Job id
1297
1826
  * @param {*} [options] Override http request option.
1298
1827
  * @throws {RequiredError}
1299
1828
  */
1300
- getPlayer(uuid, options) {
1301
- return (0, exports.AdminPlayersApiFp)(this.configuration).getPlayer(uuid, options).then((request) => request(this.axios, this.basePath));
1829
+ cancel(id, options) {
1830
+ return (0, exports.AdminJobsApiFp)(this.configuration).cancel(id, options).then((request) => request(this.axios, this.basePath));
1302
1831
  }
1303
1832
  /**
1304
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1305
- * @summary List players
1306
- * @param {number} page Page number (1-indexed)
1307
- * @param {number} limit Page size
1308
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1833
+ * Returns the CSV emitted by the job typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
1834
+ * @summary Download a job\'s CSV artifact
1835
+ * @param {string} id Job id
1836
+ * @param {*} [options] Override http request option.
1837
+ * @throws {RequiredError}
1838
+ */
1839
+ downloadArtifact(id, options) {
1840
+ return (0, exports.AdminJobsApiFp)(this.configuration).downloadArtifact(id, options).then((request) => request(this.axios, this.basePath));
1841
+ }
1842
+ /**
1843
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1844
+ * @summary Get one async job
1845
+ * @param {string} id Job id
1846
+ * @param {*} [options] Override http request option.
1847
+ * @throws {RequiredError}
1848
+ */
1849
+ get(id, options) {
1850
+ return (0, exports.AdminJobsApiFp)(this.configuration).get(id, options).then((request) => request(this.axios, this.basePath));
1851
+ }
1852
+ /**
1853
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1854
+ * @summary List async jobs
1855
+ * @param {Pageable} pageable
1856
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1309
1857
  * @param {*} [options] Override http request option.
1310
1858
  * @throws {RequiredError}
1311
1859
  */
1312
- listPlayers(page, limit, search, options) {
1313
- return (0, exports.AdminPlayersApiFp)(this.configuration).listPlayers(page, limit, search, options).then((request) => request(this.axios, this.basePath));
1860
+ list(pageable, status, options) {
1861
+ return (0, exports.AdminJobsApiFp)(this.configuration).list(pageable, status, options).then((request) => request(this.axios, this.basePath));
1314
1862
  }
1315
1863
  }
1316
- exports.AdminPlayersApi = AdminPlayersApi;
1864
+ exports.AdminJobsApi = AdminJobsApi;
1317
1865
  /**
1318
- * AdminPunishmentsApi - axios parameter creator
1866
+ * AdminPlayersApi - axios parameter creator
1319
1867
  */
1320
- const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
1868
+ const AdminPlayersApiAxiosParamCreator = function (configuration) {
1321
1869
  return {
1322
1870
  /**
1323
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1324
- * @summary Apply punishment
1325
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1871
+ * Mark another player as a known-legitimate associate (e.g. roommate). The relationship is stored symmetrically: subsequent aggressive-mode propagation skips this pair as an alt source in either direction. Finer-grained than the per-player aggressive_mode_immunity flag.
1872
+ * @summary Add an alt exemption
1873
+ * @param {string} uuid Player Minecraft UUID
1874
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
1326
1875
  * @param {*} [options] Override http request option.
1327
1876
  * @throws {RequiredError}
1328
1877
  */
1329
- applyPunishment: (adminApplyPunishmentRequest_1, ...args_1) => __awaiter(this, [adminApplyPunishmentRequest_1, ...args_1], void 0, function* (adminApplyPunishmentRequest, options = {}) {
1330
- // verify required parameter 'adminApplyPunishmentRequest' is not null or undefined
1331
- (0, common_1.assertParamExists)('applyPunishment', 'adminApplyPunishmentRequest', adminApplyPunishmentRequest);
1332
- const localVarPath = `/admin/punishment/apply`;
1878
+ addAltExemption: (uuid_1, adminCreateAltExemptionRequest_1, ...args_1) => __awaiter(this, [uuid_1, adminCreateAltExemptionRequest_1, ...args_1], void 0, function* (uuid, adminCreateAltExemptionRequest, options = {}) {
1879
+ // verify required parameter 'uuid' is not null or undefined
1880
+ (0, common_1.assertParamExists)('addAltExemption', 'uuid', uuid);
1881
+ // verify required parameter 'adminCreateAltExemptionRequest' is not null or undefined
1882
+ (0, common_1.assertParamExists)('addAltExemption', 'adminCreateAltExemptionRequest', adminCreateAltExemptionRequest);
1883
+ const localVarPath = `/admin/player/{uuid}/alt-exemption`
1884
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
1333
1885
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1334
1886
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1335
1887
  let baseOptions;
@@ -1343,27 +1895,23 @@ const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
1343
1895
  // http bearer authentication required
1344
1896
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1345
1897
  localVarHeaderParameter['Content-Type'] = 'application/json';
1346
- localVarHeaderParameter['Accept'] = 'application/json';
1347
1898
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1348
1899
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1349
1900
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1350
- localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminApplyPunishmentRequest, localVarRequestOptions, configuration);
1901
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminCreateAltExemptionRequest, localVarRequestOptions, configuration);
1351
1902
  return {
1352
1903
  url: (0, common_1.toPathString)(localVarUrlObj),
1353
1904
  options: localVarRequestOptions,
1354
1905
  };
1355
1906
  }),
1356
1907
  /**
1357
- * Preview the impact of a punishment across one or more targets. No changes are made.
1358
- * @summary Evaluate punishment impact
1359
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
1908
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
1909
+ * @summary Start a username backfill job
1360
1910
  * @param {*} [options] Override http request option.
1361
1911
  * @throws {RequiredError}
1362
1912
  */
1363
- createDraft: (adminCreatePunishmentDraftRequest_1, ...args_1) => __awaiter(this, [adminCreatePunishmentDraftRequest_1, ...args_1], void 0, function* (adminCreatePunishmentDraftRequest, options = {}) {
1364
- // verify required parameter 'adminCreatePunishmentDraftRequest' is not null or undefined
1365
- (0, common_1.assertParamExists)('createDraft', 'adminCreatePunishmentDraftRequest', adminCreatePunishmentDraftRequest);
1366
- const localVarPath = `/admin/punishment/draft`;
1913
+ backfillUsernames: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
1914
+ const localVarPath = `/admin/player/backfill-usernames`;
1367
1915
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1368
1916
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1369
1917
  let baseOptions;
@@ -1376,152 +1924,1769 @@ const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
1376
1924
  // authentication DiscordAuth required
1377
1925
  // http bearer authentication required
1378
1926
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1379
- localVarHeaderParameter['Content-Type'] = 'application/json';
1380
1927
  localVarHeaderParameter['Accept'] = 'application/json';
1381
1928
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1382
1929
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1383
1930
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1384
- localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminCreatePunishmentDraftRequest, localVarRequestOptions, configuration);
1385
1931
  return {
1386
1932
  url: (0, common_1.toPathString)(localVarUrlObj),
1387
1933
  options: localVarRequestOptions,
1388
1934
  };
1389
1935
  }),
1390
1936
  /**
1391
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1392
- * @summary List punishments
1393
- * @param {number} page Page number (1-indexed)
1394
- * @param {number} limit Page size
1395
- * @param {string | null} [uuid] Filter by player UUID
1396
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1397
- * @param {string | null} [ipAddress] Filter by IP address
1398
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1399
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1400
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
1401
- * @param {*} [options] Override http request option.
1402
- * @throws {RequiredError}
1403
- */
1404
- getPunishments: (page_1, limit_1, uuid_1, username_1, ipAddress_1, type_1, issuedAfter_1, issuedBefore_1, ...args_1) => __awaiter(this, [page_1, limit_1, uuid_1, username_1, ipAddress_1, type_1, issuedAfter_1, issuedBefore_1, ...args_1], void 0, function* (page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options = {}) {
1405
- // verify required parameter 'page' is not null or undefined
1406
- (0, common_1.assertParamExists)('getPunishments', 'page', page);
1407
- // verify required parameter 'limit' is not null or undefined
1408
- (0, common_1.assertParamExists)('getPunishments', 'limit', limit);
1409
- const localVarPath = `/admin/punishment`;
1937
+ * Soft-revokes every currently active PROPAGATED player_punishment row whose source matches the supplied id. Exactly one of sourcePlayerId / sourceConnectionId must be set. Useful when staff identify a single source as a false positive (e.g. shared NAT, legitimate roommate) and want to undo every link it caused in one operation.
1938
+ * @summary Bulk-revoke PROPAGATED links by source
1939
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
1940
+ * @param {*} [options] Override http request option.
1941
+ * @throws {RequiredError}
1942
+ */
1943
+ bulkRevokePropagated: (adminBulkRevokeRequest_1, ...args_1) => __awaiter(this, [adminBulkRevokeRequest_1, ...args_1], void 0, function* (adminBulkRevokeRequest, options = {}) {
1944
+ // verify required parameter 'adminBulkRevokeRequest' is not null or undefined
1945
+ (0, common_1.assertParamExists)('bulkRevokePropagated', 'adminBulkRevokeRequest', adminBulkRevokeRequest);
1946
+ const localVarPath = `/admin/player/player-punishment/bulk-revoke`;
1410
1947
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1411
1948
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1412
1949
  let baseOptions;
1413
1950
  if (configuration) {
1414
1951
  baseOptions = configuration.baseOptions;
1415
1952
  }
1416
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1953
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1417
1954
  const localVarHeaderParameter = {};
1418
1955
  const localVarQueryParameter = {};
1419
1956
  // authentication DiscordAuth required
1420
1957
  // http bearer authentication required
1421
1958
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1422
- if (uuid !== undefined) {
1423
- localVarQueryParameter['uuid'] = uuid;
1424
- }
1425
- if (username !== undefined) {
1426
- localVarQueryParameter['username'] = username;
1427
- }
1428
- if (ipAddress !== undefined) {
1429
- localVarQueryParameter['ipAddress'] = ipAddress;
1430
- }
1431
- if (type) {
1432
- localVarQueryParameter['type'] = type.join(base_1.COLLECTION_FORMATS.csv);
1433
- }
1434
- if (issuedAfter !== undefined) {
1435
- localVarQueryParameter['issuedAfter'] = issuedAfter;
1436
- }
1437
- if (issuedBefore !== undefined) {
1438
- localVarQueryParameter['issuedBefore'] = issuedBefore;
1439
- }
1440
- if (page !== undefined) {
1441
- localVarQueryParameter['page'] = page;
1442
- }
1443
- if (limit !== undefined) {
1444
- localVarQueryParameter['limit'] = limit;
1445
- }
1959
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1446
1960
  localVarHeaderParameter['Accept'] = 'application/json';
1447
1961
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1448
1962
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1449
1963
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1964
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminBulkRevokeRequest, localVarRequestOptions, configuration);
1450
1965
  return {
1451
1966
  url: (0, common_1.toPathString)(localVarUrlObj),
1452
1967
  options: localVarRequestOptions,
1453
1968
  };
1454
1969
  }),
1455
1970
  /**
1456
- * Search for players by UUID or username, or look up all players associated with an IP address.
1457
- * @summary Search punishment targets
1458
- * @param {string} q UUID, username, or partial/full IP address to search for
1971
+ * Appends a free-form note (1–4000 chars). Notes are not editable to revise, post a new one and soft-delete the old.
1972
+ * @summary Create a staff note on a player
1973
+ * @param {string} uuid Player Minecraft UUID
1974
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
1459
1975
  * @param {*} [options] Override http request option.
1460
1976
  * @throws {RequiredError}
1461
1977
  */
1462
- searchTargets: (q_1, ...args_1) => __awaiter(this, [q_1, ...args_1], void 0, function* (q, options = {}) {
1463
- // verify required parameter 'q' is not null or undefined
1464
- (0, common_1.assertParamExists)('searchTargets', 'q', q);
1465
- const localVarPath = `/admin/punishment/search`;
1978
+ createPlayerNote: (uuid_1, adminCreatePlayerNoteRequest_1, ...args_1) => __awaiter(this, [uuid_1, adminCreatePlayerNoteRequest_1, ...args_1], void 0, function* (uuid, adminCreatePlayerNoteRequest, options = {}) {
1979
+ // verify required parameter 'uuid' is not null or undefined
1980
+ (0, common_1.assertParamExists)('createPlayerNote', 'uuid', uuid);
1981
+ // verify required parameter 'adminCreatePlayerNoteRequest' is not null or undefined
1982
+ (0, common_1.assertParamExists)('createPlayerNote', 'adminCreatePlayerNoteRequest', adminCreatePlayerNoteRequest);
1983
+ const localVarPath = `/admin/player/{uuid}/note`
1984
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
1466
1985
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1467
1986
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
1468
1987
  let baseOptions;
1469
1988
  if (configuration) {
1470
1989
  baseOptions = configuration.baseOptions;
1471
1990
  }
1472
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1991
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1473
1992
  const localVarHeaderParameter = {};
1474
1993
  const localVarQueryParameter = {};
1475
1994
  // authentication DiscordAuth required
1476
1995
  // http bearer authentication required
1477
1996
  yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
1478
- if (q !== undefined) {
1479
- localVarQueryParameter['q'] = q;
1480
- }
1997
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1481
1998
  localVarHeaderParameter['Accept'] = 'application/json';
1482
1999
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
1483
2000
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1484
2001
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2002
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminCreatePlayerNoteRequest, localVarRequestOptions, configuration);
1485
2003
  return {
1486
2004
  url: (0, common_1.toPathString)(localVarUrlObj),
1487
2005
  options: localVarRequestOptions,
1488
2006
  };
1489
2007
  }),
1490
- };
1491
- };
1492
- exports.AdminPunishmentsApiAxiosParamCreator = AdminPunishmentsApiAxiosParamCreator;
1493
- /**
1494
- * AdminPunishmentsApi - functional programming interface
1495
- */
1496
- const AdminPunishmentsApiFp = function (configuration) {
1497
- const localVarAxiosParamCreator = (0, exports.AdminPunishmentsApiAxiosParamCreator)(configuration);
1498
- return {
1499
2008
  /**
1500
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1501
- * @summary Apply punishment
1502
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
2009
+ * Marks the note as deleted but keeps the row for audit. Idempotent 404 if already deleted or unknown id.
2010
+ * @summary Soft-delete a staff note
2011
+ * @param {string} uuid Player Minecraft UUID (routing only)
2012
+ * @param {number} noteId Note id
1503
2013
  * @param {*} [options] Override http request option.
1504
2014
  * @throws {RequiredError}
1505
2015
  */
1506
- applyPunishment(adminApplyPunishmentRequest, options) {
1507
- return __awaiter(this, void 0, void 0, function* () {
1508
- var _a, _b, _c;
1509
- const localVarAxiosArgs = yield localVarAxiosParamCreator.applyPunishment(adminApplyPunishmentRequest, options);
1510
- const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1511
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.applyPunishment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1512
- return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1513
- });
1514
- },
2016
+ deletePlayerNote: (uuid_1, noteId_1, ...args_1) => __awaiter(this, [uuid_1, noteId_1, ...args_1], void 0, function* (uuid, noteId, options = {}) {
2017
+ // verify required parameter 'uuid' is not null or undefined
2018
+ (0, common_1.assertParamExists)('deletePlayerNote', 'uuid', uuid);
2019
+ // verify required parameter 'noteId' is not null or undefined
2020
+ (0, common_1.assertParamExists)('deletePlayerNote', 'noteId', noteId);
2021
+ const localVarPath = `/admin/player/{uuid}/note/{noteId}`
2022
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)))
2023
+ .replace(`{${"noteId"}}`, encodeURIComponent(String(noteId)));
2024
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2025
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2026
+ let baseOptions;
2027
+ if (configuration) {
2028
+ baseOptions = configuration.baseOptions;
2029
+ }
2030
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
2031
+ const localVarHeaderParameter = {};
2032
+ const localVarQueryParameter = {};
2033
+ // authentication DiscordAuth required
2034
+ // http bearer authentication required
2035
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2036
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2037
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2038
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2039
+ return {
2040
+ url: (0, common_1.toPathString)(localVarUrlObj),
2041
+ options: localVarRequestOptions,
2042
+ };
2043
+ }),
1515
2044
  /**
1516
- * Preview the impact of a punishment across one or more targets. No changes are made.
1517
- * @summary Evaluate punishment impact
1518
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
2045
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
2046
+ * @summary Alt-graph traversal rooted at a player
2047
+ * @param {string} uuid Player Minecraft UUID
2048
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
1519
2049
  * @param {*} [options] Override http request option.
1520
2050
  * @throws {RequiredError}
1521
2051
  */
1522
- createDraft(adminCreatePunishmentDraftRequest, options) {
1523
- return __awaiter(this, void 0, void 0, function* () {
1524
- var _a, _b, _c;
2052
+ getAltGraph: (uuid_1, depth_1, ...args_1) => __awaiter(this, [uuid_1, depth_1, ...args_1], void 0, function* (uuid, depth, options = {}) {
2053
+ // verify required parameter 'uuid' is not null or undefined
2054
+ (0, common_1.assertParamExists)('getAltGraph', 'uuid', uuid);
2055
+ const localVarPath = `/admin/player/{uuid}/alt-graph`
2056
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2057
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2058
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2059
+ let baseOptions;
2060
+ if (configuration) {
2061
+ baseOptions = configuration.baseOptions;
2062
+ }
2063
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2064
+ const localVarHeaderParameter = {};
2065
+ const localVarQueryParameter = {};
2066
+ // authentication DiscordAuth required
2067
+ // http bearer authentication required
2068
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2069
+ if (depth !== undefined) {
2070
+ localVarQueryParameter['depth'] = depth;
2071
+ }
2072
+ localVarHeaderParameter['Accept'] = 'application/json';
2073
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2074
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2075
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2076
+ return {
2077
+ url: (0, common_1.toPathString)(localVarUrlObj),
2078
+ options: localVarRequestOptions,
2079
+ };
2080
+ }),
2081
+ /**
2082
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2083
+ * @summary Get player detail
2084
+ * @param {string} uuid Player Minecraft UUID
2085
+ * @param {*} [options] Override http request option.
2086
+ * @throws {RequiredError}
2087
+ */
2088
+ getPlayer: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
2089
+ // verify required parameter 'uuid' is not null or undefined
2090
+ (0, common_1.assertParamExists)('getPlayer', 'uuid', uuid);
2091
+ const localVarPath = `/admin/player/{uuid}`
2092
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2093
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2094
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2095
+ let baseOptions;
2096
+ if (configuration) {
2097
+ baseOptions = configuration.baseOptions;
2098
+ }
2099
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2100
+ const localVarHeaderParameter = {};
2101
+ const localVarQueryParameter = {};
2102
+ // authentication DiscordAuth required
2103
+ // http bearer authentication required
2104
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2105
+ localVarHeaderParameter['Accept'] = 'application/json';
2106
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2107
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2108
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2109
+ return {
2110
+ url: (0, common_1.toPathString)(localVarUrlObj),
2111
+ options: localVarRequestOptions,
2112
+ };
2113
+ }),
2114
+ /**
2115
+ * Other players who have been seen on at least one of this player\'s historical connections. Sorted by shared-connection count desc, then last seen desc.
2116
+ * @summary List a player\'s alt accounts
2117
+ * @param {string} uuid Player Minecraft UUID
2118
+ * @param {Pageable} pageable
2119
+ * @param {*} [options] Override http request option.
2120
+ * @throws {RequiredError}
2121
+ */
2122
+ getPlayerAlts: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2123
+ // verify required parameter 'uuid' is not null or undefined
2124
+ (0, common_1.assertParamExists)('getPlayerAlts', 'uuid', uuid);
2125
+ // verify required parameter 'pageable' is not null or undefined
2126
+ (0, common_1.assertParamExists)('getPlayerAlts', 'pageable', pageable);
2127
+ const localVarPath = `/admin/player/{uuid}/alts`
2128
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2129
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2130
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2131
+ let baseOptions;
2132
+ if (configuration) {
2133
+ baseOptions = configuration.baseOptions;
2134
+ }
2135
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2136
+ const localVarHeaderParameter = {};
2137
+ const localVarQueryParameter = {};
2138
+ // authentication DiscordAuth required
2139
+ // http bearer authentication required
2140
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2141
+ if (pageable !== undefined) {
2142
+ localVarQueryParameter['pageable'] = pageable;
2143
+ }
2144
+ localVarHeaderParameter['Accept'] = 'application/json';
2145
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2146
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2147
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2148
+ return {
2149
+ url: (0, common_1.toPathString)(localVarUrlObj),
2150
+ options: localVarRequestOptions,
2151
+ };
2152
+ }),
2153
+ /**
2154
+ * Paginated list of every connection this player has used (latest first). Same shape as the dashboard connection list, suitable for an infinite-scroll panel inside the player detail modal.
2155
+ * @summary List a player\'s connection history
2156
+ * @param {string} uuid Player Minecraft UUID
2157
+ * @param {Pageable} pageable
2158
+ * @param {*} [options] Override http request option.
2159
+ * @throws {RequiredError}
2160
+ */
2161
+ getPlayerConnections: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2162
+ // verify required parameter 'uuid' is not null or undefined
2163
+ (0, common_1.assertParamExists)('getPlayerConnections', 'uuid', uuid);
2164
+ // verify required parameter 'pageable' is not null or undefined
2165
+ (0, common_1.assertParamExists)('getPlayerConnections', 'pageable', pageable);
2166
+ const localVarPath = `/admin/player/{uuid}/connections`
2167
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2168
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2169
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2170
+ let baseOptions;
2171
+ if (configuration) {
2172
+ baseOptions = configuration.baseOptions;
2173
+ }
2174
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2175
+ const localVarHeaderParameter = {};
2176
+ const localVarQueryParameter = {};
2177
+ // authentication DiscordAuth required
2178
+ // http bearer authentication required
2179
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2180
+ if (pageable !== undefined) {
2181
+ localVarQueryParameter['pageable'] = pageable;
2182
+ }
2183
+ localVarHeaderParameter['Accept'] = 'application/json';
2184
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2185
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2186
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2187
+ return {
2188
+ url: (0, common_1.toPathString)(localVarUrlObj),
2189
+ options: localVarRequestOptions,
2190
+ };
2191
+ }),
2192
+ /**
2193
+ * Paginated list of every player_punishment row for this player — DIRECT and PROPAGATED, active and revoked. Includes the transfer_note explaining why each propagated link was inserted and the revocation audit trail. The admin UI uses this to render a punishment-history section inside the player detail modal.
2194
+ * @summary List a player\'s full punishment history
2195
+ * @param {string} uuid Player Minecraft UUID
2196
+ * @param {Pageable} pageable
2197
+ * @param {*} [options] Override http request option.
2198
+ * @throws {RequiredError}
2199
+ */
2200
+ getPlayerPunishments: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2201
+ // verify required parameter 'uuid' is not null or undefined
2202
+ (0, common_1.assertParamExists)('getPlayerPunishments', 'uuid', uuid);
2203
+ // verify required parameter 'pageable' is not null or undefined
2204
+ (0, common_1.assertParamExists)('getPlayerPunishments', 'pageable', pageable);
2205
+ const localVarPath = `/admin/player/{uuid}/player-punishments`
2206
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2207
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2208
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2209
+ let baseOptions;
2210
+ if (configuration) {
2211
+ baseOptions = configuration.baseOptions;
2212
+ }
2213
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2214
+ const localVarHeaderParameter = {};
2215
+ const localVarQueryParameter = {};
2216
+ // authentication DiscordAuth required
2217
+ // http bearer authentication required
2218
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2219
+ if (pageable !== undefined) {
2220
+ localVarQueryParameter['pageable'] = pageable;
2221
+ }
2222
+ localVarHeaderParameter['Accept'] = 'application/json';
2223
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2224
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2225
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2226
+ return {
2227
+ url: (0, common_1.toPathString)(localVarUrlObj),
2228
+ options: localVarRequestOptions,
2229
+ };
2230
+ }),
2231
+ /**
2232
+ * Single-row summary: total seconds played, session count, distinct days active, most recent session start, and whether the player is currently online. Computed on demand from player_session. Feeds the trust factor system.
2233
+ * @summary Get a player\'s aggregate session stats
2234
+ * @param {string} uuid Player Minecraft UUID
2235
+ * @param {*} [options] Override http request option.
2236
+ * @throws {RequiredError}
2237
+ */
2238
+ getSessionStats: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
2239
+ // verify required parameter 'uuid' is not null or undefined
2240
+ (0, common_1.assertParamExists)('getSessionStats', 'uuid', uuid);
2241
+ const localVarPath = `/admin/player/{uuid}/session-stats`
2242
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2243
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2244
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2245
+ let baseOptions;
2246
+ if (configuration) {
2247
+ baseOptions = configuration.baseOptions;
2248
+ }
2249
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2250
+ const localVarHeaderParameter = {};
2251
+ const localVarQueryParameter = {};
2252
+ // authentication DiscordAuth required
2253
+ // http bearer authentication required
2254
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2255
+ localVarHeaderParameter['Accept'] = 'application/json';
2256
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2257
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2258
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2259
+ return {
2260
+ url: (0, common_1.toPathString)(localVarUrlObj),
2261
+ options: localVarRequestOptions,
2262
+ };
2263
+ }),
2264
+ /**
2265
+ * Paginated list of the player\'s known-legitimate-associate exemptions. The list reflects rows where this player is the source side (player_id = this); since exemptions are stored symmetrically the reciprocal rows exist too.
2266
+ * @summary List a player\'s alt exemptions
2267
+ * @param {string} uuid Player Minecraft UUID
2268
+ * @param {Pageable} pageable
2269
+ * @param {*} [options] Override http request option.
2270
+ * @throws {RequiredError}
2271
+ */
2272
+ listAltExemptions: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2273
+ // verify required parameter 'uuid' is not null or undefined
2274
+ (0, common_1.assertParamExists)('listAltExemptions', 'uuid', uuid);
2275
+ // verify required parameter 'pageable' is not null or undefined
2276
+ (0, common_1.assertParamExists)('listAltExemptions', 'pageable', pageable);
2277
+ const localVarPath = `/admin/player/{uuid}/alt-exemption`
2278
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2279
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2280
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2281
+ let baseOptions;
2282
+ if (configuration) {
2283
+ baseOptions = configuration.baseOptions;
2284
+ }
2285
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2286
+ const localVarHeaderParameter = {};
2287
+ const localVarQueryParameter = {};
2288
+ // authentication DiscordAuth required
2289
+ // http bearer authentication required
2290
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2291
+ if (pageable !== undefined) {
2292
+ localVarQueryParameter['pageable'] = pageable;
2293
+ }
2294
+ localVarHeaderParameter['Accept'] = 'application/json';
2295
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2296
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2297
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2298
+ return {
2299
+ url: (0, common_1.toPathString)(localVarUrlObj),
2300
+ options: localVarRequestOptions,
2301
+ };
2302
+ }),
2303
+ /**
2304
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2305
+ * @summary List staff notes on a player
2306
+ * @param {string} uuid Player Minecraft UUID
2307
+ * @param {Pageable} pageable
2308
+ * @param {*} [options] Override http request option.
2309
+ * @throws {RequiredError}
2310
+ */
2311
+ listPlayerNotes: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2312
+ // verify required parameter 'uuid' is not null or undefined
2313
+ (0, common_1.assertParamExists)('listPlayerNotes', 'uuid', uuid);
2314
+ // verify required parameter 'pageable' is not null or undefined
2315
+ (0, common_1.assertParamExists)('listPlayerNotes', 'pageable', pageable);
2316
+ const localVarPath = `/admin/player/{uuid}/notes`
2317
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2318
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2319
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2320
+ let baseOptions;
2321
+ if (configuration) {
2322
+ baseOptions = configuration.baseOptions;
2323
+ }
2324
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2325
+ const localVarHeaderParameter = {};
2326
+ const localVarQueryParameter = {};
2327
+ // authentication DiscordAuth required
2328
+ // http bearer authentication required
2329
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2330
+ if (pageable !== undefined) {
2331
+ localVarQueryParameter['pageable'] = pageable;
2332
+ }
2333
+ localVarHeaderParameter['Accept'] = 'application/json';
2334
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2335
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2336
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2337
+ return {
2338
+ url: (0, common_1.toPathString)(localVarUrlObj),
2339
+ options: localVarRequestOptions,
2340
+ };
2341
+ }),
2342
+ /**
2343
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2344
+ * @summary List players
2345
+ * @param {Pageable} pageable
2346
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2347
+ * @param {*} [options] Override http request option.
2348
+ * @throws {RequiredError}
2349
+ */
2350
+ listPlayers: (pageable_1, search_1, ...args_1) => __awaiter(this, [pageable_1, search_1, ...args_1], void 0, function* (pageable, search, options = {}) {
2351
+ // verify required parameter 'pageable' is not null or undefined
2352
+ (0, common_1.assertParamExists)('listPlayers', 'pageable', pageable);
2353
+ const localVarPath = `/admin/player`;
2354
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2355
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2356
+ let baseOptions;
2357
+ if (configuration) {
2358
+ baseOptions = configuration.baseOptions;
2359
+ }
2360
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2361
+ const localVarHeaderParameter = {};
2362
+ const localVarQueryParameter = {};
2363
+ // authentication DiscordAuth required
2364
+ // http bearer authentication required
2365
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2366
+ if (search !== undefined) {
2367
+ localVarQueryParameter['search'] = search;
2368
+ }
2369
+ if (pageable !== undefined) {
2370
+ localVarQueryParameter['pageable'] = pageable;
2371
+ }
2372
+ localVarHeaderParameter['Accept'] = 'application/json';
2373
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2374
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2375
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2376
+ return {
2377
+ url: (0, common_1.toPathString)(localVarUrlObj),
2378
+ options: localVarRequestOptions,
2379
+ };
2380
+ }),
2381
+ /**
2382
+ * Paginated history of player_session rows (active + closed), newest first. Each row records one visit by this player to one game server. Used by the admin player detail view and as the underlying data for the session-stats aggregate.
2383
+ * @summary List a player\'s session history
2384
+ * @param {string} uuid Player Minecraft UUID
2385
+ * @param {Pageable} pageable
2386
+ * @param {*} [options] Override http request option.
2387
+ * @throws {RequiredError}
2388
+ */
2389
+ listSessions: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2390
+ // verify required parameter 'uuid' is not null or undefined
2391
+ (0, common_1.assertParamExists)('listSessions', 'uuid', uuid);
2392
+ // verify required parameter 'pageable' is not null or undefined
2393
+ (0, common_1.assertParamExists)('listSessions', 'pageable', pageable);
2394
+ const localVarPath = `/admin/player/{uuid}/sessions`
2395
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2396
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2397
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2398
+ let baseOptions;
2399
+ if (configuration) {
2400
+ baseOptions = configuration.baseOptions;
2401
+ }
2402
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2403
+ const localVarHeaderParameter = {};
2404
+ const localVarQueryParameter = {};
2405
+ // authentication DiscordAuth required
2406
+ // http bearer authentication required
2407
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2408
+ if (pageable !== undefined) {
2409
+ localVarQueryParameter['pageable'] = pageable;
2410
+ }
2411
+ localVarHeaderParameter['Accept'] = 'application/json';
2412
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2413
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2414
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2415
+ return {
2416
+ url: (0, common_1.toPathString)(localVarUrlObj),
2417
+ options: localVarRequestOptions,
2418
+ };
2419
+ }),
2420
+ /**
2421
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2422
+ * @summary Remove an alt exemption
2423
+ * @param {string} uuid Player Minecraft UUID
2424
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2425
+ * @param {*} [options] Override http request option.
2426
+ * @throws {RequiredError}
2427
+ */
2428
+ removeAltExemption: (uuid_1, altPlayerUuid_1, ...args_1) => __awaiter(this, [uuid_1, altPlayerUuid_1, ...args_1], void 0, function* (uuid, altPlayerUuid, options = {}) {
2429
+ // verify required parameter 'uuid' is not null or undefined
2430
+ (0, common_1.assertParamExists)('removeAltExemption', 'uuid', uuid);
2431
+ // verify required parameter 'altPlayerUuid' is not null or undefined
2432
+ (0, common_1.assertParamExists)('removeAltExemption', 'altPlayerUuid', altPlayerUuid);
2433
+ const localVarPath = `/admin/player/{uuid}/alt-exemption/{altPlayerUuid}`
2434
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)))
2435
+ .replace(`{${"altPlayerUuid"}}`, encodeURIComponent(String(altPlayerUuid)));
2436
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2437
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2438
+ let baseOptions;
2439
+ if (configuration) {
2440
+ baseOptions = configuration.baseOptions;
2441
+ }
2442
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
2443
+ const localVarHeaderParameter = {};
2444
+ const localVarQueryParameter = {};
2445
+ // authentication DiscordAuth required
2446
+ // http bearer authentication required
2447
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2448
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2449
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2450
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2451
+ return {
2452
+ url: (0, common_1.toPathString)(localVarUrlObj),
2453
+ options: localVarRequestOptions,
2454
+ };
2455
+ }),
2456
+ /**
2457
+ * Soft-deletes a single player_punishment row that was inserted by aggressive-mode propagation. The source punishment record is untouched — only the link between this player and that punishment is removed from enforcement. Rejected with 404 if the row is DIRECT (the original punishment record) or already revoked.
2458
+ * @summary Revoke a propagated punishment link
2459
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2460
+ * @param {number} playerPunishmentId player_punishment row id
2461
+ * @param {*} [options] Override http request option.
2462
+ * @throws {RequiredError}
2463
+ */
2464
+ revokePropagatedLink: (uuid_1, playerPunishmentId_1, ...args_1) => __awaiter(this, [uuid_1, playerPunishmentId_1, ...args_1], void 0, function* (uuid, playerPunishmentId, options = {}) {
2465
+ // verify required parameter 'uuid' is not null or undefined
2466
+ (0, common_1.assertParamExists)('revokePropagatedLink', 'uuid', uuid);
2467
+ // verify required parameter 'playerPunishmentId' is not null or undefined
2468
+ (0, common_1.assertParamExists)('revokePropagatedLink', 'playerPunishmentId', playerPunishmentId);
2469
+ const localVarPath = `/admin/player/{uuid}/player-punishment/{playerPunishmentId}`
2470
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)))
2471
+ .replace(`{${"playerPunishmentId"}}`, encodeURIComponent(String(playerPunishmentId)));
2472
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2473
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2474
+ let baseOptions;
2475
+ if (configuration) {
2476
+ baseOptions = configuration.baseOptions;
2477
+ }
2478
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
2479
+ const localVarHeaderParameter = {};
2480
+ const localVarQueryParameter = {};
2481
+ // authentication DiscordAuth required
2482
+ // http bearer authentication required
2483
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2484
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2485
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2486
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2487
+ return {
2488
+ url: (0, common_1.toPathString)(localVarUrlObj),
2489
+ options: localVarRequestOptions,
2490
+ };
2491
+ }),
2492
+ /**
2493
+ * Sets whether a player is exempt from aggressive-mode propagation. Flipping the flag ON also bulk-revokes every currently active PROPAGATED link for the player in the same transaction, so the player\'s enforcement state immediately reflects the cleared status. Flipping back to OFF re-enables propagation but does NOT un-revoke previously-revoked links.
2494
+ * @summary Toggle aggressive-mode immunity
2495
+ * @param {string} uuid Player Minecraft UUID
2496
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2497
+ * @param {*} [options] Override http request option.
2498
+ * @throws {RequiredError}
2499
+ */
2500
+ setAggressiveModeImmunity: (uuid_1, adminSetAggressiveModeImmunityRequest_1, ...args_1) => __awaiter(this, [uuid_1, adminSetAggressiveModeImmunityRequest_1, ...args_1], void 0, function* (uuid, adminSetAggressiveModeImmunityRequest, options = {}) {
2501
+ // verify required parameter 'uuid' is not null or undefined
2502
+ (0, common_1.assertParamExists)('setAggressiveModeImmunity', 'uuid', uuid);
2503
+ // verify required parameter 'adminSetAggressiveModeImmunityRequest' is not null or undefined
2504
+ (0, common_1.assertParamExists)('setAggressiveModeImmunity', 'adminSetAggressiveModeImmunityRequest', adminSetAggressiveModeImmunityRequest);
2505
+ const localVarPath = `/admin/player/{uuid}/aggressive-mode-immunity`
2506
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2507
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2508
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2509
+ let baseOptions;
2510
+ if (configuration) {
2511
+ baseOptions = configuration.baseOptions;
2512
+ }
2513
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'PATCH' }, baseOptions), options);
2514
+ const localVarHeaderParameter = {};
2515
+ const localVarQueryParameter = {};
2516
+ // authentication DiscordAuth required
2517
+ // http bearer authentication required
2518
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2519
+ localVarHeaderParameter['Content-Type'] = 'application/json';
2520
+ localVarHeaderParameter['Accept'] = 'application/json';
2521
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2522
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2523
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2524
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminSetAggressiveModeImmunityRequest, localVarRequestOptions, configuration);
2525
+ return {
2526
+ url: (0, common_1.toPathString)(localVarUrlObj),
2527
+ options: localVarRequestOptions,
2528
+ };
2529
+ }),
2530
+ /**
2531
+ * Returns every subtotal (bonuses / penalties) and the underlying signal counts that fed compute_trust_factor for this player. The {@code finalScore} matches what GET /admin/player/{uuid} returns; this endpoint adds the per-component detail. Used by the admin UI \"why is this score what it is?\" tooltip. Informational only — trust factor never auto-escalates punishments.
2532
+ * @summary Trust factor breakdown for a player
2533
+ * @param {string} uuid Player Minecraft UUID
2534
+ * @param {*} [options] Override http request option.
2535
+ * @throws {RequiredError}
2536
+ */
2537
+ trustFactorBreakdown: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
2538
+ // verify required parameter 'uuid' is not null or undefined
2539
+ (0, common_1.assertParamExists)('trustFactorBreakdown', 'uuid', uuid);
2540
+ const localVarPath = `/admin/player/{uuid}/trust-factor-breakdown`
2541
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2542
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2543
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2544
+ let baseOptions;
2545
+ if (configuration) {
2546
+ baseOptions = configuration.baseOptions;
2547
+ }
2548
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2549
+ const localVarHeaderParameter = {};
2550
+ const localVarQueryParameter = {};
2551
+ // authentication DiscordAuth required
2552
+ // http bearer authentication required
2553
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2554
+ localVarHeaderParameter['Accept'] = 'application/json';
2555
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2556
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2557
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2558
+ return {
2559
+ url: (0, common_1.toPathString)(localVarUrlObj),
2560
+ options: localVarRequestOptions,
2561
+ };
2562
+ }),
2563
+ /**
2564
+ * Returns one snapshot per day (oldest first) over the requested window. Useful for trend visualization. The daily snapshot job runs at 03:00 UTC; days with no row indicate the snapshot job didn\'t run that day (e.g., outage).
2565
+ * @summary Trust factor history for a player
2566
+ * @param {string} uuid Player Minecraft UUID
2567
+ * @param {number} [days] Window in days (default 30, max 365)
2568
+ * @param {*} [options] Override http request option.
2569
+ * @throws {RequiredError}
2570
+ */
2571
+ trustFactorHistory: (uuid_1, days_1, ...args_1) => __awaiter(this, [uuid_1, days_1, ...args_1], void 0, function* (uuid, days, options = {}) {
2572
+ // verify required parameter 'uuid' is not null or undefined
2573
+ (0, common_1.assertParamExists)('trustFactorHistory', 'uuid', uuid);
2574
+ const localVarPath = `/admin/player/{uuid}/trust-factor-history`
2575
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2576
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2577
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
2578
+ let baseOptions;
2579
+ if (configuration) {
2580
+ baseOptions = configuration.baseOptions;
2581
+ }
2582
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2583
+ const localVarHeaderParameter = {};
2584
+ const localVarQueryParameter = {};
2585
+ // authentication DiscordAuth required
2586
+ // http bearer authentication required
2587
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
2588
+ if (days !== undefined) {
2589
+ localVarQueryParameter['days'] = days;
2590
+ }
2591
+ localVarHeaderParameter['Accept'] = 'application/json';
2592
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
2593
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2594
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2595
+ return {
2596
+ url: (0, common_1.toPathString)(localVarUrlObj),
2597
+ options: localVarRequestOptions,
2598
+ };
2599
+ }),
2600
+ };
2601
+ };
2602
+ exports.AdminPlayersApiAxiosParamCreator = AdminPlayersApiAxiosParamCreator;
2603
+ /**
2604
+ * AdminPlayersApi - functional programming interface
2605
+ */
2606
+ const AdminPlayersApiFp = function (configuration) {
2607
+ const localVarAxiosParamCreator = (0, exports.AdminPlayersApiAxiosParamCreator)(configuration);
2608
+ return {
2609
+ /**
2610
+ * Mark another player as a known-legitimate associate (e.g. roommate). The relationship is stored symmetrically: subsequent aggressive-mode propagation skips this pair as an alt source in either direction. Finer-grained than the per-player aggressive_mode_immunity flag.
2611
+ * @summary Add an alt exemption
2612
+ * @param {string} uuid Player Minecraft UUID
2613
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2614
+ * @param {*} [options] Override http request option.
2615
+ * @throws {RequiredError}
2616
+ */
2617
+ addAltExemption(uuid, adminCreateAltExemptionRequest, options) {
2618
+ return __awaiter(this, void 0, void 0, function* () {
2619
+ var _a, _b, _c;
2620
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.addAltExemption(uuid, adminCreateAltExemptionRequest, options);
2621
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2622
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.addAltExemption']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2623
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2624
+ });
2625
+ },
2626
+ /**
2627
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
2628
+ * @summary Start a username backfill job
2629
+ * @param {*} [options] Override http request option.
2630
+ * @throws {RequiredError}
2631
+ */
2632
+ backfillUsernames(options) {
2633
+ return __awaiter(this, void 0, void 0, function* () {
2634
+ var _a, _b, _c;
2635
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.backfillUsernames(options);
2636
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2637
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.backfillUsernames']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2638
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2639
+ });
2640
+ },
2641
+ /**
2642
+ * Soft-revokes every currently active PROPAGATED player_punishment row whose source matches the supplied id. Exactly one of sourcePlayerId / sourceConnectionId must be set. Useful when staff identify a single source as a false positive (e.g. shared NAT, legitimate roommate) and want to undo every link it caused in one operation.
2643
+ * @summary Bulk-revoke PROPAGATED links by source
2644
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2645
+ * @param {*} [options] Override http request option.
2646
+ * @throws {RequiredError}
2647
+ */
2648
+ bulkRevokePropagated(adminBulkRevokeRequest, options) {
2649
+ return __awaiter(this, void 0, void 0, function* () {
2650
+ var _a, _b, _c;
2651
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.bulkRevokePropagated(adminBulkRevokeRequest, options);
2652
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2653
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.bulkRevokePropagated']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2654
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2655
+ });
2656
+ },
2657
+ /**
2658
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2659
+ * @summary Create a staff note on a player
2660
+ * @param {string} uuid Player Minecraft UUID
2661
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2662
+ * @param {*} [options] Override http request option.
2663
+ * @throws {RequiredError}
2664
+ */
2665
+ createPlayerNote(uuid, adminCreatePlayerNoteRequest, options) {
2666
+ return __awaiter(this, void 0, void 0, function* () {
2667
+ var _a, _b, _c;
2668
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.createPlayerNote(uuid, adminCreatePlayerNoteRequest, options);
2669
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2670
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.createPlayerNote']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2671
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2672
+ });
2673
+ },
2674
+ /**
2675
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2676
+ * @summary Soft-delete a staff note
2677
+ * @param {string} uuid Player Minecraft UUID (routing only)
2678
+ * @param {number} noteId Note id
2679
+ * @param {*} [options] Override http request option.
2680
+ * @throws {RequiredError}
2681
+ */
2682
+ deletePlayerNote(uuid, noteId, options) {
2683
+ return __awaiter(this, void 0, void 0, function* () {
2684
+ var _a, _b, _c;
2685
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.deletePlayerNote(uuid, noteId, options);
2686
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2687
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.deletePlayerNote']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2688
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2689
+ });
2690
+ },
2691
+ /**
2692
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
2693
+ * @summary Alt-graph traversal rooted at a player
2694
+ * @param {string} uuid Player Minecraft UUID
2695
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
2696
+ * @param {*} [options] Override http request option.
2697
+ * @throws {RequiredError}
2698
+ */
2699
+ getAltGraph(uuid, depth, options) {
2700
+ return __awaiter(this, void 0, void 0, function* () {
2701
+ var _a, _b, _c;
2702
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getAltGraph(uuid, depth, options);
2703
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2704
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getAltGraph']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2705
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2706
+ });
2707
+ },
2708
+ /**
2709
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2710
+ * @summary Get player detail
2711
+ * @param {string} uuid Player Minecraft UUID
2712
+ * @param {*} [options] Override http request option.
2713
+ * @throws {RequiredError}
2714
+ */
2715
+ getPlayer(uuid, options) {
2716
+ return __awaiter(this, void 0, void 0, function* () {
2717
+ var _a, _b, _c;
2718
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayer(uuid, options);
2719
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2720
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getPlayer']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2721
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2722
+ });
2723
+ },
2724
+ /**
2725
+ * Other players who have been seen on at least one of this player\'s historical connections. Sorted by shared-connection count desc, then last seen desc.
2726
+ * @summary List a player\'s alt accounts
2727
+ * @param {string} uuid Player Minecraft UUID
2728
+ * @param {Pageable} pageable
2729
+ * @param {*} [options] Override http request option.
2730
+ * @throws {RequiredError}
2731
+ */
2732
+ getPlayerAlts(uuid, pageable, options) {
2733
+ return __awaiter(this, void 0, void 0, function* () {
2734
+ var _a, _b, _c;
2735
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayerAlts(uuid, pageable, options);
2736
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2737
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getPlayerAlts']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2738
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2739
+ });
2740
+ },
2741
+ /**
2742
+ * Paginated list of every connection this player has used (latest first). Same shape as the dashboard connection list, suitable for an infinite-scroll panel inside the player detail modal.
2743
+ * @summary List a player\'s connection history
2744
+ * @param {string} uuid Player Minecraft UUID
2745
+ * @param {Pageable} pageable
2746
+ * @param {*} [options] Override http request option.
2747
+ * @throws {RequiredError}
2748
+ */
2749
+ getPlayerConnections(uuid, pageable, options) {
2750
+ return __awaiter(this, void 0, void 0, function* () {
2751
+ var _a, _b, _c;
2752
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayerConnections(uuid, pageable, options);
2753
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2754
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getPlayerConnections']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2755
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2756
+ });
2757
+ },
2758
+ /**
2759
+ * Paginated list of every player_punishment row for this player — DIRECT and PROPAGATED, active and revoked. Includes the transfer_note explaining why each propagated link was inserted and the revocation audit trail. The admin UI uses this to render a punishment-history section inside the player detail modal.
2760
+ * @summary List a player\'s full punishment history
2761
+ * @param {string} uuid Player Minecraft UUID
2762
+ * @param {Pageable} pageable
2763
+ * @param {*} [options] Override http request option.
2764
+ * @throws {RequiredError}
2765
+ */
2766
+ getPlayerPunishments(uuid, pageable, options) {
2767
+ return __awaiter(this, void 0, void 0, function* () {
2768
+ var _a, _b, _c;
2769
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayerPunishments(uuid, pageable, options);
2770
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2771
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getPlayerPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2772
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2773
+ });
2774
+ },
2775
+ /**
2776
+ * Single-row summary: total seconds played, session count, distinct days active, most recent session start, and whether the player is currently online. Computed on demand from player_session. Feeds the trust factor system.
2777
+ * @summary Get a player\'s aggregate session stats
2778
+ * @param {string} uuid Player Minecraft UUID
2779
+ * @param {*} [options] Override http request option.
2780
+ * @throws {RequiredError}
2781
+ */
2782
+ getSessionStats(uuid, options) {
2783
+ return __awaiter(this, void 0, void 0, function* () {
2784
+ var _a, _b, _c;
2785
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getSessionStats(uuid, options);
2786
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2787
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.getSessionStats']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2788
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2789
+ });
2790
+ },
2791
+ /**
2792
+ * Paginated list of the player\'s known-legitimate-associate exemptions. The list reflects rows where this player is the source side (player_id = this); since exemptions are stored symmetrically the reciprocal rows exist too.
2793
+ * @summary List a player\'s alt exemptions
2794
+ * @param {string} uuid Player Minecraft UUID
2795
+ * @param {Pageable} pageable
2796
+ * @param {*} [options] Override http request option.
2797
+ * @throws {RequiredError}
2798
+ */
2799
+ listAltExemptions(uuid, pageable, options) {
2800
+ return __awaiter(this, void 0, void 0, function* () {
2801
+ var _a, _b, _c;
2802
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listAltExemptions(uuid, pageable, options);
2803
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2804
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.listAltExemptions']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2805
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2806
+ });
2807
+ },
2808
+ /**
2809
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2810
+ * @summary List staff notes on a player
2811
+ * @param {string} uuid Player Minecraft UUID
2812
+ * @param {Pageable} pageable
2813
+ * @param {*} [options] Override http request option.
2814
+ * @throws {RequiredError}
2815
+ */
2816
+ listPlayerNotes(uuid, pageable, options) {
2817
+ return __awaiter(this, void 0, void 0, function* () {
2818
+ var _a, _b, _c;
2819
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listPlayerNotes(uuid, pageable, options);
2820
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2821
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.listPlayerNotes']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2822
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2823
+ });
2824
+ },
2825
+ /**
2826
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2827
+ * @summary List players
2828
+ * @param {Pageable} pageable
2829
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2830
+ * @param {*} [options] Override http request option.
2831
+ * @throws {RequiredError}
2832
+ */
2833
+ listPlayers(pageable, search, options) {
2834
+ return __awaiter(this, void 0, void 0, function* () {
2835
+ var _a, _b, _c;
2836
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listPlayers(pageable, search, options);
2837
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2838
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.listPlayers']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2839
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2840
+ });
2841
+ },
2842
+ /**
2843
+ * Paginated history of player_session rows (active + closed), newest first. Each row records one visit by this player to one game server. Used by the admin player detail view and as the underlying data for the session-stats aggregate.
2844
+ * @summary List a player\'s session history
2845
+ * @param {string} uuid Player Minecraft UUID
2846
+ * @param {Pageable} pageable
2847
+ * @param {*} [options] Override http request option.
2848
+ * @throws {RequiredError}
2849
+ */
2850
+ listSessions(uuid, pageable, options) {
2851
+ return __awaiter(this, void 0, void 0, function* () {
2852
+ var _a, _b, _c;
2853
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listSessions(uuid, pageable, options);
2854
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2855
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.listSessions']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2856
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2857
+ });
2858
+ },
2859
+ /**
2860
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2861
+ * @summary Remove an alt exemption
2862
+ * @param {string} uuid Player Minecraft UUID
2863
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2864
+ * @param {*} [options] Override http request option.
2865
+ * @throws {RequiredError}
2866
+ */
2867
+ removeAltExemption(uuid, altPlayerUuid, options) {
2868
+ return __awaiter(this, void 0, void 0, function* () {
2869
+ var _a, _b, _c;
2870
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.removeAltExemption(uuid, altPlayerUuid, options);
2871
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2872
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.removeAltExemption']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2873
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2874
+ });
2875
+ },
2876
+ /**
2877
+ * Soft-deletes a single player_punishment row that was inserted by aggressive-mode propagation. The source punishment record is untouched — only the link between this player and that punishment is removed from enforcement. Rejected with 404 if the row is DIRECT (the original punishment record) or already revoked.
2878
+ * @summary Revoke a propagated punishment link
2879
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2880
+ * @param {number} playerPunishmentId player_punishment row id
2881
+ * @param {*} [options] Override http request option.
2882
+ * @throws {RequiredError}
2883
+ */
2884
+ revokePropagatedLink(uuid, playerPunishmentId, options) {
2885
+ return __awaiter(this, void 0, void 0, function* () {
2886
+ var _a, _b, _c;
2887
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.revokePropagatedLink(uuid, playerPunishmentId, options);
2888
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2889
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.revokePropagatedLink']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2890
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2891
+ });
2892
+ },
2893
+ /**
2894
+ * Sets whether a player is exempt from aggressive-mode propagation. Flipping the flag ON also bulk-revokes every currently active PROPAGATED link for the player in the same transaction, so the player\'s enforcement state immediately reflects the cleared status. Flipping back to OFF re-enables propagation but does NOT un-revoke previously-revoked links.
2895
+ * @summary Toggle aggressive-mode immunity
2896
+ * @param {string} uuid Player Minecraft UUID
2897
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2898
+ * @param {*} [options] Override http request option.
2899
+ * @throws {RequiredError}
2900
+ */
2901
+ setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options) {
2902
+ return __awaiter(this, void 0, void 0, function* () {
2903
+ var _a, _b, _c;
2904
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options);
2905
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2906
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.setAggressiveModeImmunity']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2907
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2908
+ });
2909
+ },
2910
+ /**
2911
+ * Returns every subtotal (bonuses / penalties) and the underlying signal counts that fed compute_trust_factor for this player. The {@code finalScore} matches what GET /admin/player/{uuid} returns; this endpoint adds the per-component detail. Used by the admin UI \"why is this score what it is?\" tooltip. Informational only — trust factor never auto-escalates punishments.
2912
+ * @summary Trust factor breakdown for a player
2913
+ * @param {string} uuid Player Minecraft UUID
2914
+ * @param {*} [options] Override http request option.
2915
+ * @throws {RequiredError}
2916
+ */
2917
+ trustFactorBreakdown(uuid, options) {
2918
+ return __awaiter(this, void 0, void 0, function* () {
2919
+ var _a, _b, _c;
2920
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.trustFactorBreakdown(uuid, options);
2921
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2922
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.trustFactorBreakdown']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2923
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2924
+ });
2925
+ },
2926
+ /**
2927
+ * Returns one snapshot per day (oldest first) over the requested window. Useful for trend visualization. The daily snapshot job runs at 03:00 UTC; days with no row indicate the snapshot job didn\'t run that day (e.g., outage).
2928
+ * @summary Trust factor history for a player
2929
+ * @param {string} uuid Player Minecraft UUID
2930
+ * @param {number} [days] Window in days (default 30, max 365)
2931
+ * @param {*} [options] Override http request option.
2932
+ * @throws {RequiredError}
2933
+ */
2934
+ trustFactorHistory(uuid, days, options) {
2935
+ return __awaiter(this, void 0, void 0, function* () {
2936
+ var _a, _b, _c;
2937
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.trustFactorHistory(uuid, days, options);
2938
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2939
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPlayersApi.trustFactorHistory']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2940
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2941
+ });
2942
+ },
2943
+ };
2944
+ };
2945
+ exports.AdminPlayersApiFp = AdminPlayersApiFp;
2946
+ /**
2947
+ * AdminPlayersApi - factory interface
2948
+ */
2949
+ const AdminPlayersApiFactory = function (configuration, basePath, axios) {
2950
+ const localVarFp = (0, exports.AdminPlayersApiFp)(configuration);
2951
+ return {
2952
+ /**
2953
+ * Mark another player as a known-legitimate associate (e.g. roommate). The relationship is stored symmetrically: subsequent aggressive-mode propagation skips this pair as an alt source in either direction. Finer-grained than the per-player aggressive_mode_immunity flag.
2954
+ * @summary Add an alt exemption
2955
+ * @param {string} uuid Player Minecraft UUID
2956
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2957
+ * @param {*} [options] Override http request option.
2958
+ * @throws {RequiredError}
2959
+ */
2960
+ addAltExemption(uuid, adminCreateAltExemptionRequest, options) {
2961
+ return localVarFp.addAltExemption(uuid, adminCreateAltExemptionRequest, options).then((request) => request(axios, basePath));
2962
+ },
2963
+ /**
2964
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
2965
+ * @summary Start a username backfill job
2966
+ * @param {*} [options] Override http request option.
2967
+ * @throws {RequiredError}
2968
+ */
2969
+ backfillUsernames(options) {
2970
+ return localVarFp.backfillUsernames(options).then((request) => request(axios, basePath));
2971
+ },
2972
+ /**
2973
+ * Soft-revokes every currently active PROPAGATED player_punishment row whose source matches the supplied id. Exactly one of sourcePlayerId / sourceConnectionId must be set. Useful when staff identify a single source as a false positive (e.g. shared NAT, legitimate roommate) and want to undo every link it caused in one operation.
2974
+ * @summary Bulk-revoke PROPAGATED links by source
2975
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2976
+ * @param {*} [options] Override http request option.
2977
+ * @throws {RequiredError}
2978
+ */
2979
+ bulkRevokePropagated(adminBulkRevokeRequest, options) {
2980
+ return localVarFp.bulkRevokePropagated(adminBulkRevokeRequest, options).then((request) => request(axios, basePath));
2981
+ },
2982
+ /**
2983
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2984
+ * @summary Create a staff note on a player
2985
+ * @param {string} uuid Player Minecraft UUID
2986
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2987
+ * @param {*} [options] Override http request option.
2988
+ * @throws {RequiredError}
2989
+ */
2990
+ createPlayerNote(uuid, adminCreatePlayerNoteRequest, options) {
2991
+ return localVarFp.createPlayerNote(uuid, adminCreatePlayerNoteRequest, options).then((request) => request(axios, basePath));
2992
+ },
2993
+ /**
2994
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2995
+ * @summary Soft-delete a staff note
2996
+ * @param {string} uuid Player Minecraft UUID (routing only)
2997
+ * @param {number} noteId Note id
2998
+ * @param {*} [options] Override http request option.
2999
+ * @throws {RequiredError}
3000
+ */
3001
+ deletePlayerNote(uuid, noteId, options) {
3002
+ return localVarFp.deletePlayerNote(uuid, noteId, options).then((request) => request(axios, basePath));
3003
+ },
3004
+ /**
3005
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
3006
+ * @summary Alt-graph traversal rooted at a player
3007
+ * @param {string} uuid Player Minecraft UUID
3008
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
3009
+ * @param {*} [options] Override http request option.
3010
+ * @throws {RequiredError}
3011
+ */
3012
+ getAltGraph(uuid, depth, options) {
3013
+ return localVarFp.getAltGraph(uuid, depth, options).then((request) => request(axios, basePath));
3014
+ },
3015
+ /**
3016
+ * Returns full detail for a single player including all known usernames and punishment scoring.
3017
+ * @summary Get player detail
3018
+ * @param {string} uuid Player Minecraft UUID
3019
+ * @param {*} [options] Override http request option.
3020
+ * @throws {RequiredError}
3021
+ */
3022
+ getPlayer(uuid, options) {
3023
+ return localVarFp.getPlayer(uuid, options).then((request) => request(axios, basePath));
3024
+ },
3025
+ /**
3026
+ * Other players who have been seen on at least one of this player\'s historical connections. Sorted by shared-connection count desc, then last seen desc.
3027
+ * @summary List a player\'s alt accounts
3028
+ * @param {string} uuid Player Minecraft UUID
3029
+ * @param {Pageable} pageable
3030
+ * @param {*} [options] Override http request option.
3031
+ * @throws {RequiredError}
3032
+ */
3033
+ getPlayerAlts(uuid, pageable, options) {
3034
+ return localVarFp.getPlayerAlts(uuid, pageable, options).then((request) => request(axios, basePath));
3035
+ },
3036
+ /**
3037
+ * Paginated list of every connection this player has used (latest first). Same shape as the dashboard connection list, suitable for an infinite-scroll panel inside the player detail modal.
3038
+ * @summary List a player\'s connection history
3039
+ * @param {string} uuid Player Minecraft UUID
3040
+ * @param {Pageable} pageable
3041
+ * @param {*} [options] Override http request option.
3042
+ * @throws {RequiredError}
3043
+ */
3044
+ getPlayerConnections(uuid, pageable, options) {
3045
+ return localVarFp.getPlayerConnections(uuid, pageable, options).then((request) => request(axios, basePath));
3046
+ },
3047
+ /**
3048
+ * Paginated list of every player_punishment row for this player — DIRECT and PROPAGATED, active and revoked. Includes the transfer_note explaining why each propagated link was inserted and the revocation audit trail. The admin UI uses this to render a punishment-history section inside the player detail modal.
3049
+ * @summary List a player\'s full punishment history
3050
+ * @param {string} uuid Player Minecraft UUID
3051
+ * @param {Pageable} pageable
3052
+ * @param {*} [options] Override http request option.
3053
+ * @throws {RequiredError}
3054
+ */
3055
+ getPlayerPunishments(uuid, pageable, options) {
3056
+ return localVarFp.getPlayerPunishments(uuid, pageable, options).then((request) => request(axios, basePath));
3057
+ },
3058
+ /**
3059
+ * Single-row summary: total seconds played, session count, distinct days active, most recent session start, and whether the player is currently online. Computed on demand from player_session. Feeds the trust factor system.
3060
+ * @summary Get a player\'s aggregate session stats
3061
+ * @param {string} uuid Player Minecraft UUID
3062
+ * @param {*} [options] Override http request option.
3063
+ * @throws {RequiredError}
3064
+ */
3065
+ getSessionStats(uuid, options) {
3066
+ return localVarFp.getSessionStats(uuid, options).then((request) => request(axios, basePath));
3067
+ },
3068
+ /**
3069
+ * Paginated list of the player\'s known-legitimate-associate exemptions. The list reflects rows where this player is the source side (player_id = this); since exemptions are stored symmetrically the reciprocal rows exist too.
3070
+ * @summary List a player\'s alt exemptions
3071
+ * @param {string} uuid Player Minecraft UUID
3072
+ * @param {Pageable} pageable
3073
+ * @param {*} [options] Override http request option.
3074
+ * @throws {RequiredError}
3075
+ */
3076
+ listAltExemptions(uuid, pageable, options) {
3077
+ return localVarFp.listAltExemptions(uuid, pageable, options).then((request) => request(axios, basePath));
3078
+ },
3079
+ /**
3080
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3081
+ * @summary List staff notes on a player
3082
+ * @param {string} uuid Player Minecraft UUID
3083
+ * @param {Pageable} pageable
3084
+ * @param {*} [options] Override http request option.
3085
+ * @throws {RequiredError}
3086
+ */
3087
+ listPlayerNotes(uuid, pageable, options) {
3088
+ return localVarFp.listPlayerNotes(uuid, pageable, options).then((request) => request(axios, basePath));
3089
+ },
3090
+ /**
3091
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3092
+ * @summary List players
3093
+ * @param {Pageable} pageable
3094
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3095
+ * @param {*} [options] Override http request option.
3096
+ * @throws {RequiredError}
3097
+ */
3098
+ listPlayers(pageable, search, options) {
3099
+ return localVarFp.listPlayers(pageable, search, options).then((request) => request(axios, basePath));
3100
+ },
3101
+ /**
3102
+ * Paginated history of player_session rows (active + closed), newest first. Each row records one visit by this player to one game server. Used by the admin player detail view and as the underlying data for the session-stats aggregate.
3103
+ * @summary List a player\'s session history
3104
+ * @param {string} uuid Player Minecraft UUID
3105
+ * @param {Pageable} pageable
3106
+ * @param {*} [options] Override http request option.
3107
+ * @throws {RequiredError}
3108
+ */
3109
+ listSessions(uuid, pageable, options) {
3110
+ return localVarFp.listSessions(uuid, pageable, options).then((request) => request(axios, basePath));
3111
+ },
3112
+ /**
3113
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3114
+ * @summary Remove an alt exemption
3115
+ * @param {string} uuid Player Minecraft UUID
3116
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3117
+ * @param {*} [options] Override http request option.
3118
+ * @throws {RequiredError}
3119
+ */
3120
+ removeAltExemption(uuid, altPlayerUuid, options) {
3121
+ return localVarFp.removeAltExemption(uuid, altPlayerUuid, options).then((request) => request(axios, basePath));
3122
+ },
3123
+ /**
3124
+ * Soft-deletes a single player_punishment row that was inserted by aggressive-mode propagation. The source punishment record is untouched — only the link between this player and that punishment is removed from enforcement. Rejected with 404 if the row is DIRECT (the original punishment record) or already revoked.
3125
+ * @summary Revoke a propagated punishment link
3126
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3127
+ * @param {number} playerPunishmentId player_punishment row id
3128
+ * @param {*} [options] Override http request option.
3129
+ * @throws {RequiredError}
3130
+ */
3131
+ revokePropagatedLink(uuid, playerPunishmentId, options) {
3132
+ return localVarFp.revokePropagatedLink(uuid, playerPunishmentId, options).then((request) => request(axios, basePath));
3133
+ },
3134
+ /**
3135
+ * Sets whether a player is exempt from aggressive-mode propagation. Flipping the flag ON also bulk-revokes every currently active PROPAGATED link for the player in the same transaction, so the player\'s enforcement state immediately reflects the cleared status. Flipping back to OFF re-enables propagation but does NOT un-revoke previously-revoked links.
3136
+ * @summary Toggle aggressive-mode immunity
3137
+ * @param {string} uuid Player Minecraft UUID
3138
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
3139
+ * @param {*} [options] Override http request option.
3140
+ * @throws {RequiredError}
3141
+ */
3142
+ setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options) {
3143
+ return localVarFp.setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options).then((request) => request(axios, basePath));
3144
+ },
3145
+ /**
3146
+ * Returns every subtotal (bonuses / penalties) and the underlying signal counts that fed compute_trust_factor for this player. The {@code finalScore} matches what GET /admin/player/{uuid} returns; this endpoint adds the per-component detail. Used by the admin UI \"why is this score what it is?\" tooltip. Informational only — trust factor never auto-escalates punishments.
3147
+ * @summary Trust factor breakdown for a player
3148
+ * @param {string} uuid Player Minecraft UUID
3149
+ * @param {*} [options] Override http request option.
3150
+ * @throws {RequiredError}
3151
+ */
3152
+ trustFactorBreakdown(uuid, options) {
3153
+ return localVarFp.trustFactorBreakdown(uuid, options).then((request) => request(axios, basePath));
3154
+ },
3155
+ /**
3156
+ * Returns one snapshot per day (oldest first) over the requested window. Useful for trend visualization. The daily snapshot job runs at 03:00 UTC; days with no row indicate the snapshot job didn\'t run that day (e.g., outage).
3157
+ * @summary Trust factor history for a player
3158
+ * @param {string} uuid Player Minecraft UUID
3159
+ * @param {number} [days] Window in days (default 30, max 365)
3160
+ * @param {*} [options] Override http request option.
3161
+ * @throws {RequiredError}
3162
+ */
3163
+ trustFactorHistory(uuid, days, options) {
3164
+ return localVarFp.trustFactorHistory(uuid, days, options).then((request) => request(axios, basePath));
3165
+ },
3166
+ };
3167
+ };
3168
+ exports.AdminPlayersApiFactory = AdminPlayersApiFactory;
3169
+ /**
3170
+ * AdminPlayersApi - object-oriented interface
3171
+ */
3172
+ class AdminPlayersApi extends base_1.BaseAPI {
3173
+ /**
3174
+ * Mark another player as a known-legitimate associate (e.g. roommate). The relationship is stored symmetrically: subsequent aggressive-mode propagation skips this pair as an alt source in either direction. Finer-grained than the per-player aggressive_mode_immunity flag.
3175
+ * @summary Add an alt exemption
3176
+ * @param {string} uuid Player Minecraft UUID
3177
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
3178
+ * @param {*} [options] Override http request option.
3179
+ * @throws {RequiredError}
3180
+ */
3181
+ addAltExemption(uuid, adminCreateAltExemptionRequest, options) {
3182
+ return (0, exports.AdminPlayersApiFp)(this.configuration).addAltExemption(uuid, adminCreateAltExemptionRequest, options).then((request) => request(this.axios, this.basePath));
3183
+ }
3184
+ /**
3185
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
3186
+ * @summary Start a username backfill job
3187
+ * @param {*} [options] Override http request option.
3188
+ * @throws {RequiredError}
3189
+ */
3190
+ backfillUsernames(options) {
3191
+ return (0, exports.AdminPlayersApiFp)(this.configuration).backfillUsernames(options).then((request) => request(this.axios, this.basePath));
3192
+ }
3193
+ /**
3194
+ * Soft-revokes every currently active PROPAGATED player_punishment row whose source matches the supplied id. Exactly one of sourcePlayerId / sourceConnectionId must be set. Useful when staff identify a single source as a false positive (e.g. shared NAT, legitimate roommate) and want to undo every link it caused in one operation.
3195
+ * @summary Bulk-revoke PROPAGATED links by source
3196
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
3197
+ * @param {*} [options] Override http request option.
3198
+ * @throws {RequiredError}
3199
+ */
3200
+ bulkRevokePropagated(adminBulkRevokeRequest, options) {
3201
+ return (0, exports.AdminPlayersApiFp)(this.configuration).bulkRevokePropagated(adminBulkRevokeRequest, options).then((request) => request(this.axios, this.basePath));
3202
+ }
3203
+ /**
3204
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
3205
+ * @summary Create a staff note on a player
3206
+ * @param {string} uuid Player Minecraft UUID
3207
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
3208
+ * @param {*} [options] Override http request option.
3209
+ * @throws {RequiredError}
3210
+ */
3211
+ createPlayerNote(uuid, adminCreatePlayerNoteRequest, options) {
3212
+ return (0, exports.AdminPlayersApiFp)(this.configuration).createPlayerNote(uuid, adminCreatePlayerNoteRequest, options).then((request) => request(this.axios, this.basePath));
3213
+ }
3214
+ /**
3215
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
3216
+ * @summary Soft-delete a staff note
3217
+ * @param {string} uuid Player Minecraft UUID (routing only)
3218
+ * @param {number} noteId Note id
3219
+ * @param {*} [options] Override http request option.
3220
+ * @throws {RequiredError}
3221
+ */
3222
+ deletePlayerNote(uuid, noteId, options) {
3223
+ return (0, exports.AdminPlayersApiFp)(this.configuration).deletePlayerNote(uuid, noteId, options).then((request) => request(this.axios, this.basePath));
3224
+ }
3225
+ /**
3226
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
3227
+ * @summary Alt-graph traversal rooted at a player
3228
+ * @param {string} uuid Player Minecraft UUID
3229
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
3230
+ * @param {*} [options] Override http request option.
3231
+ * @throws {RequiredError}
3232
+ */
3233
+ getAltGraph(uuid, depth, options) {
3234
+ return (0, exports.AdminPlayersApiFp)(this.configuration).getAltGraph(uuid, depth, options).then((request) => request(this.axios, this.basePath));
3235
+ }
3236
+ /**
3237
+ * Returns full detail for a single player including all known usernames and punishment scoring.
3238
+ * @summary Get player detail
3239
+ * @param {string} uuid Player Minecraft UUID
3240
+ * @param {*} [options] Override http request option.
3241
+ * @throws {RequiredError}
3242
+ */
3243
+ getPlayer(uuid, options) {
3244
+ return (0, exports.AdminPlayersApiFp)(this.configuration).getPlayer(uuid, options).then((request) => request(this.axios, this.basePath));
3245
+ }
3246
+ /**
3247
+ * Other players who have been seen on at least one of this player\'s historical connections. Sorted by shared-connection count desc, then last seen desc.
3248
+ * @summary List a player\'s alt accounts
3249
+ * @param {string} uuid Player Minecraft UUID
3250
+ * @param {Pageable} pageable
3251
+ * @param {*} [options] Override http request option.
3252
+ * @throws {RequiredError}
3253
+ */
3254
+ getPlayerAlts(uuid, pageable, options) {
3255
+ return (0, exports.AdminPlayersApiFp)(this.configuration).getPlayerAlts(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3256
+ }
3257
+ /**
3258
+ * Paginated list of every connection this player has used (latest first). Same shape as the dashboard connection list, suitable for an infinite-scroll panel inside the player detail modal.
3259
+ * @summary List a player\'s connection history
3260
+ * @param {string} uuid Player Minecraft UUID
3261
+ * @param {Pageable} pageable
3262
+ * @param {*} [options] Override http request option.
3263
+ * @throws {RequiredError}
3264
+ */
3265
+ getPlayerConnections(uuid, pageable, options) {
3266
+ return (0, exports.AdminPlayersApiFp)(this.configuration).getPlayerConnections(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3267
+ }
3268
+ /**
3269
+ * Paginated list of every player_punishment row for this player — DIRECT and PROPAGATED, active and revoked. Includes the transfer_note explaining why each propagated link was inserted and the revocation audit trail. The admin UI uses this to render a punishment-history section inside the player detail modal.
3270
+ * @summary List a player\'s full punishment history
3271
+ * @param {string} uuid Player Minecraft UUID
3272
+ * @param {Pageable} pageable
3273
+ * @param {*} [options] Override http request option.
3274
+ * @throws {RequiredError}
3275
+ */
3276
+ getPlayerPunishments(uuid, pageable, options) {
3277
+ return (0, exports.AdminPlayersApiFp)(this.configuration).getPlayerPunishments(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3278
+ }
3279
+ /**
3280
+ * Single-row summary: total seconds played, session count, distinct days active, most recent session start, and whether the player is currently online. Computed on demand from player_session. Feeds the trust factor system.
3281
+ * @summary Get a player\'s aggregate session stats
3282
+ * @param {string} uuid Player Minecraft UUID
3283
+ * @param {*} [options] Override http request option.
3284
+ * @throws {RequiredError}
3285
+ */
3286
+ getSessionStats(uuid, options) {
3287
+ return (0, exports.AdminPlayersApiFp)(this.configuration).getSessionStats(uuid, options).then((request) => request(this.axios, this.basePath));
3288
+ }
3289
+ /**
3290
+ * Paginated list of the player\'s known-legitimate-associate exemptions. The list reflects rows where this player is the source side (player_id = this); since exemptions are stored symmetrically the reciprocal rows exist too.
3291
+ * @summary List a player\'s alt exemptions
3292
+ * @param {string} uuid Player Minecraft UUID
3293
+ * @param {Pageable} pageable
3294
+ * @param {*} [options] Override http request option.
3295
+ * @throws {RequiredError}
3296
+ */
3297
+ listAltExemptions(uuid, pageable, options) {
3298
+ return (0, exports.AdminPlayersApiFp)(this.configuration).listAltExemptions(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3299
+ }
3300
+ /**
3301
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3302
+ * @summary List staff notes on a player
3303
+ * @param {string} uuid Player Minecraft UUID
3304
+ * @param {Pageable} pageable
3305
+ * @param {*} [options] Override http request option.
3306
+ * @throws {RequiredError}
3307
+ */
3308
+ listPlayerNotes(uuid, pageable, options) {
3309
+ return (0, exports.AdminPlayersApiFp)(this.configuration).listPlayerNotes(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3310
+ }
3311
+ /**
3312
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3313
+ * @summary List players
3314
+ * @param {Pageable} pageable
3315
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3316
+ * @param {*} [options] Override http request option.
3317
+ * @throws {RequiredError}
3318
+ */
3319
+ listPlayers(pageable, search, options) {
3320
+ return (0, exports.AdminPlayersApiFp)(this.configuration).listPlayers(pageable, search, options).then((request) => request(this.axios, this.basePath));
3321
+ }
3322
+ /**
3323
+ * Paginated history of player_session rows (active + closed), newest first. Each row records one visit by this player to one game server. Used by the admin player detail view and as the underlying data for the session-stats aggregate.
3324
+ * @summary List a player\'s session history
3325
+ * @param {string} uuid Player Minecraft UUID
3326
+ * @param {Pageable} pageable
3327
+ * @param {*} [options] Override http request option.
3328
+ * @throws {RequiredError}
3329
+ */
3330
+ listSessions(uuid, pageable, options) {
3331
+ return (0, exports.AdminPlayersApiFp)(this.configuration).listSessions(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3332
+ }
3333
+ /**
3334
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3335
+ * @summary Remove an alt exemption
3336
+ * @param {string} uuid Player Minecraft UUID
3337
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3338
+ * @param {*} [options] Override http request option.
3339
+ * @throws {RequiredError}
3340
+ */
3341
+ removeAltExemption(uuid, altPlayerUuid, options) {
3342
+ return (0, exports.AdminPlayersApiFp)(this.configuration).removeAltExemption(uuid, altPlayerUuid, options).then((request) => request(this.axios, this.basePath));
3343
+ }
3344
+ /**
3345
+ * Soft-deletes a single player_punishment row that was inserted by aggressive-mode propagation. The source punishment record is untouched — only the link between this player and that punishment is removed from enforcement. Rejected with 404 if the row is DIRECT (the original punishment record) or already revoked.
3346
+ * @summary Revoke a propagated punishment link
3347
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3348
+ * @param {number} playerPunishmentId player_punishment row id
3349
+ * @param {*} [options] Override http request option.
3350
+ * @throws {RequiredError}
3351
+ */
3352
+ revokePropagatedLink(uuid, playerPunishmentId, options) {
3353
+ return (0, exports.AdminPlayersApiFp)(this.configuration).revokePropagatedLink(uuid, playerPunishmentId, options).then((request) => request(this.axios, this.basePath));
3354
+ }
3355
+ /**
3356
+ * Sets whether a player is exempt from aggressive-mode propagation. Flipping the flag ON also bulk-revokes every currently active PROPAGATED link for the player in the same transaction, so the player\'s enforcement state immediately reflects the cleared status. Flipping back to OFF re-enables propagation but does NOT un-revoke previously-revoked links.
3357
+ * @summary Toggle aggressive-mode immunity
3358
+ * @param {string} uuid Player Minecraft UUID
3359
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
3360
+ * @param {*} [options] Override http request option.
3361
+ * @throws {RequiredError}
3362
+ */
3363
+ setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options) {
3364
+ return (0, exports.AdminPlayersApiFp)(this.configuration).setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options).then((request) => request(this.axios, this.basePath));
3365
+ }
3366
+ /**
3367
+ * Returns every subtotal (bonuses / penalties) and the underlying signal counts that fed compute_trust_factor for this player. The {@code finalScore} matches what GET /admin/player/{uuid} returns; this endpoint adds the per-component detail. Used by the admin UI \"why is this score what it is?\" tooltip. Informational only — trust factor never auto-escalates punishments.
3368
+ * @summary Trust factor breakdown for a player
3369
+ * @param {string} uuid Player Minecraft UUID
3370
+ * @param {*} [options] Override http request option.
3371
+ * @throws {RequiredError}
3372
+ */
3373
+ trustFactorBreakdown(uuid, options) {
3374
+ return (0, exports.AdminPlayersApiFp)(this.configuration).trustFactorBreakdown(uuid, options).then((request) => request(this.axios, this.basePath));
3375
+ }
3376
+ /**
3377
+ * Returns one snapshot per day (oldest first) over the requested window. Useful for trend visualization. The daily snapshot job runs at 03:00 UTC; days with no row indicate the snapshot job didn\'t run that day (e.g., outage).
3378
+ * @summary Trust factor history for a player
3379
+ * @param {string} uuid Player Minecraft UUID
3380
+ * @param {number} [days] Window in days (default 30, max 365)
3381
+ * @param {*} [options] Override http request option.
3382
+ * @throws {RequiredError}
3383
+ */
3384
+ trustFactorHistory(uuid, days, options) {
3385
+ return (0, exports.AdminPlayersApiFp)(this.configuration).trustFactorHistory(uuid, days, options).then((request) => request(this.axios, this.basePath));
3386
+ }
3387
+ }
3388
+ exports.AdminPlayersApi = AdminPlayersApi;
3389
+ /**
3390
+ * AdminPunishmentsApi - axios parameter creator
3391
+ */
3392
+ const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
3393
+ return {
3394
+ /**
3395
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3396
+ * @summary Apply punishment
3397
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3398
+ * @param {*} [options] Override http request option.
3399
+ * @throws {RequiredError}
3400
+ */
3401
+ applyPunishment: (adminApplyPunishmentRequest_1, ...args_1) => __awaiter(this, [adminApplyPunishmentRequest_1, ...args_1], void 0, function* (adminApplyPunishmentRequest, options = {}) {
3402
+ // verify required parameter 'adminApplyPunishmentRequest' is not null or undefined
3403
+ (0, common_1.assertParamExists)('applyPunishment', 'adminApplyPunishmentRequest', adminApplyPunishmentRequest);
3404
+ const localVarPath = `/admin/punishment/apply`;
3405
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3406
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3407
+ let baseOptions;
3408
+ if (configuration) {
3409
+ baseOptions = configuration.baseOptions;
3410
+ }
3411
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3412
+ const localVarHeaderParameter = {};
3413
+ const localVarQueryParameter = {};
3414
+ // authentication DiscordAuth required
3415
+ // http bearer authentication required
3416
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3417
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3418
+ localVarHeaderParameter['Accept'] = 'application/json';
3419
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3420
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3421
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3422
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminApplyPunishmentRequest, localVarRequestOptions, configuration);
3423
+ return {
3424
+ url: (0, common_1.toPathString)(localVarUrlObj),
3425
+ options: localVarRequestOptions,
3426
+ };
3427
+ }),
3428
+ /**
3429
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3430
+ * @summary Evaluate punishment impact
3431
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3432
+ * @param {*} [options] Override http request option.
3433
+ * @throws {RequiredError}
3434
+ */
3435
+ createDraft: (adminCreatePunishmentDraftRequest_1, ...args_1) => __awaiter(this, [adminCreatePunishmentDraftRequest_1, ...args_1], void 0, function* (adminCreatePunishmentDraftRequest, options = {}) {
3436
+ // verify required parameter 'adminCreatePunishmentDraftRequest' is not null or undefined
3437
+ (0, common_1.assertParamExists)('createDraft', 'adminCreatePunishmentDraftRequest', adminCreatePunishmentDraftRequest);
3438
+ const localVarPath = `/admin/punishment/draft`;
3439
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3440
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3441
+ let baseOptions;
3442
+ if (configuration) {
3443
+ baseOptions = configuration.baseOptions;
3444
+ }
3445
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3446
+ const localVarHeaderParameter = {};
3447
+ const localVarQueryParameter = {};
3448
+ // authentication DiscordAuth required
3449
+ // http bearer authentication required
3450
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3451
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3452
+ localVarHeaderParameter['Accept'] = 'application/json';
3453
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3454
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3455
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3456
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminCreatePunishmentDraftRequest, localVarRequestOptions, configuration);
3457
+ return {
3458
+ url: (0, common_1.toPathString)(localVarUrlObj),
3459
+ options: localVarRequestOptions,
3460
+ };
3461
+ }),
3462
+ /**
3463
+ * Partial update of a punishment record. Reason / notes / expiresAt are mutable; severity is intentionally immutable to keep the punishment score deterministic. To make a punishment permanent, set forcePermanent=true. The endpoint returns 404 if the id doesn\'t exist, 200 with the updated entity otherwise. Every edit is recorded in admin_audit_log with the before/after payload.
3464
+ * @summary Edit a punishment
3465
+ * @param {number} id Punishment id
3466
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3467
+ * @param {*} [options] Override http request option.
3468
+ * @throws {RequiredError}
3469
+ */
3470
+ editPunishment: (id_1, adminUpdatePunishmentRequest_1, ...args_1) => __awaiter(this, [id_1, adminUpdatePunishmentRequest_1, ...args_1], void 0, function* (id, adminUpdatePunishmentRequest, options = {}) {
3471
+ // verify required parameter 'id' is not null or undefined
3472
+ (0, common_1.assertParamExists)('editPunishment', 'id', id);
3473
+ // verify required parameter 'adminUpdatePunishmentRequest' is not null or undefined
3474
+ (0, common_1.assertParamExists)('editPunishment', 'adminUpdatePunishmentRequest', adminUpdatePunishmentRequest);
3475
+ const localVarPath = `/admin/punishment/{id}`
3476
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3477
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3478
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3479
+ let baseOptions;
3480
+ if (configuration) {
3481
+ baseOptions = configuration.baseOptions;
3482
+ }
3483
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'PATCH' }, baseOptions), options);
3484
+ const localVarHeaderParameter = {};
3485
+ const localVarQueryParameter = {};
3486
+ // authentication DiscordAuth required
3487
+ // http bearer authentication required
3488
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3489
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3490
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3491
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3492
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3493
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminUpdatePunishmentRequest, localVarRequestOptions, configuration);
3494
+ return {
3495
+ url: (0, common_1.toPathString)(localVarUrlObj),
3496
+ options: localVarRequestOptions,
3497
+ };
3498
+ }),
3499
+ /**
3500
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3501
+ * @summary List a punishment\'s current participants
3502
+ * @param {number} id Punishment id
3503
+ * @param {*} [options] Override http request option.
3504
+ * @throws {RequiredError}
3505
+ */
3506
+ getPunishmentTargets: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
3507
+ // verify required parameter 'id' is not null or undefined
3508
+ (0, common_1.assertParamExists)('getPunishmentTargets', 'id', id);
3509
+ const localVarPath = `/admin/punishment/{id}/targets`
3510
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3511
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3512
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3513
+ let baseOptions;
3514
+ if (configuration) {
3515
+ baseOptions = configuration.baseOptions;
3516
+ }
3517
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3518
+ const localVarHeaderParameter = {};
3519
+ const localVarQueryParameter = {};
3520
+ // authentication DiscordAuth required
3521
+ // http bearer authentication required
3522
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3523
+ localVarHeaderParameter['Accept'] = 'application/json';
3524
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3525
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3526
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3527
+ return {
3528
+ url: (0, common_1.toPathString)(localVarUrlObj),
3529
+ options: localVarRequestOptions,
3530
+ };
3531
+ }),
3532
+ /**
3533
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3534
+ * @summary List punishments
3535
+ * @param {Pageable} pageable
3536
+ * @param {string | null} [uuid]
3537
+ * @param {string | null} [username]
3538
+ * @param {string | null} [ipAddress]
3539
+ * @param {Array<PunishmentType> | null} [type]
3540
+ * @param {number | null} [issuedAfter]
3541
+ * @param {number | null} [issuedBefore]
3542
+ * @param {*} [options] Override http request option.
3543
+ * @throws {RequiredError}
3544
+ */
3545
+ getPunishments: (pageable_1, uuid_1, username_1, ipAddress_1, type_1, issuedAfter_1, issuedBefore_1, ...args_1) => __awaiter(this, [pageable_1, uuid_1, username_1, ipAddress_1, type_1, issuedAfter_1, issuedBefore_1, ...args_1], void 0, function* (pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options = {}) {
3546
+ // verify required parameter 'pageable' is not null or undefined
3547
+ (0, common_1.assertParamExists)('getPunishments', 'pageable', pageable);
3548
+ const localVarPath = `/admin/punishment`;
3549
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3550
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3551
+ let baseOptions;
3552
+ if (configuration) {
3553
+ baseOptions = configuration.baseOptions;
3554
+ }
3555
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3556
+ const localVarHeaderParameter = {};
3557
+ const localVarQueryParameter = {};
3558
+ // authentication DiscordAuth required
3559
+ // http bearer authentication required
3560
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3561
+ if (uuid !== undefined) {
3562
+ localVarQueryParameter['uuid'] = uuid;
3563
+ }
3564
+ if (username !== undefined) {
3565
+ localVarQueryParameter['username'] = username;
3566
+ }
3567
+ if (ipAddress !== undefined) {
3568
+ localVarQueryParameter['ipAddress'] = ipAddress;
3569
+ }
3570
+ if (type) {
3571
+ localVarQueryParameter['type'] = type.join(base_1.COLLECTION_FORMATS.csv);
3572
+ }
3573
+ if (issuedAfter !== undefined) {
3574
+ localVarQueryParameter['issuedAfter'] = issuedAfter;
3575
+ }
3576
+ if (issuedBefore !== undefined) {
3577
+ localVarQueryParameter['issuedBefore'] = issuedBefore;
3578
+ }
3579
+ if (pageable !== undefined) {
3580
+ localVarQueryParameter['pageable'] = pageable;
3581
+ }
3582
+ localVarHeaderParameter['Accept'] = 'application/json';
3583
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3584
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3585
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3586
+ return {
3587
+ url: (0, common_1.toPathString)(localVarUrlObj),
3588
+ options: localVarRequestOptions,
3589
+ };
3590
+ }),
3591
+ /**
3592
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3593
+ * @summary Start an alt-propagation sweep job
3594
+ * @param {*} [options] Override http request option.
3595
+ * @throws {RequiredError}
3596
+ */
3597
+ propagationSweep: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
3598
+ const localVarPath = `/admin/punishment/propagation-sweep`;
3599
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3600
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3601
+ let baseOptions;
3602
+ if (configuration) {
3603
+ baseOptions = configuration.baseOptions;
3604
+ }
3605
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3606
+ const localVarHeaderParameter = {};
3607
+ const localVarQueryParameter = {};
3608
+ // authentication DiscordAuth required
3609
+ // http bearer authentication required
3610
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3611
+ localVarHeaderParameter['Accept'] = 'application/json';
3612
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3613
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3614
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3615
+ return {
3616
+ url: (0, common_1.toPathString)(localVarUrlObj),
3617
+ options: localVarRequestOptions,
3618
+ };
3619
+ }),
3620
+ /**
3621
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3622
+ * @summary Search punishment targets
3623
+ * @param {string} q UUID, username, or partial/full IP address to search for
3624
+ * @param {*} [options] Override http request option.
3625
+ * @throws {RequiredError}
3626
+ */
3627
+ searchTargets: (q_1, ...args_1) => __awaiter(this, [q_1, ...args_1], void 0, function* (q, options = {}) {
3628
+ // verify required parameter 'q' is not null or undefined
3629
+ (0, common_1.assertParamExists)('searchTargets', 'q', q);
3630
+ const localVarPath = `/admin/punishment/search`;
3631
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3632
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3633
+ let baseOptions;
3634
+ if (configuration) {
3635
+ baseOptions = configuration.baseOptions;
3636
+ }
3637
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3638
+ const localVarHeaderParameter = {};
3639
+ const localVarQueryParameter = {};
3640
+ // authentication DiscordAuth required
3641
+ // http bearer authentication required
3642
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3643
+ if (q !== undefined) {
3644
+ localVarQueryParameter['q'] = q;
3645
+ }
3646
+ localVarHeaderParameter['Accept'] = 'application/json';
3647
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3648
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3649
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3650
+ return {
3651
+ url: (0, common_1.toPathString)(localVarUrlObj),
3652
+ options: localVarRequestOptions,
3653
+ };
3654
+ }),
3655
+ };
3656
+ };
3657
+ exports.AdminPunishmentsApiAxiosParamCreator = AdminPunishmentsApiAxiosParamCreator;
3658
+ /**
3659
+ * AdminPunishmentsApi - functional programming interface
3660
+ */
3661
+ const AdminPunishmentsApiFp = function (configuration) {
3662
+ const localVarAxiosParamCreator = (0, exports.AdminPunishmentsApiAxiosParamCreator)(configuration);
3663
+ return {
3664
+ /**
3665
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3666
+ * @summary Apply punishment
3667
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3668
+ * @param {*} [options] Override http request option.
3669
+ * @throws {RequiredError}
3670
+ */
3671
+ applyPunishment(adminApplyPunishmentRequest, options) {
3672
+ return __awaiter(this, void 0, void 0, function* () {
3673
+ var _a, _b, _c;
3674
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.applyPunishment(adminApplyPunishmentRequest, options);
3675
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3676
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.applyPunishment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3677
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3678
+ });
3679
+ },
3680
+ /**
3681
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3682
+ * @summary Evaluate punishment impact
3683
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3684
+ * @param {*} [options] Override http request option.
3685
+ * @throws {RequiredError}
3686
+ */
3687
+ createDraft(adminCreatePunishmentDraftRequest, options) {
3688
+ return __awaiter(this, void 0, void 0, function* () {
3689
+ var _a, _b, _c;
1525
3690
  const localVarAxiosArgs = yield localVarAxiosParamCreator.createDraft(adminCreatePunishmentDraftRequest, options);
1526
3691
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1527
3692
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.createDraft']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
@@ -1529,156 +3694,454 @@ const AdminPunishmentsApiFp = function (configuration) {
1529
3694
  });
1530
3695
  },
1531
3696
  /**
1532
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1533
- * @summary List punishments
1534
- * @param {number} page Page number (1-indexed)
1535
- * @param {number} limit Page size
1536
- * @param {string | null} [uuid] Filter by player UUID
1537
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1538
- * @param {string | null} [ipAddress] Filter by IP address
1539
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1540
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1541
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
3697
+ * Partial update of a punishment record. Reason / notes / expiresAt are mutable; severity is intentionally immutable to keep the punishment score deterministic. To make a punishment permanent, set forcePermanent=true. The endpoint returns 404 if the id doesn\'t exist, 200 with the updated entity otherwise. Every edit is recorded in admin_audit_log with the before/after payload.
3698
+ * @summary Edit a punishment
3699
+ * @param {number} id Punishment id
3700
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3701
+ * @param {*} [options] Override http request option.
3702
+ * @throws {RequiredError}
3703
+ */
3704
+ editPunishment(id, adminUpdatePunishmentRequest, options) {
3705
+ return __awaiter(this, void 0, void 0, function* () {
3706
+ var _a, _b, _c;
3707
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.editPunishment(id, adminUpdatePunishmentRequest, options);
3708
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3709
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.editPunishment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3710
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3711
+ });
3712
+ },
3713
+ /**
3714
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3715
+ * @summary List a punishment\'s current participants
3716
+ * @param {number} id Punishment id
3717
+ * @param {*} [options] Override http request option.
3718
+ * @throws {RequiredError}
3719
+ */
3720
+ getPunishmentTargets(id, options) {
3721
+ return __awaiter(this, void 0, void 0, function* () {
3722
+ var _a, _b, _c;
3723
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPunishmentTargets(id, options);
3724
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3725
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.getPunishmentTargets']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3726
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3727
+ });
3728
+ },
3729
+ /**
3730
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3731
+ * @summary List punishments
3732
+ * @param {Pageable} pageable
3733
+ * @param {string | null} [uuid]
3734
+ * @param {string | null} [username]
3735
+ * @param {string | null} [ipAddress]
3736
+ * @param {Array<PunishmentType> | null} [type]
3737
+ * @param {number | null} [issuedAfter]
3738
+ * @param {number | null} [issuedBefore]
3739
+ * @param {*} [options] Override http request option.
3740
+ * @throws {RequiredError}
3741
+ */
3742
+ getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
3743
+ return __awaiter(this, void 0, void 0, function* () {
3744
+ var _a, _b, _c;
3745
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options);
3746
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3747
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.getPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3748
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3749
+ });
3750
+ },
3751
+ /**
3752
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3753
+ * @summary Start an alt-propagation sweep job
3754
+ * @param {*} [options] Override http request option.
3755
+ * @throws {RequiredError}
3756
+ */
3757
+ propagationSweep(options) {
3758
+ return __awaiter(this, void 0, void 0, function* () {
3759
+ var _a, _b, _c;
3760
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.propagationSweep(options);
3761
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3762
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.propagationSweep']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3763
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3764
+ });
3765
+ },
3766
+ /**
3767
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3768
+ * @summary Search punishment targets
3769
+ * @param {string} q UUID, username, or partial/full IP address to search for
3770
+ * @param {*} [options] Override http request option.
3771
+ * @throws {RequiredError}
3772
+ */
3773
+ searchTargets(q, options) {
3774
+ return __awaiter(this, void 0, void 0, function* () {
3775
+ var _a, _b, _c;
3776
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.searchTargets(q, options);
3777
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3778
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.searchTargets']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3779
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3780
+ });
3781
+ },
3782
+ };
3783
+ };
3784
+ exports.AdminPunishmentsApiFp = AdminPunishmentsApiFp;
3785
+ /**
3786
+ * AdminPunishmentsApi - factory interface
3787
+ */
3788
+ const AdminPunishmentsApiFactory = function (configuration, basePath, axios) {
3789
+ const localVarFp = (0, exports.AdminPunishmentsApiFp)(configuration);
3790
+ return {
3791
+ /**
3792
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3793
+ * @summary Apply punishment
3794
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3795
+ * @param {*} [options] Override http request option.
3796
+ * @throws {RequiredError}
3797
+ */
3798
+ applyPunishment(adminApplyPunishmentRequest, options) {
3799
+ return localVarFp.applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(axios, basePath));
3800
+ },
3801
+ /**
3802
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3803
+ * @summary Evaluate punishment impact
3804
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3805
+ * @param {*} [options] Override http request option.
3806
+ * @throws {RequiredError}
3807
+ */
3808
+ createDraft(adminCreatePunishmentDraftRequest, options) {
3809
+ return localVarFp.createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(axios, basePath));
3810
+ },
3811
+ /**
3812
+ * Partial update of a punishment record. Reason / notes / expiresAt are mutable; severity is intentionally immutable to keep the punishment score deterministic. To make a punishment permanent, set forcePermanent=true. The endpoint returns 404 if the id doesn\'t exist, 200 with the updated entity otherwise. Every edit is recorded in admin_audit_log with the before/after payload.
3813
+ * @summary Edit a punishment
3814
+ * @param {number} id Punishment id
3815
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3816
+ * @param {*} [options] Override http request option.
3817
+ * @throws {RequiredError}
3818
+ */
3819
+ editPunishment(id, adminUpdatePunishmentRequest, options) {
3820
+ return localVarFp.editPunishment(id, adminUpdatePunishmentRequest, options).then((request) => request(axios, basePath));
3821
+ },
3822
+ /**
3823
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3824
+ * @summary List a punishment\'s current participants
3825
+ * @param {number} id Punishment id
3826
+ * @param {*} [options] Override http request option.
3827
+ * @throws {RequiredError}
3828
+ */
3829
+ getPunishmentTargets(id, options) {
3830
+ return localVarFp.getPunishmentTargets(id, options).then((request) => request(axios, basePath));
3831
+ },
3832
+ /**
3833
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3834
+ * @summary List punishments
3835
+ * @param {Pageable} pageable
3836
+ * @param {string | null} [uuid]
3837
+ * @param {string | null} [username]
3838
+ * @param {string | null} [ipAddress]
3839
+ * @param {Array<PunishmentType> | null} [type]
3840
+ * @param {number | null} [issuedAfter]
3841
+ * @param {number | null} [issuedBefore]
3842
+ * @param {*} [options] Override http request option.
3843
+ * @throws {RequiredError}
3844
+ */
3845
+ getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
3846
+ return localVarFp.getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(axios, basePath));
3847
+ },
3848
+ /**
3849
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3850
+ * @summary Start an alt-propagation sweep job
3851
+ * @param {*} [options] Override http request option.
3852
+ * @throws {RequiredError}
3853
+ */
3854
+ propagationSweep(options) {
3855
+ return localVarFp.propagationSweep(options).then((request) => request(axios, basePath));
3856
+ },
3857
+ /**
3858
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3859
+ * @summary Search punishment targets
3860
+ * @param {string} q UUID, username, or partial/full IP address to search for
3861
+ * @param {*} [options] Override http request option.
3862
+ * @throws {RequiredError}
3863
+ */
3864
+ searchTargets(q, options) {
3865
+ return localVarFp.searchTargets(q, options).then((request) => request(axios, basePath));
3866
+ },
3867
+ };
3868
+ };
3869
+ exports.AdminPunishmentsApiFactory = AdminPunishmentsApiFactory;
3870
+ /**
3871
+ * AdminPunishmentsApi - object-oriented interface
3872
+ */
3873
+ class AdminPunishmentsApi extends base_1.BaseAPI {
3874
+ /**
3875
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3876
+ * @summary Apply punishment
3877
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3878
+ * @param {*} [options] Override http request option.
3879
+ * @throws {RequiredError}
3880
+ */
3881
+ applyPunishment(adminApplyPunishmentRequest, options) {
3882
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(this.axios, this.basePath));
3883
+ }
3884
+ /**
3885
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3886
+ * @summary Evaluate punishment impact
3887
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3888
+ * @param {*} [options] Override http request option.
3889
+ * @throws {RequiredError}
3890
+ */
3891
+ createDraft(adminCreatePunishmentDraftRequest, options) {
3892
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(this.axios, this.basePath));
3893
+ }
3894
+ /**
3895
+ * Partial update of a punishment record. Reason / notes / expiresAt are mutable; severity is intentionally immutable to keep the punishment score deterministic. To make a punishment permanent, set forcePermanent=true. The endpoint returns 404 if the id doesn\'t exist, 200 with the updated entity otherwise. Every edit is recorded in admin_audit_log with the before/after payload.
3896
+ * @summary Edit a punishment
3897
+ * @param {number} id Punishment id
3898
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3899
+ * @param {*} [options] Override http request option.
3900
+ * @throws {RequiredError}
3901
+ */
3902
+ editPunishment(id, adminUpdatePunishmentRequest, options) {
3903
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).editPunishment(id, adminUpdatePunishmentRequest, options).then((request) => request(this.axios, this.basePath));
3904
+ }
3905
+ /**
3906
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3907
+ * @summary List a punishment\'s current participants
3908
+ * @param {number} id Punishment id
3909
+ * @param {*} [options] Override http request option.
3910
+ * @throws {RequiredError}
3911
+ */
3912
+ getPunishmentTargets(id, options) {
3913
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).getPunishmentTargets(id, options).then((request) => request(this.axios, this.basePath));
3914
+ }
3915
+ /**
3916
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3917
+ * @summary List punishments
3918
+ * @param {Pageable} pageable
3919
+ * @param {string | null} [uuid]
3920
+ * @param {string | null} [username]
3921
+ * @param {string | null} [ipAddress]
3922
+ * @param {Array<PunishmentType> | null} [type]
3923
+ * @param {number | null} [issuedAfter]
3924
+ * @param {number | null} [issuedBefore]
3925
+ * @param {*} [options] Override http request option.
3926
+ * @throws {RequiredError}
3927
+ */
3928
+ getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
3929
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(this.axios, this.basePath));
3930
+ }
3931
+ /**
3932
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3933
+ * @summary Start an alt-propagation sweep job
3934
+ * @param {*} [options] Override http request option.
3935
+ * @throws {RequiredError}
3936
+ */
3937
+ propagationSweep(options) {
3938
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).propagationSweep(options).then((request) => request(this.axios, this.basePath));
3939
+ }
3940
+ /**
3941
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3942
+ * @summary Search punishment targets
3943
+ * @param {string} q UUID, username, or partial/full IP address to search for
3944
+ * @param {*} [options] Override http request option.
3945
+ * @throws {RequiredError}
3946
+ */
3947
+ searchTargets(q, options) {
3948
+ return (0, exports.AdminPunishmentsApiFp)(this.configuration).searchTargets(q, options).then((request) => request(this.axios, this.basePath));
3949
+ }
3950
+ }
3951
+ exports.AdminPunishmentsApi = AdminPunishmentsApi;
3952
+ /**
3953
+ * AdminReportsApi - axios parameter creator
3954
+ */
3955
+ const AdminReportsApiAxiosParamCreator = function (configuration) {
3956
+ return {
3957
+ /**
3958
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3959
+ * @summary List reports
3960
+ * @param {Pageable} pageable
3961
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3962
+ * @param {boolean} [openOnly]
3963
+ * @param {*} [options] Override http request option.
3964
+ * @throws {RequiredError}
3965
+ */
3966
+ list1: (pageable_1, reportedUuid_1, openOnly_1, ...args_1) => __awaiter(this, [pageable_1, reportedUuid_1, openOnly_1, ...args_1], void 0, function* (pageable, reportedUuid, openOnly, options = {}) {
3967
+ // verify required parameter 'pageable' is not null or undefined
3968
+ (0, common_1.assertParamExists)('list1', 'pageable', pageable);
3969
+ const localVarPath = `/admin/report`;
3970
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3971
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
3972
+ let baseOptions;
3973
+ if (configuration) {
3974
+ baseOptions = configuration.baseOptions;
3975
+ }
3976
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3977
+ const localVarHeaderParameter = {};
3978
+ const localVarQueryParameter = {};
3979
+ // authentication DiscordAuth required
3980
+ // http bearer authentication required
3981
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
3982
+ if (reportedUuid !== undefined) {
3983
+ localVarQueryParameter['reportedUuid'] = reportedUuid;
3984
+ }
3985
+ if (openOnly !== undefined) {
3986
+ localVarQueryParameter['openOnly'] = openOnly;
3987
+ }
3988
+ if (pageable !== undefined) {
3989
+ localVarQueryParameter['pageable'] = pageable;
3990
+ }
3991
+ localVarHeaderParameter['Accept'] = 'application/json';
3992
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
3993
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3994
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3995
+ return {
3996
+ url: (0, common_1.toPathString)(localVarUrlObj),
3997
+ options: localVarRequestOptions,
3998
+ };
3999
+ }),
4000
+ /**
4001
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4002
+ * @summary Resolve a report
4003
+ * @param {number} id Report id
4004
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
4005
+ * @param {*} [options] Override http request option.
4006
+ * @throws {RequiredError}
4007
+ */
4008
+ resolve: (id_1, adminResolveReportRequest_1, ...args_1) => __awaiter(this, [id_1, adminResolveReportRequest_1, ...args_1], void 0, function* (id, adminResolveReportRequest, options = {}) {
4009
+ // verify required parameter 'id' is not null or undefined
4010
+ (0, common_1.assertParamExists)('resolve', 'id', id);
4011
+ // verify required parameter 'adminResolveReportRequest' is not null or undefined
4012
+ (0, common_1.assertParamExists)('resolve', 'adminResolveReportRequest', adminResolveReportRequest);
4013
+ const localVarPath = `/admin/report/{id}/resolve`
4014
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
4015
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4016
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
4017
+ let baseOptions;
4018
+ if (configuration) {
4019
+ baseOptions = configuration.baseOptions;
4020
+ }
4021
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
4022
+ const localVarHeaderParameter = {};
4023
+ const localVarQueryParameter = {};
4024
+ // authentication DiscordAuth required
4025
+ // http bearer authentication required
4026
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
4027
+ localVarHeaderParameter['Content-Type'] = 'application/json';
4028
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
4029
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4030
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
4031
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(adminResolveReportRequest, localVarRequestOptions, configuration);
4032
+ return {
4033
+ url: (0, common_1.toPathString)(localVarUrlObj),
4034
+ options: localVarRequestOptions,
4035
+ };
4036
+ }),
4037
+ };
4038
+ };
4039
+ exports.AdminReportsApiAxiosParamCreator = AdminReportsApiAxiosParamCreator;
4040
+ /**
4041
+ * AdminReportsApi - functional programming interface
4042
+ */
4043
+ const AdminReportsApiFp = function (configuration) {
4044
+ const localVarAxiosParamCreator = (0, exports.AdminReportsApiAxiosParamCreator)(configuration);
4045
+ return {
4046
+ /**
4047
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
4048
+ * @summary List reports
4049
+ * @param {Pageable} pageable
4050
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
4051
+ * @param {boolean} [openOnly]
1542
4052
  * @param {*} [options] Override http request option.
1543
4053
  * @throws {RequiredError}
1544
4054
  */
1545
- getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
4055
+ list1(pageable, reportedUuid, openOnly, options) {
1546
4056
  return __awaiter(this, void 0, void 0, function* () {
1547
4057
  var _a, _b, _c;
1548
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options);
4058
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.list1(pageable, reportedUuid, openOnly, options);
1549
4059
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1550
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.getPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
4060
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminReportsApi.list1']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1551
4061
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1552
4062
  });
1553
4063
  },
1554
4064
  /**
1555
- * Search for players by UUID or username, or look up all players associated with an IP address.
1556
- * @summary Search punishment targets
1557
- * @param {string} q UUID, username, or partial/full IP address to search for
4065
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4066
+ * @summary Resolve a report
4067
+ * @param {number} id Report id
4068
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
1558
4069
  * @param {*} [options] Override http request option.
1559
4070
  * @throws {RequiredError}
1560
4071
  */
1561
- searchTargets(q, options) {
4072
+ resolve(id, adminResolveReportRequest, options) {
1562
4073
  return __awaiter(this, void 0, void 0, function* () {
1563
4074
  var _a, _b, _c;
1564
- const localVarAxiosArgs = yield localVarAxiosParamCreator.searchTargets(q, options);
4075
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.resolve(id, adminResolveReportRequest, options);
1565
4076
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1566
- const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminPunishmentsApi.searchTargets']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
4077
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['AdminReportsApi.resolve']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1567
4078
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1568
4079
  });
1569
4080
  },
1570
4081
  };
1571
4082
  };
1572
- exports.AdminPunishmentsApiFp = AdminPunishmentsApiFp;
4083
+ exports.AdminReportsApiFp = AdminReportsApiFp;
1573
4084
  /**
1574
- * AdminPunishmentsApi - factory interface
4085
+ * AdminReportsApi - factory interface
1575
4086
  */
1576
- const AdminPunishmentsApiFactory = function (configuration, basePath, axios) {
1577
- const localVarFp = (0, exports.AdminPunishmentsApiFp)(configuration);
4087
+ const AdminReportsApiFactory = function (configuration, basePath, axios) {
4088
+ const localVarFp = (0, exports.AdminReportsApiFp)(configuration);
1578
4089
  return {
1579
4090
  /**
1580
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1581
- * @summary Apply punishment
1582
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1583
- * @param {*} [options] Override http request option.
1584
- * @throws {RequiredError}
1585
- */
1586
- applyPunishment(adminApplyPunishmentRequest, options) {
1587
- return localVarFp.applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(axios, basePath));
1588
- },
1589
- /**
1590
- * Preview the impact of a punishment across one or more targets. No changes are made.
1591
- * @summary Evaluate punishment impact
1592
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
1593
- * @param {*} [options] Override http request option.
1594
- * @throws {RequiredError}
1595
- */
1596
- createDraft(adminCreatePunishmentDraftRequest, options) {
1597
- return localVarFp.createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(axios, basePath));
1598
- },
1599
- /**
1600
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1601
- * @summary List punishments
1602
- * @param {number} page Page number (1-indexed)
1603
- * @param {number} limit Page size
1604
- * @param {string | null} [uuid] Filter by player UUID
1605
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1606
- * @param {string | null} [ipAddress] Filter by IP address
1607
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1608
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1609
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
4091
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
4092
+ * @summary List reports
4093
+ * @param {Pageable} pageable
4094
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
4095
+ * @param {boolean} [openOnly]
1610
4096
  * @param {*} [options] Override http request option.
1611
4097
  * @throws {RequiredError}
1612
4098
  */
1613
- getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
1614
- return localVarFp.getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(axios, basePath));
4099
+ list1(pageable, reportedUuid, openOnly, options) {
4100
+ return localVarFp.list1(pageable, reportedUuid, openOnly, options).then((request) => request(axios, basePath));
1615
4101
  },
1616
4102
  /**
1617
- * Search for players by UUID or username, or look up all players associated with an IP address.
1618
- * @summary Search punishment targets
1619
- * @param {string} q UUID, username, or partial/full IP address to search for
4103
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4104
+ * @summary Resolve a report
4105
+ * @param {number} id Report id
4106
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
1620
4107
  * @param {*} [options] Override http request option.
1621
4108
  * @throws {RequiredError}
1622
4109
  */
1623
- searchTargets(q, options) {
1624
- return localVarFp.searchTargets(q, options).then((request) => request(axios, basePath));
4110
+ resolve(id, adminResolveReportRequest, options) {
4111
+ return localVarFp.resolve(id, adminResolveReportRequest, options).then((request) => request(axios, basePath));
1625
4112
  },
1626
4113
  };
1627
4114
  };
1628
- exports.AdminPunishmentsApiFactory = AdminPunishmentsApiFactory;
4115
+ exports.AdminReportsApiFactory = AdminReportsApiFactory;
1629
4116
  /**
1630
- * AdminPunishmentsApi - object-oriented interface
4117
+ * AdminReportsApi - object-oriented interface
1631
4118
  */
1632
- class AdminPunishmentsApi extends base_1.BaseAPI {
1633
- /**
1634
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1635
- * @summary Apply punishment
1636
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1637
- * @param {*} [options] Override http request option.
1638
- * @throws {RequiredError}
1639
- */
1640
- applyPunishment(adminApplyPunishmentRequest, options) {
1641
- return (0, exports.AdminPunishmentsApiFp)(this.configuration).applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(this.axios, this.basePath));
1642
- }
1643
- /**
1644
- * Preview the impact of a punishment across one or more targets. No changes are made.
1645
- * @summary Evaluate punishment impact
1646
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
1647
- * @param {*} [options] Override http request option.
1648
- * @throws {RequiredError}
1649
- */
1650
- createDraft(adminCreatePunishmentDraftRequest, options) {
1651
- return (0, exports.AdminPunishmentsApiFp)(this.configuration).createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(this.axios, this.basePath));
1652
- }
4119
+ class AdminReportsApi extends base_1.BaseAPI {
1653
4120
  /**
1654
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1655
- * @summary List punishments
1656
- * @param {number} page Page number (1-indexed)
1657
- * @param {number} limit Page size
1658
- * @param {string | null} [uuid] Filter by player UUID
1659
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1660
- * @param {string | null} [ipAddress] Filter by IP address
1661
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1662
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1663
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
4121
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
4122
+ * @summary List reports
4123
+ * @param {Pageable} pageable
4124
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
4125
+ * @param {boolean} [openOnly]
1664
4126
  * @param {*} [options] Override http request option.
1665
4127
  * @throws {RequiredError}
1666
4128
  */
1667
- getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
1668
- return (0, exports.AdminPunishmentsApiFp)(this.configuration).getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(this.axios, this.basePath));
4129
+ list1(pageable, reportedUuid, openOnly, options) {
4130
+ return (0, exports.AdminReportsApiFp)(this.configuration).list1(pageable, reportedUuid, openOnly, options).then((request) => request(this.axios, this.basePath));
1669
4131
  }
1670
4132
  /**
1671
- * Search for players by UUID or username, or look up all players associated with an IP address.
1672
- * @summary Search punishment targets
1673
- * @param {string} q UUID, username, or partial/full IP address to search for
4133
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4134
+ * @summary Resolve a report
4135
+ * @param {number} id Report id
4136
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
1674
4137
  * @param {*} [options] Override http request option.
1675
4138
  * @throws {RequiredError}
1676
4139
  */
1677
- searchTargets(q, options) {
1678
- return (0, exports.AdminPunishmentsApiFp)(this.configuration).searchTargets(q, options).then((request) => request(this.axios, this.basePath));
4140
+ resolve(id, adminResolveReportRequest, options) {
4141
+ return (0, exports.AdminReportsApiFp)(this.configuration).resolve(id, adminResolveReportRequest, options).then((request) => request(this.axios, this.basePath));
1679
4142
  }
1680
4143
  }
1681
- exports.AdminPunishmentsApi = AdminPunishmentsApi;
4144
+ exports.AdminReportsApi = AdminReportsApi;
1682
4145
  /**
1683
4146
  * AuthenticationApi - axios parameter creator
1684
4147
  */
@@ -2003,15 +4466,13 @@ const ChatApiAxiosParamCreator = function (configuration) {
2003
4466
  /**
2004
4467
  * Returns up to `limit` chat messages before the given `before` timestamp (keyset pagination). Results are returned in ascending chronological order. Omit `before` to start from the current time. Scroll back through history by passing the `sentAt` of the oldest message received as the next `before` value.
2005
4468
  * @summary Get chat history
2006
- * @param {number} limit Maximum number of messages to return (1–100)
2007
4469
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2008
4470
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4471
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2009
4472
  * @param {*} [options] Override http request option.
2010
4473
  * @throws {RequiredError}
2011
4474
  */
2012
- history: (limit_1, sessionId_1, before_1, ...args_1) => __awaiter(this, [limit_1, sessionId_1, before_1, ...args_1], void 0, function* (limit, sessionId, before, options = {}) {
2013
- // verify required parameter 'limit' is not null or undefined
2014
- (0, common_1.assertParamExists)('history', 'limit', limit);
4475
+ history: (sessionId_1, before_1, limit_1, ...args_1) => __awaiter(this, [sessionId_1, before_1, limit_1, ...args_1], void 0, function* (sessionId, before, limit, options = {}) {
2015
4476
  const localVarPath = `/v1/chat`;
2016
4477
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
2017
4478
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -2089,16 +4550,16 @@ const ChatApiFp = function (configuration) {
2089
4550
  /**
2090
4551
  * Returns up to `limit` chat messages before the given `before` timestamp (keyset pagination). Results are returned in ascending chronological order. Omit `before` to start from the current time. Scroll back through history by passing the `sentAt` of the oldest message received as the next `before` value.
2091
4552
  * @summary Get chat history
2092
- * @param {number} limit Maximum number of messages to return (1–100)
2093
4553
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2094
4554
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4555
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2095
4556
  * @param {*} [options] Override http request option.
2096
4557
  * @throws {RequiredError}
2097
4558
  */
2098
- history(limit, sessionId, before, options) {
4559
+ history(sessionId, before, limit, options) {
2099
4560
  return __awaiter(this, void 0, void 0, function* () {
2100
4561
  var _a, _b, _c;
2101
- const localVarAxiosArgs = yield localVarAxiosParamCreator.history(limit, sessionId, before, options);
4562
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.history(sessionId, before, limit, options);
2102
4563
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2103
4564
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['ChatApi.history']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2104
4565
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -2132,14 +4593,14 @@ const ChatApiFactory = function (configuration, basePath, axios) {
2132
4593
  /**
2133
4594
  * Returns up to `limit` chat messages before the given `before` timestamp (keyset pagination). Results are returned in ascending chronological order. Omit `before` to start from the current time. Scroll back through history by passing the `sentAt` of the oldest message received as the next `before` value.
2134
4595
  * @summary Get chat history
2135
- * @param {number} limit Maximum number of messages to return (1–100)
2136
4596
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2137
4597
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4598
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2138
4599
  * @param {*} [options] Override http request option.
2139
4600
  * @throws {RequiredError}
2140
4601
  */
2141
- history(limit, sessionId, before, options) {
2142
- return localVarFp.history(limit, sessionId, before, options).then((request) => request(axios, basePath));
4602
+ history(sessionId, before, limit, options) {
4603
+ return localVarFp.history(sessionId, before, limit, options).then((request) => request(axios, basePath));
2143
4604
  },
2144
4605
  /**
2145
4606
  * Stores a chat message from a game server and fans it out to all connected WebSocket clients via PostgreSQL LISTEN/NOTIFY. The session must be currently online. Only the player UUID is stored — usernames are resolved on the web UI from the player database cache.
@@ -2161,14 +4622,14 @@ class ChatApi extends base_1.BaseAPI {
2161
4622
  /**
2162
4623
  * Returns up to `limit` chat messages before the given `before` timestamp (keyset pagination). Results are returned in ascending chronological order. Omit `before` to start from the current time. Scroll back through history by passing the `sentAt` of the oldest message received as the next `before` value.
2163
4624
  * @summary Get chat history
2164
- * @param {number} limit Maximum number of messages to return (1–100)
2165
4625
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2166
4626
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4627
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2167
4628
  * @param {*} [options] Override http request option.
2168
4629
  * @throws {RequiredError}
2169
4630
  */
2170
- history(limit, sessionId, before, options) {
2171
- return (0, exports.ChatApiFp)(this.configuration).history(limit, sessionId, before, options).then((request) => request(this.axios, this.basePath));
4631
+ history(sessionId, before, limit, options) {
4632
+ return (0, exports.ChatApiFp)(this.configuration).history(sessionId, before, limit, options).then((request) => request(this.axios, this.basePath));
2172
4633
  }
2173
4634
  /**
2174
4635
  * Stores a chat message from a game server and fans it out to all connected WebSocket clients via PostgreSQL LISTEN/NOTIFY. The session must be currently online. Only the player UUID is stored — usernames are resolved on the web UI from the player database cache.
@@ -2188,19 +4649,18 @@ exports.ChatApi = ChatApi;
2188
4649
  const ConnectionApiAxiosParamCreator = function (configuration) {
2189
4650
  return {
2190
4651
  /**
2191
- * Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
2192
- * @summary Check Connection and Detect VPN/Proxy
4652
+ * **DEPRECATED for game-server player-join flows.** Use `POST /v1/player-session/start` instead — it runs the same authorization check AND opens the player_session row in a single round-trip, returning the same connection / player / punishment context plus aggregate session stats. This endpoint remains available for admin and debugging scenarios where you want to inspect a connection\'s state without opening a session (e.g. one-off lookups, batch sweeps, support troubleshooting). Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
4653
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2193
4654
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2194
- * @param {boolean} forceRecheck When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
4655
+ * @param {boolean} [forceRecheck] When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
2195
4656
  * @param {string | null} [associateUuid] Minecraft player UUID to associate with this IP address. When provided, the API will: - Link this connection to the player\&#39;s history - Update the player\&#39;s username from Mojang API - Return player information (first join status, first login time) in the response - Track connection history for fraud detection This operation is asynchronous and won\&#39;t block the response.
2196
4657
  * @param {*} [options] Override http request option.
4658
+ * @deprecated
2197
4659
  * @throws {RequiredError}
2198
4660
  */
2199
4661
  getConnectionDetails: (ip_1, forceRecheck_1, associateUuid_1, ...args_1) => __awaiter(this, [ip_1, forceRecheck_1, associateUuid_1, ...args_1], void 0, function* (ip, forceRecheck, associateUuid, options = {}) {
2200
4662
  // verify required parameter 'ip' is not null or undefined
2201
4663
  (0, common_1.assertParamExists)('getConnectionDetails', 'ip', ip);
2202
- // verify required parameter 'forceRecheck' is not null or undefined
2203
- (0, common_1.assertParamExists)('getConnectionDetails', 'forceRecheck', forceRecheck);
2204
4664
  const localVarPath = `/v1/connection/get-connection-details/{ip}`
2205
4665
  .replace(`{${"ip"}}`, encodeURIComponent(String(ip)));
2206
4666
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
@@ -2240,12 +4700,13 @@ const ConnectionApiFp = function (configuration) {
2240
4700
  const localVarAxiosParamCreator = (0, exports.ConnectionApiAxiosParamCreator)(configuration);
2241
4701
  return {
2242
4702
  /**
2243
- * Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
2244
- * @summary Check Connection and Detect VPN/Proxy
4703
+ * **DEPRECATED for game-server player-join flows.** Use `POST /v1/player-session/start` instead — it runs the same authorization check AND opens the player_session row in a single round-trip, returning the same connection / player / punishment context plus aggregate session stats. This endpoint remains available for admin and debugging scenarios where you want to inspect a connection\'s state without opening a session (e.g. one-off lookups, batch sweeps, support troubleshooting). Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
4704
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2245
4705
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2246
- * @param {boolean} forceRecheck When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
4706
+ * @param {boolean} [forceRecheck] When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
2247
4707
  * @param {string | null} [associateUuid] Minecraft player UUID to associate with this IP address. When provided, the API will: - Link this connection to the player\&#39;s history - Update the player\&#39;s username from Mojang API - Return player information (first join status, first login time) in the response - Track connection history for fraud detection This operation is asynchronous and won\&#39;t block the response.
2248
4708
  * @param {*} [options] Override http request option.
4709
+ * @deprecated
2249
4710
  * @throws {RequiredError}
2250
4711
  */
2251
4712
  getConnectionDetails(ip, forceRecheck, associateUuid, options) {
@@ -2267,12 +4728,13 @@ const ConnectionApiFactory = function (configuration, basePath, axios) {
2267
4728
  const localVarFp = (0, exports.ConnectionApiFp)(configuration);
2268
4729
  return {
2269
4730
  /**
2270
- * Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
2271
- * @summary Check Connection and Detect VPN/Proxy
4731
+ * **DEPRECATED for game-server player-join flows.** Use `POST /v1/player-session/start` instead — it runs the same authorization check AND opens the player_session row in a single round-trip, returning the same connection / player / punishment context plus aggregate session stats. This endpoint remains available for admin and debugging scenarios where you want to inspect a connection\'s state without opening a session (e.g. one-off lookups, batch sweeps, support troubleshooting). Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
4732
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2272
4733
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2273
- * @param {boolean} forceRecheck When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
4734
+ * @param {boolean} [forceRecheck] When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
2274
4735
  * @param {string | null} [associateUuid] Minecraft player UUID to associate with this IP address. When provided, the API will: - Link this connection to the player\&#39;s history - Update the player\&#39;s username from Mojang API - Return player information (first join status, first login time) in the response - Track connection history for fraud detection This operation is asynchronous and won\&#39;t block the response.
2275
4736
  * @param {*} [options] Override http request option.
4737
+ * @deprecated
2276
4738
  * @throws {RequiredError}
2277
4739
  */
2278
4740
  getConnectionDetails(ip, forceRecheck, associateUuid, options) {
@@ -2286,12 +4748,13 @@ exports.ConnectionApiFactory = ConnectionApiFactory;
2286
4748
  */
2287
4749
  class ConnectionApi extends base_1.BaseAPI {
2288
4750
  /**
2289
- * Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
2290
- * @summary Check Connection and Detect VPN/Proxy
4751
+ * **DEPRECATED for game-server player-join flows.** Use `POST /v1/player-session/start` instead — it runs the same authorization check AND opens the player_session row in a single round-trip, returning the same connection / player / punishment context plus aggregate session stats. This endpoint remains available for admin and debugging scenarios where you want to inspect a connection\'s state without opening a session (e.g. one-off lookups, batch sweeps, support troubleshooting). Performs comprehensive analysis of an IPv4 address to detect VPN, proxy, or suspicious connections. **Features:** - Multi-provider VPN/proxy detection with aggregated confidence scoring - Approximate geolocation lookup (city and country) - Connection bypass status and expiration tracking - Optional player UUID association for connection history **Use Cases:** - Prevent VPN/proxy usage during player authentication - Track player connection history across sessions - Implement temporary bypass systems for false positives - Monitor suspicious connection patterns **Query Parameters:** - `force_recheck`: Bypass cache and re-run all detection services - `associate_uuid`: Link this IP to a player UUID and return player info **Caching:** Results are cached unless `force_recheck=true` is specified, reducing API costs and improving response times.
4752
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2291
4753
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2292
- * @param {boolean} forceRecheck When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
4754
+ * @param {boolean} [forceRecheck] When true, bypasses cached results and re-runs all VPN detection services. Use this when you need the most up-to-date analysis or suspect cached data may be stale. Default: false
2293
4755
  * @param {string | null} [associateUuid] Minecraft player UUID to associate with this IP address. When provided, the API will: - Link this connection to the player\&#39;s history - Update the player\&#39;s username from Mojang API - Return player information (first join status, first login time) in the response - Track connection history for fraud detection This operation is asynchronous and won\&#39;t block the response.
2294
4756
  * @param {*} [options] Override http request option.
4757
+ * @deprecated
2295
4758
  * @throws {RequiredError}
2296
4759
  */
2297
4760
  getConnectionDetails(ip, forceRecheck, associateUuid, options) {
@@ -2471,6 +4934,177 @@ class PlayerApi extends base_1.BaseAPI {
2471
4934
  }
2472
4935
  }
2473
4936
  exports.PlayerApi = PlayerApi;
4937
+ /**
4938
+ * PlayerSessionsApi - axios parameter creator
4939
+ */
4940
+ const PlayerSessionsApiAxiosParamCreator = function (configuration) {
4941
+ return {
4942
+ /**
4943
+ * Closes the active session for a (playerUuid, serverSessionId) pair. No-op if no active session is found, so duplicate end events from a retry don\'t error.
4944
+ * @summary Close the active player session
4945
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4946
+ * @param {*} [options] Override http request option.
4947
+ * @throws {RequiredError}
4948
+ */
4949
+ end: (playerSessionEndRequest_1, ...args_1) => __awaiter(this, [playerSessionEndRequest_1, ...args_1], void 0, function* (playerSessionEndRequest, options = {}) {
4950
+ // verify required parameter 'playerSessionEndRequest' is not null or undefined
4951
+ (0, common_1.assertParamExists)('end', 'playerSessionEndRequest', playerSessionEndRequest);
4952
+ const localVarPath = `/v1/player-session/end`;
4953
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4954
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
4955
+ let baseOptions;
4956
+ if (configuration) {
4957
+ baseOptions = configuration.baseOptions;
4958
+ }
4959
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
4960
+ const localVarHeaderParameter = {};
4961
+ const localVarQueryParameter = {};
4962
+ // authentication DiscordAuth required
4963
+ // http bearer authentication required
4964
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
4965
+ localVarHeaderParameter['Content-Type'] = 'application/json';
4966
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
4967
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4968
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
4969
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(playerSessionEndRequest, localVarRequestOptions, configuration);
4970
+ return {
4971
+ url: (0, common_1.toPathString)(localVarUrlObj),
4972
+ options: localVarRequestOptions,
4973
+ };
4974
+ }),
4975
+ /**
4976
+ * Single round-trip the game server / proxy makes when a player joins. Runs the full authorization check (VPN detection, bypass tiers, punishment propagation, active-ban evaluation) and — only if allowed — opens (or re-attaches to) a player_session row. Replaces the older two-call flow (`GET /v1/connection/details` followed by a session-open POST). `/v1/connection/details` remains available for admin / debugging use but is deprecated for player-join purposes. Idempotent at the session-open step: a duplicate join request returns the existing active session\'s id instead of creating a duplicate row. Response shape: - `connectionResult` — always populated; carries ALLOWED / BANNED / VPN_DETECTED etc. plus a formatted kick message when denied. - `sessionId` / `startedAt` — populated only when the join was allowed. - Connection context (IP, location, VPN%, bypass) for display + logging. - `playerInformation`, `activePunishments` — full player history at join time. - `sessionStats` — total seconds played / days active / currently-online, useful for game-server-side welcome messages.
4977
+ * @summary Player join — unified authorization + session-open
4978
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4979
+ * @param {*} [options] Override http request option.
4980
+ * @throws {RequiredError}
4981
+ */
4982
+ start: (playerSessionStartRequest_1, ...args_1) => __awaiter(this, [playerSessionStartRequest_1, ...args_1], void 0, function* (playerSessionStartRequest, options = {}) {
4983
+ // verify required parameter 'playerSessionStartRequest' is not null or undefined
4984
+ (0, common_1.assertParamExists)('start', 'playerSessionStartRequest', playerSessionStartRequest);
4985
+ const localVarPath = `/v1/player-session/start`;
4986
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4987
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
4988
+ let baseOptions;
4989
+ if (configuration) {
4990
+ baseOptions = configuration.baseOptions;
4991
+ }
4992
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
4993
+ const localVarHeaderParameter = {};
4994
+ const localVarQueryParameter = {};
4995
+ // authentication DiscordAuth required
4996
+ // http bearer authentication required
4997
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
4998
+ localVarHeaderParameter['Content-Type'] = 'application/json';
4999
+ localVarHeaderParameter['Accept'] = 'application/json';
5000
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
5001
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
5002
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
5003
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(playerSessionStartRequest, localVarRequestOptions, configuration);
5004
+ return {
5005
+ url: (0, common_1.toPathString)(localVarUrlObj),
5006
+ options: localVarRequestOptions,
5007
+ };
5008
+ }),
5009
+ };
5010
+ };
5011
+ exports.PlayerSessionsApiAxiosParamCreator = PlayerSessionsApiAxiosParamCreator;
5012
+ /**
5013
+ * PlayerSessionsApi - functional programming interface
5014
+ */
5015
+ const PlayerSessionsApiFp = function (configuration) {
5016
+ const localVarAxiosParamCreator = (0, exports.PlayerSessionsApiAxiosParamCreator)(configuration);
5017
+ return {
5018
+ /**
5019
+ * Closes the active session for a (playerUuid, serverSessionId) pair. No-op if no active session is found, so duplicate end events from a retry don\'t error.
5020
+ * @summary Close the active player session
5021
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
5022
+ * @param {*} [options] Override http request option.
5023
+ * @throws {RequiredError}
5024
+ */
5025
+ end(playerSessionEndRequest, options) {
5026
+ return __awaiter(this, void 0, void 0, function* () {
5027
+ var _a, _b, _c;
5028
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.end(playerSessionEndRequest, options);
5029
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
5030
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PlayerSessionsApi.end']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
5031
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
5032
+ });
5033
+ },
5034
+ /**
5035
+ * Single round-trip the game server / proxy makes when a player joins. Runs the full authorization check (VPN detection, bypass tiers, punishment propagation, active-ban evaluation) and — only if allowed — opens (or re-attaches to) a player_session row. Replaces the older two-call flow (`GET /v1/connection/details` followed by a session-open POST). `/v1/connection/details` remains available for admin / debugging use but is deprecated for player-join purposes. Idempotent at the session-open step: a duplicate join request returns the existing active session\'s id instead of creating a duplicate row. Response shape: - `connectionResult` — always populated; carries ALLOWED / BANNED / VPN_DETECTED etc. plus a formatted kick message when denied. - `sessionId` / `startedAt` — populated only when the join was allowed. - Connection context (IP, location, VPN%, bypass) for display + logging. - `playerInformation`, `activePunishments` — full player history at join time. - `sessionStats` — total seconds played / days active / currently-online, useful for game-server-side welcome messages.
5036
+ * @summary Player join — unified authorization + session-open
5037
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
5038
+ * @param {*} [options] Override http request option.
5039
+ * @throws {RequiredError}
5040
+ */
5041
+ start(playerSessionStartRequest, options) {
5042
+ return __awaiter(this, void 0, void 0, function* () {
5043
+ var _a, _b, _c;
5044
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.start(playerSessionStartRequest, options);
5045
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
5046
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PlayerSessionsApi.start']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
5047
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
5048
+ });
5049
+ },
5050
+ };
5051
+ };
5052
+ exports.PlayerSessionsApiFp = PlayerSessionsApiFp;
5053
+ /**
5054
+ * PlayerSessionsApi - factory interface
5055
+ */
5056
+ const PlayerSessionsApiFactory = function (configuration, basePath, axios) {
5057
+ const localVarFp = (0, exports.PlayerSessionsApiFp)(configuration);
5058
+ return {
5059
+ /**
5060
+ * Closes the active session for a (playerUuid, serverSessionId) pair. No-op if no active session is found, so duplicate end events from a retry don\'t error.
5061
+ * @summary Close the active player session
5062
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
5063
+ * @param {*} [options] Override http request option.
5064
+ * @throws {RequiredError}
5065
+ */
5066
+ end(playerSessionEndRequest, options) {
5067
+ return localVarFp.end(playerSessionEndRequest, options).then((request) => request(axios, basePath));
5068
+ },
5069
+ /**
5070
+ * Single round-trip the game server / proxy makes when a player joins. Runs the full authorization check (VPN detection, bypass tiers, punishment propagation, active-ban evaluation) and — only if allowed — opens (or re-attaches to) a player_session row. Replaces the older two-call flow (`GET /v1/connection/details` followed by a session-open POST). `/v1/connection/details` remains available for admin / debugging use but is deprecated for player-join purposes. Idempotent at the session-open step: a duplicate join request returns the existing active session\'s id instead of creating a duplicate row. Response shape: - `connectionResult` — always populated; carries ALLOWED / BANNED / VPN_DETECTED etc. plus a formatted kick message when denied. - `sessionId` / `startedAt` — populated only when the join was allowed. - Connection context (IP, location, VPN%, bypass) for display + logging. - `playerInformation`, `activePunishments` — full player history at join time. - `sessionStats` — total seconds played / days active / currently-online, useful for game-server-side welcome messages.
5071
+ * @summary Player join — unified authorization + session-open
5072
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
5073
+ * @param {*} [options] Override http request option.
5074
+ * @throws {RequiredError}
5075
+ */
5076
+ start(playerSessionStartRequest, options) {
5077
+ return localVarFp.start(playerSessionStartRequest, options).then((request) => request(axios, basePath));
5078
+ },
5079
+ };
5080
+ };
5081
+ exports.PlayerSessionsApiFactory = PlayerSessionsApiFactory;
5082
+ /**
5083
+ * PlayerSessionsApi - object-oriented interface
5084
+ */
5085
+ class PlayerSessionsApi extends base_1.BaseAPI {
5086
+ /**
5087
+ * Closes the active session for a (playerUuid, serverSessionId) pair. No-op if no active session is found, so duplicate end events from a retry don\'t error.
5088
+ * @summary Close the active player session
5089
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
5090
+ * @param {*} [options] Override http request option.
5091
+ * @throws {RequiredError}
5092
+ */
5093
+ end(playerSessionEndRequest, options) {
5094
+ return (0, exports.PlayerSessionsApiFp)(this.configuration).end(playerSessionEndRequest, options).then((request) => request(this.axios, this.basePath));
5095
+ }
5096
+ /**
5097
+ * Single round-trip the game server / proxy makes when a player joins. Runs the full authorization check (VPN detection, bypass tiers, punishment propagation, active-ban evaluation) and — only if allowed — opens (or re-attaches to) a player_session row. Replaces the older two-call flow (`GET /v1/connection/details` followed by a session-open POST). `/v1/connection/details` remains available for admin / debugging use but is deprecated for player-join purposes. Idempotent at the session-open step: a duplicate join request returns the existing active session\'s id instead of creating a duplicate row. Response shape: - `connectionResult` — always populated; carries ALLOWED / BANNED / VPN_DETECTED etc. plus a formatted kick message when denied. - `sessionId` / `startedAt` — populated only when the join was allowed. - Connection context (IP, location, VPN%, bypass) for display + logging. - `playerInformation`, `activePunishments` — full player history at join time. - `sessionStats` — total seconds played / days active / currently-online, useful for game-server-side welcome messages.
5098
+ * @summary Player join — unified authorization + session-open
5099
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
5100
+ * @param {*} [options] Override http request option.
5101
+ * @throws {RequiredError}
5102
+ */
5103
+ start(playerSessionStartRequest, options) {
5104
+ return (0, exports.PlayerSessionsApiFp)(this.configuration).start(playerSessionStartRequest, options).then((request) => request(this.axios, this.basePath));
5105
+ }
5106
+ }
5107
+ exports.PlayerSessionsApi = PlayerSessionsApi;
2474
5108
  /**
2475
5109
  * PunishmentApi - axios parameter creator
2476
5110
  */
@@ -2588,23 +5222,20 @@ const PunishmentApiAxiosParamCreator = function (configuration) {
2588
5222
  /**
2589
5223
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2590
5224
  * @summary List recent punishments
2591
- * @param {number} limit Maximum number of records to return
2592
- * @param {number} page Page number for pagination
2593
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2594
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2595
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2596
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2597
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2598
- * @param {string | null} [uuid] Filter by player UUID
2599
- * @param {string | null} [ipAddress] Filter by IP address
5225
+ * @param {Pageable} pageable
5226
+ * @param {number | null} [issuedAfter]
5227
+ * @param {number | null} [issuedBefore]
5228
+ * @param {number | null} [expiresAfter]
5229
+ * @param {number | null} [expiresBefore]
5230
+ * @param {Array<PunishmentType> | null} [type]
5231
+ * @param {string | null} [uuid]
5232
+ * @param {string | null} [ipAddress]
2600
5233
  * @param {*} [options] Override http request option.
2601
5234
  * @throws {RequiredError}
2602
5235
  */
2603
- getRecentPunishments: (limit_1, page_1, issuedAfter_1, issuedBefore_1, expiresAfter_1, expiresBefore_1, type_1, uuid_1, ipAddress_1, ...args_1) => __awaiter(this, [limit_1, page_1, issuedAfter_1, issuedBefore_1, expiresAfter_1, expiresBefore_1, type_1, uuid_1, ipAddress_1, ...args_1], void 0, function* (limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options = {}) {
2604
- // verify required parameter 'limit' is not null or undefined
2605
- (0, common_1.assertParamExists)('getRecentPunishments', 'limit', limit);
2606
- // verify required parameter 'page' is not null or undefined
2607
- (0, common_1.assertParamExists)('getRecentPunishments', 'page', page);
5236
+ getRecentPunishments: (pageable_1, issuedAfter_1, issuedBefore_1, expiresAfter_1, expiresBefore_1, type_1, uuid_1, ipAddress_1, ...args_1) => __awaiter(this, [pageable_1, issuedAfter_1, issuedBefore_1, expiresAfter_1, expiresBefore_1, type_1, uuid_1, ipAddress_1, ...args_1], void 0, function* (pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options = {}) {
5237
+ // verify required parameter 'pageable' is not null or undefined
5238
+ (0, common_1.assertParamExists)('getRecentPunishments', 'pageable', pageable);
2608
5239
  const localVarPath = `/v1/punishment/recent`;
2609
5240
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
2610
5241
  const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
@@ -2639,11 +5270,8 @@ const PunishmentApiAxiosParamCreator = function (configuration) {
2639
5270
  if (ipAddress !== undefined) {
2640
5271
  localVarQueryParameter['ipAddress'] = ipAddress;
2641
5272
  }
2642
- if (limit !== undefined) {
2643
- localVarQueryParameter['limit'] = limit;
2644
- }
2645
- if (page !== undefined) {
2646
- localVarQueryParameter['page'] = page;
5273
+ if (pageable !== undefined) {
5274
+ localVarQueryParameter['pageable'] = pageable;
2647
5275
  }
2648
5276
  localVarHeaderParameter['Accept'] = 'application/json';
2649
5277
  (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
@@ -2716,22 +5344,21 @@ const PunishmentApiFp = function (configuration) {
2716
5344
  /**
2717
5345
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2718
5346
  * @summary List recent punishments
2719
- * @param {number} limit Maximum number of records to return
2720
- * @param {number} page Page number for pagination
2721
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2722
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2723
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2724
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2725
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2726
- * @param {string | null} [uuid] Filter by player UUID
2727
- * @param {string | null} [ipAddress] Filter by IP address
5347
+ * @param {Pageable} pageable
5348
+ * @param {number | null} [issuedAfter]
5349
+ * @param {number | null} [issuedBefore]
5350
+ * @param {number | null} [expiresAfter]
5351
+ * @param {number | null} [expiresBefore]
5352
+ * @param {Array<PunishmentType> | null} [type]
5353
+ * @param {string | null} [uuid]
5354
+ * @param {string | null} [ipAddress]
2728
5355
  * @param {*} [options] Override http request option.
2729
5356
  * @throws {RequiredError}
2730
5357
  */
2731
- getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
5358
+ getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
2732
5359
  return __awaiter(this, void 0, void 0, function* () {
2733
5360
  var _a, _b, _c;
2734
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options);
5361
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options);
2735
5362
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2736
5363
  const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['PunishmentApi.getRecentPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2737
5364
  return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -2781,20 +5408,19 @@ const PunishmentApiFactory = function (configuration, basePath, axios) {
2781
5408
  /**
2782
5409
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2783
5410
  * @summary List recent punishments
2784
- * @param {number} limit Maximum number of records to return
2785
- * @param {number} page Page number for pagination
2786
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2787
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2788
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2789
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2790
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2791
- * @param {string | null} [uuid] Filter by player UUID
2792
- * @param {string | null} [ipAddress] Filter by IP address
5411
+ * @param {Pageable} pageable
5412
+ * @param {number | null} [issuedAfter]
5413
+ * @param {number | null} [issuedBefore]
5414
+ * @param {number | null} [expiresAfter]
5415
+ * @param {number | null} [expiresBefore]
5416
+ * @param {Array<PunishmentType> | null} [type]
5417
+ * @param {string | null} [uuid]
5418
+ * @param {string | null} [ipAddress]
2793
5419
  * @param {*} [options] Override http request option.
2794
5420
  * @throws {RequiredError}
2795
5421
  */
2796
- getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
2797
- return localVarFp.getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(axios, basePath));
5422
+ getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
5423
+ return localVarFp.getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(axios, basePath));
2798
5424
  },
2799
5425
  };
2800
5426
  };
@@ -2838,23 +5464,124 @@ class PunishmentApi extends base_1.BaseAPI {
2838
5464
  /**
2839
5465
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2840
5466
  * @summary List recent punishments
2841
- * @param {number} limit Maximum number of records to return
2842
- * @param {number} page Page number for pagination
2843
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2844
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2845
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2846
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2847
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2848
- * @param {string | null} [uuid] Filter by player UUID
2849
- * @param {string | null} [ipAddress] Filter by IP address
5467
+ * @param {Pageable} pageable
5468
+ * @param {number | null} [issuedAfter]
5469
+ * @param {number | null} [issuedBefore]
5470
+ * @param {number | null} [expiresAfter]
5471
+ * @param {number | null} [expiresBefore]
5472
+ * @param {Array<PunishmentType> | null} [type]
5473
+ * @param {string | null} [uuid]
5474
+ * @param {string | null} [ipAddress]
2850
5475
  * @param {*} [options] Override http request option.
2851
5476
  * @throws {RequiredError}
2852
5477
  */
2853
- getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
2854
- return (0, exports.PunishmentApiFp)(this.configuration).getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(this.axios, this.basePath));
5478
+ getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
5479
+ return (0, exports.PunishmentApiFp)(this.configuration).getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(this.axios, this.basePath));
2855
5480
  }
2856
5481
  }
2857
5482
  exports.PunishmentApi = PunishmentApi;
5483
+ /**
5484
+ * ReportApi - axios parameter creator
5485
+ */
5486
+ const ReportApiAxiosParamCreator = function (configuration) {
5487
+ return {
5488
+ /**
5489
+ * Records that {reporterUuid} flagged one OR MORE players for misconduct in a single incident. Idempotent per (reporter, exact target set) while the prior report is unresolved — repeat submissions with the same target set overwrite reason / category in place and the response\'s {@code deduplicated} flag is true. A different target set (even overlapping) creates a new report. Resolved reports do not block fresh submissions. **Active-report cap**: each reporter may hold at most 3 unresolved reports at a time. A 4th submission with a NEW target set returns 429 until staff resolve one of the existing reports. Dedupe updates (same target set) never count against the cap.
5490
+ * @summary Submit a peer report
5491
+ * @param {CreateReportRequest} createReportRequest
5492
+ * @param {*} [options] Override http request option.
5493
+ * @throws {RequiredError}
5494
+ */
5495
+ submit: (createReportRequest_1, ...args_1) => __awaiter(this, [createReportRequest_1, ...args_1], void 0, function* (createReportRequest, options = {}) {
5496
+ // verify required parameter 'createReportRequest' is not null or undefined
5497
+ (0, common_1.assertParamExists)('submit', 'createReportRequest', createReportRequest);
5498
+ const localVarPath = `/v1/report`;
5499
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
5500
+ const localVarUrlObj = new URL(localVarPath, common_1.DUMMY_BASE_URL);
5501
+ let baseOptions;
5502
+ if (configuration) {
5503
+ baseOptions = configuration.baseOptions;
5504
+ }
5505
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
5506
+ const localVarHeaderParameter = {};
5507
+ const localVarQueryParameter = {};
5508
+ // authentication DiscordAuth required
5509
+ // http bearer authentication required
5510
+ yield (0, common_1.setBearerAuthToObject)(localVarHeaderParameter, configuration);
5511
+ localVarHeaderParameter['Content-Type'] = 'application/json';
5512
+ localVarHeaderParameter['Accept'] = 'application/json';
5513
+ (0, common_1.setSearchParams)(localVarUrlObj, localVarQueryParameter);
5514
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
5515
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
5516
+ localVarRequestOptions.data = (0, common_1.serializeDataIfNeeded)(createReportRequest, localVarRequestOptions, configuration);
5517
+ return {
5518
+ url: (0, common_1.toPathString)(localVarUrlObj),
5519
+ options: localVarRequestOptions,
5520
+ };
5521
+ }),
5522
+ };
5523
+ };
5524
+ exports.ReportApiAxiosParamCreator = ReportApiAxiosParamCreator;
5525
+ /**
5526
+ * ReportApi - functional programming interface
5527
+ */
5528
+ const ReportApiFp = function (configuration) {
5529
+ const localVarAxiosParamCreator = (0, exports.ReportApiAxiosParamCreator)(configuration);
5530
+ return {
5531
+ /**
5532
+ * Records that {reporterUuid} flagged one OR MORE players for misconduct in a single incident. Idempotent per (reporter, exact target set) while the prior report is unresolved — repeat submissions with the same target set overwrite reason / category in place and the response\'s {@code deduplicated} flag is true. A different target set (even overlapping) creates a new report. Resolved reports do not block fresh submissions. **Active-report cap**: each reporter may hold at most 3 unresolved reports at a time. A 4th submission with a NEW target set returns 429 until staff resolve one of the existing reports. Dedupe updates (same target set) never count against the cap.
5533
+ * @summary Submit a peer report
5534
+ * @param {CreateReportRequest} createReportRequest
5535
+ * @param {*} [options] Override http request option.
5536
+ * @throws {RequiredError}
5537
+ */
5538
+ submit(createReportRequest, options) {
5539
+ return __awaiter(this, void 0, void 0, function* () {
5540
+ var _a, _b, _c;
5541
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.submit(createReportRequest, options);
5542
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
5543
+ const localVarOperationServerBasePath = (_c = (_b = base_1.operationServerMap['ReportApi.submit']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
5544
+ return (axios, basePath) => (0, common_1.createRequestFunction)(localVarAxiosArgs, axios_1.default, base_1.BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
5545
+ });
5546
+ },
5547
+ };
5548
+ };
5549
+ exports.ReportApiFp = ReportApiFp;
5550
+ /**
5551
+ * ReportApi - factory interface
5552
+ */
5553
+ const ReportApiFactory = function (configuration, basePath, axios) {
5554
+ const localVarFp = (0, exports.ReportApiFp)(configuration);
5555
+ return {
5556
+ /**
5557
+ * Records that {reporterUuid} flagged one OR MORE players for misconduct in a single incident. Idempotent per (reporter, exact target set) while the prior report is unresolved — repeat submissions with the same target set overwrite reason / category in place and the response\'s {@code deduplicated} flag is true. A different target set (even overlapping) creates a new report. Resolved reports do not block fresh submissions. **Active-report cap**: each reporter may hold at most 3 unresolved reports at a time. A 4th submission with a NEW target set returns 429 until staff resolve one of the existing reports. Dedupe updates (same target set) never count against the cap.
5558
+ * @summary Submit a peer report
5559
+ * @param {CreateReportRequest} createReportRequest
5560
+ * @param {*} [options] Override http request option.
5561
+ * @throws {RequiredError}
5562
+ */
5563
+ submit(createReportRequest, options) {
5564
+ return localVarFp.submit(createReportRequest, options).then((request) => request(axios, basePath));
5565
+ },
5566
+ };
5567
+ };
5568
+ exports.ReportApiFactory = ReportApiFactory;
5569
+ /**
5570
+ * ReportApi - object-oriented interface
5571
+ */
5572
+ class ReportApi extends base_1.BaseAPI {
5573
+ /**
5574
+ * Records that {reporterUuid} flagged one OR MORE players for misconduct in a single incident. Idempotent per (reporter, exact target set) while the prior report is unresolved — repeat submissions with the same target set overwrite reason / category in place and the response\'s {@code deduplicated} flag is true. A different target set (even overlapping) creates a new report. Resolved reports do not block fresh submissions. **Active-report cap**: each reporter may hold at most 3 unresolved reports at a time. A 4th submission with a NEW target set returns 429 until staff resolve one of the existing reports. Dedupe updates (same target set) never count against the cap.
5575
+ * @summary Submit a peer report
5576
+ * @param {CreateReportRequest} createReportRequest
5577
+ * @param {*} [options] Override http request option.
5578
+ * @throws {RequiredError}
5579
+ */
5580
+ submit(createReportRequest, options) {
5581
+ return (0, exports.ReportApiFp)(this.configuration).submit(createReportRequest, options).then((request) => request(this.axios, this.basePath));
5582
+ }
5583
+ }
5584
+ exports.ReportApi = ReportApi;
2858
5585
  /**
2859
5586
  * ServerSessionsApi - axios parameter creator
2860
5587
  */