@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/esm/api.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Reborn API
5
5
  * 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
6
6
  *
7
- * The version of the OpenAPI document: 3.2.1
7
+ * The version of the OpenAPI document: 4.5.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -40,10 +40,35 @@ export const GameType = {
40
40
  Legacy: 'LEGACY',
41
41
  Classic: 'CLASSIC'
42
42
  };
43
+ /**
44
+ * Current lifecycle state.
45
+ */
46
+ export const JobStatus = {
47
+ Queued: 'QUEUED',
48
+ Running: 'RUNNING',
49
+ Completed: 'COMPLETED',
50
+ Failed: 'FAILED',
51
+ Cancelled: 'CANCELLED'
52
+ };
53
+ export const PageableMode = {
54
+ CursorNext: 'CURSOR_NEXT',
55
+ CursorPrevious: 'CURSOR_PREVIOUS',
56
+ Offset: 'OFFSET'
57
+ };
58
+ /**
59
+ * 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.
60
+ */
61
+ export const PunishmentSource = {
62
+ Direct: 'DIRECT',
63
+ Propagated: 'PROPAGATED'
64
+ };
43
65
  export const PunishmentTargetType = {
44
66
  Player: 'PLAYER',
45
67
  Connection: 'CONNECTION'
46
68
  };
69
+ /**
70
+ * Type of punishment
71
+ */
47
72
  export const PunishmentType = {
48
73
  Ban: 'BAN',
49
74
  Mute: 'MUTE',
@@ -59,6 +84,16 @@ export const Region = {
59
84
  Eu: 'EU',
60
85
  Au: 'AU'
61
86
  };
87
+ /**
88
+ * Category of misconduct. Coarse on purpose — staff refine in triage.
89
+ */
90
+ export const ReportCategory = {
91
+ Cheating: 'CHEATING',
92
+ Harassment: 'HARASSMENT',
93
+ ChatAbuse: 'CHAT_ABUSE',
94
+ Griefing: 'GRIEFING',
95
+ Other: 'OTHER'
96
+ };
62
97
  /**
63
98
  * Search kind — PLAYER for UUID/username searches, IP for IP address searches
64
99
  */
@@ -66,6 +101,236 @@ export const SearchKind = {
66
101
  Player: 'PLAYER',
67
102
  Ip: 'IP'
68
103
  };
104
+ export const SortOrderDirection = {
105
+ Asc: 'ASC',
106
+ Desc: 'DESC'
107
+ };
108
+ /**
109
+ * AdminAuditLogApi - axios parameter creator
110
+ */
111
+ export const AdminAuditLogApiAxiosParamCreator = function (configuration) {
112
+ return {
113
+ /**
114
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
115
+ * @summary Search the admin audit log
116
+ * @param {Pageable} pageable
117
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
118
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
119
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
120
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
121
+ * @param {*} [options] Override http request option.
122
+ * @throws {RequiredError}
123
+ */
124
+ 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 = {}) {
125
+ // verify required parameter 'pageable' is not null or undefined
126
+ assertParamExists('search', 'pageable', pageable);
127
+ const localVarPath = `/admin/audit-log`;
128
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
129
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
130
+ let baseOptions;
131
+ if (configuration) {
132
+ baseOptions = configuration.baseOptions;
133
+ }
134
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
135
+ const localVarHeaderParameter = {};
136
+ const localVarQueryParameter = {};
137
+ // authentication DiscordAuth required
138
+ // http bearer authentication required
139
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
140
+ if (actor !== undefined) {
141
+ localVarQueryParameter['actor'] = actor;
142
+ }
143
+ if (action !== undefined) {
144
+ localVarQueryParameter['action'] = action;
145
+ }
146
+ if (targetType !== undefined) {
147
+ localVarQueryParameter['targetType'] = targetType;
148
+ }
149
+ if (targetId !== undefined) {
150
+ localVarQueryParameter['targetId'] = targetId;
151
+ }
152
+ if (pageable !== undefined) {
153
+ localVarQueryParameter['pageable'] = pageable;
154
+ }
155
+ localVarHeaderParameter['Accept'] = 'application/json';
156
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
157
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
158
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
159
+ return {
160
+ url: toPathString(localVarUrlObj),
161
+ options: localVarRequestOptions,
162
+ };
163
+ }),
164
+ /**
165
+ * 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.
166
+ * @summary Cursor-paginated audit-log search (infinite scroll)
167
+ * @param {CursoredPageable} pageable
168
+ * @param {string | null} [actor]
169
+ * @param {string | null} [action]
170
+ * @param {string | null} [targetType]
171
+ * @param {string | null} [targetId]
172
+ * @param {*} [options] Override http request option.
173
+ * @throws {RequiredError}
174
+ */
175
+ 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 = {}) {
176
+ // verify required parameter 'pageable' is not null or undefined
177
+ assertParamExists('searchCursor', 'pageable', pageable);
178
+ const localVarPath = `/admin/audit-log/cursor`;
179
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
180
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
181
+ let baseOptions;
182
+ if (configuration) {
183
+ baseOptions = configuration.baseOptions;
184
+ }
185
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
186
+ const localVarHeaderParameter = {};
187
+ const localVarQueryParameter = {};
188
+ // authentication DiscordAuth required
189
+ // http bearer authentication required
190
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
191
+ if (actor !== undefined) {
192
+ localVarQueryParameter['actor'] = actor;
193
+ }
194
+ if (action !== undefined) {
195
+ localVarQueryParameter['action'] = action;
196
+ }
197
+ if (targetType !== undefined) {
198
+ localVarQueryParameter['targetType'] = targetType;
199
+ }
200
+ if (targetId !== undefined) {
201
+ localVarQueryParameter['targetId'] = targetId;
202
+ }
203
+ if (pageable !== undefined) {
204
+ localVarQueryParameter['pageable'] = pageable;
205
+ }
206
+ localVarHeaderParameter['Accept'] = 'application/json';
207
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
208
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
209
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
210
+ return {
211
+ url: toPathString(localVarUrlObj),
212
+ options: localVarRequestOptions,
213
+ };
214
+ }),
215
+ };
216
+ };
217
+ /**
218
+ * AdminAuditLogApi - functional programming interface
219
+ */
220
+ export const AdminAuditLogApiFp = function (configuration) {
221
+ const localVarAxiosParamCreator = AdminAuditLogApiAxiosParamCreator(configuration);
222
+ return {
223
+ /**
224
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
225
+ * @summary Search the admin audit log
226
+ * @param {Pageable} pageable
227
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
228
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
229
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
230
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
231
+ * @param {*} [options] Override http request option.
232
+ * @throws {RequiredError}
233
+ */
234
+ search(pageable, actor, action, targetType, targetId, options) {
235
+ return __awaiter(this, void 0, void 0, function* () {
236
+ var _a, _b, _c;
237
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.search(pageable, actor, action, targetType, targetId, options);
238
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
239
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminAuditLogApi.search']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
240
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
241
+ });
242
+ },
243
+ /**
244
+ * 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.
245
+ * @summary Cursor-paginated audit-log search (infinite scroll)
246
+ * @param {CursoredPageable} pageable
247
+ * @param {string | null} [actor]
248
+ * @param {string | null} [action]
249
+ * @param {string | null} [targetType]
250
+ * @param {string | null} [targetId]
251
+ * @param {*} [options] Override http request option.
252
+ * @throws {RequiredError}
253
+ */
254
+ searchCursor(pageable, actor, action, targetType, targetId, options) {
255
+ return __awaiter(this, void 0, void 0, function* () {
256
+ var _a, _b, _c;
257
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.searchCursor(pageable, actor, action, targetType, targetId, options);
258
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
259
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminAuditLogApi.searchCursor']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
260
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
261
+ });
262
+ },
263
+ };
264
+ };
265
+ /**
266
+ * AdminAuditLogApi - factory interface
267
+ */
268
+ export const AdminAuditLogApiFactory = function (configuration, basePath, axios) {
269
+ const localVarFp = AdminAuditLogApiFp(configuration);
270
+ return {
271
+ /**
272
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
273
+ * @summary Search the admin audit log
274
+ * @param {Pageable} pageable
275
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
276
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
277
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
278
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
279
+ * @param {*} [options] Override http request option.
280
+ * @throws {RequiredError}
281
+ */
282
+ search(pageable, actor, action, targetType, targetId, options) {
283
+ return localVarFp.search(pageable, actor, action, targetType, targetId, options).then((request) => request(axios, basePath));
284
+ },
285
+ /**
286
+ * 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.
287
+ * @summary Cursor-paginated audit-log search (infinite scroll)
288
+ * @param {CursoredPageable} pageable
289
+ * @param {string | null} [actor]
290
+ * @param {string | null} [action]
291
+ * @param {string | null} [targetType]
292
+ * @param {string | null} [targetId]
293
+ * @param {*} [options] Override http request option.
294
+ * @throws {RequiredError}
295
+ */
296
+ searchCursor(pageable, actor, action, targetType, targetId, options) {
297
+ return localVarFp.searchCursor(pageable, actor, action, targetType, targetId, options).then((request) => request(axios, basePath));
298
+ },
299
+ };
300
+ };
301
+ /**
302
+ * AdminAuditLogApi - object-oriented interface
303
+ */
304
+ export class AdminAuditLogApi extends BaseAPI {
305
+ /**
306
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
307
+ * @summary Search the admin audit log
308
+ * @param {Pageable} pageable
309
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
310
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
311
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
312
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
313
+ * @param {*} [options] Override http request option.
314
+ * @throws {RequiredError}
315
+ */
316
+ search(pageable, actor, action, targetType, targetId, options) {
317
+ return AdminAuditLogApiFp(this.configuration).search(pageable, actor, action, targetType, targetId, options).then((request) => request(this.axios, this.basePath));
318
+ }
319
+ /**
320
+ * 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.
321
+ * @summary Cursor-paginated audit-log search (infinite scroll)
322
+ * @param {CursoredPageable} pageable
323
+ * @param {string | null} [actor]
324
+ * @param {string | null} [action]
325
+ * @param {string | null} [targetType]
326
+ * @param {string | null} [targetId]
327
+ * @param {*} [options] Override http request option.
328
+ * @throws {RequiredError}
329
+ */
330
+ searchCursor(pageable, actor, action, targetType, targetId, options) {
331
+ return AdminAuditLogApiFp(this.configuration).searchCursor(pageable, actor, action, targetType, targetId, options).then((request) => request(this.axios, this.basePath));
332
+ }
333
+ }
69
334
  /**
70
335
  * AdminClientCredentialsApi - axios parameter creator
71
336
  */
@@ -582,8 +847,8 @@ export class AdminClientCredentialsApi extends BaseAPI {
582
847
  export const AdminConnectionsApiAxiosParamCreator = function (configuration) {
583
848
  return {
584
849
  /**
585
- * 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.
586
- * @summary Backfill missing location data
850
+ * 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.
851
+ * @summary Start a location backfill job
587
852
  * @param {*} [options] Override http request option.
588
853
  * @throws {RequiredError}
589
854
  */
@@ -644,18 +909,93 @@ export const AdminConnectionsApiAxiosParamCreator = function (configuration) {
644
909
  options: localVarRequestOptions,
645
910
  };
646
911
  }),
912
+ /**
913
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
914
+ * @summary Get connection detail
915
+ * @param {number} id
916
+ * @param {*} [options] Override http request option.
917
+ * @throws {RequiredError}
918
+ */
919
+ getConnection: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
920
+ // verify required parameter 'id' is not null or undefined
921
+ assertParamExists('getConnection', 'id', id);
922
+ const localVarPath = `/admin/connection/{id}`
923
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
924
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
925
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
926
+ let baseOptions;
927
+ if (configuration) {
928
+ baseOptions = configuration.baseOptions;
929
+ }
930
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
931
+ const localVarHeaderParameter = {};
932
+ const localVarQueryParameter = {};
933
+ // authentication DiscordAuth required
934
+ // http bearer authentication required
935
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
936
+ localVarHeaderParameter['Accept'] = 'application/json';
937
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
938
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
939
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
940
+ return {
941
+ url: toPathString(localVarUrlObj),
942
+ options: localVarRequestOptions,
943
+ };
944
+ }),
945
+ /**
946
+ * 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.
947
+ * @summary List players who have used this connection
948
+ * @param {number} id
949
+ * @param {Pageable} pageable
950
+ * @param {*} [options] Override http request option.
951
+ * @throws {RequiredError}
952
+ */
953
+ getConnectionPlayers: (id_1, pageable_1, ...args_1) => __awaiter(this, [id_1, pageable_1, ...args_1], void 0, function* (id, pageable, options = {}) {
954
+ // verify required parameter 'id' is not null or undefined
955
+ assertParamExists('getConnectionPlayers', 'id', id);
956
+ // verify required parameter 'pageable' is not null or undefined
957
+ assertParamExists('getConnectionPlayers', 'pageable', pageable);
958
+ const localVarPath = `/admin/connection/{id}/players`
959
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
960
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
961
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
962
+ let baseOptions;
963
+ if (configuration) {
964
+ baseOptions = configuration.baseOptions;
965
+ }
966
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
967
+ const localVarHeaderParameter = {};
968
+ const localVarQueryParameter = {};
969
+ // authentication DiscordAuth required
970
+ // http bearer authentication required
971
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
972
+ if (pageable !== undefined) {
973
+ localVarQueryParameter['pageable'] = pageable;
974
+ }
975
+ localVarHeaderParameter['Accept'] = 'application/json';
976
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
977
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
978
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
979
+ return {
980
+ url: toPathString(localVarUrlObj),
981
+ options: localVarRequestOptions,
982
+ };
983
+ }),
647
984
  /**
648
985
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
649
986
  * @summary List all connections (paginated)
650
- * @param {string | null} [ipAddress] Filter by IP address
651
- * @param {string | null} [uuid] Filter by player UUID
652
- * @param {boolean | null} [isVpn] Filter by VPN status
653
- * @param {number | null} [page] Page number (1-indexed)
654
- * @param {number | null} [limit] Page size
987
+ * @param {Pageable} pageable
988
+ * @param {number | null} [createdAfter]
989
+ * @param {number | null} [createdBefore]
990
+ * @param {string | null} [ipAddress]
991
+ * @param {string | null} [uuid]
992
+ * @param {boolean | null} [isVpn]
655
993
  * @param {*} [options] Override http request option.
656
994
  * @throws {RequiredError}
657
995
  */
658
- 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 = {}) {
996
+ 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 = {}) {
997
+ // verify required parameter 'pageable' is not null or undefined
998
+ assertParamExists('listAllConnections', 'pageable', pageable);
659
999
  const localVarPath = `/admin/connection`;
660
1000
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
661
1001
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -669,6 +1009,12 @@ export const AdminConnectionsApiAxiosParamCreator = function (configuration) {
669
1009
  // authentication DiscordAuth required
670
1010
  // http bearer authentication required
671
1011
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1012
+ if (createdAfter !== undefined) {
1013
+ localVarQueryParameter['createdAfter'] = createdAfter;
1014
+ }
1015
+ if (createdBefore !== undefined) {
1016
+ localVarQueryParameter['createdBefore'] = createdBefore;
1017
+ }
672
1018
  if (ipAddress !== undefined) {
673
1019
  localVarQueryParameter['ipAddress'] = ipAddress;
674
1020
  }
@@ -678,11 +1024,8 @@ export const AdminConnectionsApiAxiosParamCreator = function (configuration) {
678
1024
  if (isVpn !== undefined) {
679
1025
  localVarQueryParameter['isVpn'] = isVpn;
680
1026
  }
681
- if (page !== undefined) {
682
- localVarQueryParameter['page'] = page;
683
- }
684
- if (limit !== undefined) {
685
- localVarQueryParameter['limit'] = limit;
1027
+ if (pageable !== undefined) {
1028
+ localVarQueryParameter['pageable'] = pageable;
686
1029
  }
687
1030
  localVarHeaderParameter['Accept'] = 'application/json';
688
1031
  setSearchParams(localVarUrlObj, localVarQueryParameter);
@@ -696,17 +1039,18 @@ export const AdminConnectionsApiAxiosParamCreator = function (configuration) {
696
1039
  /**
697
1040
  * 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).
698
1041
  * @summary List recent connections
699
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
700
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
701
- * @param {string | null} [ipAddress] Filter by IP address
702
- * @param {string | null} [uuid] Filter by player UUID
703
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
704
- * @param {number | null} [page] Page number for pagination
705
- * @param {number | null} [limit] Maximum number of records to return
1042
+ * @param {Pageable} pageable
1043
+ * @param {number | null} [createdAfter]
1044
+ * @param {number | null} [createdBefore]
1045
+ * @param {string | null} [ipAddress]
1046
+ * @param {string | null} [uuid]
1047
+ * @param {boolean | null} [isVpn]
706
1048
  * @param {*} [options] Override http request option.
707
1049
  * @throws {RequiredError}
708
1050
  */
709
- 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 = {}) {
1051
+ 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 = {}) {
1052
+ // verify required parameter 'pageable' is not null or undefined
1053
+ assertParamExists('listConnections', 'pageable', pageable);
710
1054
  const localVarPath = `/admin/connection/recent`;
711
1055
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
712
1056
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -735,11 +1079,8 @@ export const AdminConnectionsApiAxiosParamCreator = function (configuration) {
735
1079
  if (isVpn !== undefined) {
736
1080
  localVarQueryParameter['isVpn'] = isVpn;
737
1081
  }
738
- if (page !== undefined) {
739
- localVarQueryParameter['page'] = page;
740
- }
741
- if (limit !== undefined) {
742
- localVarQueryParameter['limit'] = limit;
1082
+ if (pageable !== undefined) {
1083
+ localVarQueryParameter['pageable'] = pageable;
743
1084
  }
744
1085
  localVarHeaderParameter['Accept'] = 'application/json';
745
1086
  setSearchParams(localVarUrlObj, localVarQueryParameter);
@@ -796,8 +1137,8 @@ export const AdminConnectionsApiFp = function (configuration) {
796
1137
  const localVarAxiosParamCreator = AdminConnectionsApiAxiosParamCreator(configuration);
797
1138
  return {
798
1139
  /**
799
- * 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.
800
- * @summary Backfill missing location data
1140
+ * 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.
1141
+ * @summary Start a location backfill job
801
1142
  * @param {*} [options] Override http request option.
802
1143
  * @throws {RequiredError}
803
1144
  */
@@ -826,21 +1167,55 @@ export const AdminConnectionsApiFp = function (configuration) {
826
1167
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
827
1168
  });
828
1169
  },
1170
+ /**
1171
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
1172
+ * @summary Get connection detail
1173
+ * @param {number} id
1174
+ * @param {*} [options] Override http request option.
1175
+ * @throws {RequiredError}
1176
+ */
1177
+ getConnection(id, options) {
1178
+ return __awaiter(this, void 0, void 0, function* () {
1179
+ var _a, _b, _c;
1180
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getConnection(id, options);
1181
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1182
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminConnectionsApi.getConnection']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1183
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1184
+ });
1185
+ },
1186
+ /**
1187
+ * 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.
1188
+ * @summary List players who have used this connection
1189
+ * @param {number} id
1190
+ * @param {Pageable} pageable
1191
+ * @param {*} [options] Override http request option.
1192
+ * @throws {RequiredError}
1193
+ */
1194
+ getConnectionPlayers(id, pageable, options) {
1195
+ return __awaiter(this, void 0, void 0, function* () {
1196
+ var _a, _b, _c;
1197
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getConnectionPlayers(id, pageable, options);
1198
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1199
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminConnectionsApi.getConnectionPlayers']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1200
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1201
+ });
1202
+ },
829
1203
  /**
830
1204
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
831
1205
  * @summary List all connections (paginated)
832
- * @param {string | null} [ipAddress] Filter by IP address
833
- * @param {string | null} [uuid] Filter by player UUID
834
- * @param {boolean | null} [isVpn] Filter by VPN status
835
- * @param {number | null} [page] Page number (1-indexed)
836
- * @param {number | null} [limit] Page size
1206
+ * @param {Pageable} pageable
1207
+ * @param {number | null} [createdAfter]
1208
+ * @param {number | null} [createdBefore]
1209
+ * @param {string | null} [ipAddress]
1210
+ * @param {string | null} [uuid]
1211
+ * @param {boolean | null} [isVpn]
837
1212
  * @param {*} [options] Override http request option.
838
1213
  * @throws {RequiredError}
839
1214
  */
840
- listAllConnections(ipAddress, uuid, isVpn, page, limit, options) {
1215
+ listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
841
1216
  return __awaiter(this, void 0, void 0, function* () {
842
1217
  var _a, _b, _c;
843
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listAllConnections(ipAddress, uuid, isVpn, page, limit, options);
1218
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options);
844
1219
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
845
1220
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminConnectionsApi.listAllConnections']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
846
1221
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -849,20 +1224,19 @@ export const AdminConnectionsApiFp = function (configuration) {
849
1224
  /**
850
1225
  * 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).
851
1226
  * @summary List recent connections
852
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
853
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
854
- * @param {string | null} [ipAddress] Filter by IP address
855
- * @param {string | null} [uuid] Filter by player UUID
856
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
857
- * @param {number | null} [page] Page number for pagination
858
- * @param {number | null} [limit] Maximum number of records to return
1227
+ * @param {Pageable} pageable
1228
+ * @param {number | null} [createdAfter]
1229
+ * @param {number | null} [createdBefore]
1230
+ * @param {string | null} [ipAddress]
1231
+ * @param {string | null} [uuid]
1232
+ * @param {boolean | null} [isVpn]
859
1233
  * @param {*} [options] Override http request option.
860
1234
  * @throws {RequiredError}
861
1235
  */
862
- listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options) {
1236
+ listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
863
1237
  return __awaiter(this, void 0, void 0, function* () {
864
1238
  var _a, _b, _c;
865
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options);
1239
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options);
866
1240
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
867
1241
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminConnectionsApi.listConnections']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
868
1242
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -894,8 +1268,8 @@ export const AdminConnectionsApiFactory = function (configuration, basePath, axi
894
1268
  const localVarFp = AdminConnectionsApiFp(configuration);
895
1269
  return {
896
1270
  /**
897
- * 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.
898
- * @summary Backfill missing location data
1271
+ * 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.
1272
+ * @summary Start a location backfill job
899
1273
  * @param {*} [options] Override http request option.
900
1274
  * @throws {RequiredError}
901
1275
  */
@@ -912,35 +1286,56 @@ export const AdminConnectionsApiFactory = function (configuration, basePath, axi
912
1286
  createBypass(createBypassRequest, options) {
913
1287
  return localVarFp.createBypass(createBypassRequest, options).then((request) => request(axios, basePath));
914
1288
  },
1289
+ /**
1290
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
1291
+ * @summary Get connection detail
1292
+ * @param {number} id
1293
+ * @param {*} [options] Override http request option.
1294
+ * @throws {RequiredError}
1295
+ */
1296
+ getConnection(id, options) {
1297
+ return localVarFp.getConnection(id, options).then((request) => request(axios, basePath));
1298
+ },
1299
+ /**
1300
+ * 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.
1301
+ * @summary List players who have used this connection
1302
+ * @param {number} id
1303
+ * @param {Pageable} pageable
1304
+ * @param {*} [options] Override http request option.
1305
+ * @throws {RequiredError}
1306
+ */
1307
+ getConnectionPlayers(id, pageable, options) {
1308
+ return localVarFp.getConnectionPlayers(id, pageable, options).then((request) => request(axios, basePath));
1309
+ },
915
1310
  /**
916
1311
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
917
1312
  * @summary List all connections (paginated)
918
- * @param {string | null} [ipAddress] Filter by IP address
919
- * @param {string | null} [uuid] Filter by player UUID
920
- * @param {boolean | null} [isVpn] Filter by VPN status
921
- * @param {number | null} [page] Page number (1-indexed)
922
- * @param {number | null} [limit] Page size
1313
+ * @param {Pageable} pageable
1314
+ * @param {number | null} [createdAfter]
1315
+ * @param {number | null} [createdBefore]
1316
+ * @param {string | null} [ipAddress]
1317
+ * @param {string | null} [uuid]
1318
+ * @param {boolean | null} [isVpn]
923
1319
  * @param {*} [options] Override http request option.
924
1320
  * @throws {RequiredError}
925
1321
  */
926
- listAllConnections(ipAddress, uuid, isVpn, page, limit, options) {
927
- return localVarFp.listAllConnections(ipAddress, uuid, isVpn, page, limit, options).then((request) => request(axios, basePath));
1322
+ listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1323
+ return localVarFp.listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
928
1324
  },
929
1325
  /**
930
1326
  * 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).
931
1327
  * @summary List recent connections
932
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
933
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
934
- * @param {string | null} [ipAddress] Filter by IP address
935
- * @param {string | null} [uuid] Filter by player UUID
936
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
937
- * @param {number | null} [page] Page number for pagination
938
- * @param {number | null} [limit] Maximum number of records to return
1328
+ * @param {Pageable} pageable
1329
+ * @param {number | null} [createdAfter]
1330
+ * @param {number | null} [createdBefore]
1331
+ * @param {string | null} [ipAddress]
1332
+ * @param {string | null} [uuid]
1333
+ * @param {boolean | null} [isVpn]
939
1334
  * @param {*} [options] Override http request option.
940
1335
  * @throws {RequiredError}
941
1336
  */
942
- listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options) {
943
- return localVarFp.listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options).then((request) => request(axios, basePath));
1337
+ listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1338
+ return localVarFp.listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
944
1339
  },
945
1340
  /**
946
1341
  * 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.
@@ -960,8 +1355,8 @@ export const AdminConnectionsApiFactory = function (configuration, basePath, axi
960
1355
  */
961
1356
  export class AdminConnectionsApi extends BaseAPI {
962
1357
  /**
963
- * 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.
964
- * @summary Backfill missing location data
1358
+ * 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.
1359
+ * @summary Start a location backfill job
965
1360
  * @param {*} [options] Override http request option.
966
1361
  * @throws {RequiredError}
967
1362
  */
@@ -978,35 +1373,56 @@ export class AdminConnectionsApi extends BaseAPI {
978
1373
  createBypass(createBypassRequest, options) {
979
1374
  return AdminConnectionsApiFp(this.configuration).createBypass(createBypassRequest, options).then((request) => request(this.axios, this.basePath));
980
1375
  }
1376
+ /**
1377
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
1378
+ * @summary Get connection detail
1379
+ * @param {number} id
1380
+ * @param {*} [options] Override http request option.
1381
+ * @throws {RequiredError}
1382
+ */
1383
+ getConnection(id, options) {
1384
+ return AdminConnectionsApiFp(this.configuration).getConnection(id, options).then((request) => request(this.axios, this.basePath));
1385
+ }
1386
+ /**
1387
+ * 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.
1388
+ * @summary List players who have used this connection
1389
+ * @param {number} id
1390
+ * @param {Pageable} pageable
1391
+ * @param {*} [options] Override http request option.
1392
+ * @throws {RequiredError}
1393
+ */
1394
+ getConnectionPlayers(id, pageable, options) {
1395
+ return AdminConnectionsApiFp(this.configuration).getConnectionPlayers(id, pageable, options).then((request) => request(this.axios, this.basePath));
1396
+ }
981
1397
  /**
982
1398
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
983
1399
  * @summary List all connections (paginated)
984
- * @param {string | null} [ipAddress] Filter by IP address
985
- * @param {string | null} [uuid] Filter by player UUID
986
- * @param {boolean | null} [isVpn] Filter by VPN status
987
- * @param {number | null} [page] Page number (1-indexed)
988
- * @param {number | null} [limit] Page size
1400
+ * @param {Pageable} pageable
1401
+ * @param {number | null} [createdAfter]
1402
+ * @param {number | null} [createdBefore]
1403
+ * @param {string | null} [ipAddress]
1404
+ * @param {string | null} [uuid]
1405
+ * @param {boolean | null} [isVpn]
989
1406
  * @param {*} [options] Override http request option.
990
1407
  * @throws {RequiredError}
991
1408
  */
992
- listAllConnections(ipAddress, uuid, isVpn, page, limit, options) {
993
- return AdminConnectionsApiFp(this.configuration).listAllConnections(ipAddress, uuid, isVpn, page, limit, options).then((request) => request(this.axios, this.basePath));
1409
+ listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1410
+ return AdminConnectionsApiFp(this.configuration).listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
994
1411
  }
995
1412
  /**
996
1413
  * 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).
997
1414
  * @summary List recent connections
998
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
999
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
1000
- * @param {string | null} [ipAddress] Filter by IP address
1001
- * @param {string | null} [uuid] Filter by player UUID
1002
- * @param {boolean | null} [isVpn] Filter by VPN status (true=VPN, false=not VPN)
1003
- * @param {number | null} [page] Page number for pagination
1004
- * @param {number | null} [limit] Maximum number of records to return
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]
1005
1421
  * @param {*} [options] Override http request option.
1006
1422
  * @throws {RequiredError}
1007
1423
  */
1008
- listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options) {
1009
- return AdminConnectionsApiFp(this.configuration).listConnections(createdAfter, createdBefore, ipAddress, uuid, isVpn, page, limit, options).then((request) => request(this.axios, this.basePath));
1424
+ listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options) {
1425
+ return AdminConnectionsApiFp(this.configuration).listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
1010
1426
  }
1011
1427
  /**
1012
1428
  * 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.
@@ -1111,35 +1527,34 @@ export class AdminDashboardApi extends BaseAPI {
1111
1527
  }
1112
1528
  }
1113
1529
  /**
1114
- * AdminPlayersApi - axios parameter creator
1530
+ * AdminJobsApi - axios parameter creator
1115
1531
  */
1116
- export const AdminPlayersApiAxiosParamCreator = function (configuration) {
1532
+ export const AdminJobsApiAxiosParamCreator = function (configuration) {
1117
1533
  return {
1118
1534
  /**
1119
- * Returns full detail for a single player including all known usernames and punishment scoring.
1120
- * @summary Get player detail
1121
- * @param {string} uuid Player Minecraft UUID
1535
+ * 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.
1536
+ * @summary Request cancellation of an async job
1537
+ * @param {string} id Job id
1122
1538
  * @param {*} [options] Override http request option.
1123
1539
  * @throws {RequiredError}
1124
1540
  */
1125
- getPlayer: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
1126
- // verify required parameter 'uuid' is not null or undefined
1127
- assertParamExists('getPlayer', 'uuid', uuid);
1128
- const localVarPath = `/admin/player/{uuid}`
1129
- .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
1541
+ cancel: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
1542
+ // verify required parameter 'id' is not null or undefined
1543
+ assertParamExists('cancel', 'id', id);
1544
+ const localVarPath = `/admin/job/{id}`
1545
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
1130
1546
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1131
1547
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1132
1548
  let baseOptions;
1133
1549
  if (configuration) {
1134
1550
  baseOptions = configuration.baseOptions;
1135
1551
  }
1136
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1552
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
1137
1553
  const localVarHeaderParameter = {};
1138
1554
  const localVarQueryParameter = {};
1139
1555
  // authentication DiscordAuth required
1140
1556
  // http bearer authentication required
1141
1557
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1142
- localVarHeaderParameter['Accept'] = 'application/json';
1143
1558
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1144
1559
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1145
1560
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
@@ -1149,20 +1564,17 @@ export const AdminPlayersApiAxiosParamCreator = function (configuration) {
1149
1564
  };
1150
1565
  }),
1151
1566
  /**
1152
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1153
- * @summary List players
1154
- * @param {number} page Page number (1-indexed)
1155
- * @param {number} limit Page size
1156
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1567
+ * 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).
1568
+ * @summary Download a job\'s CSV artifact
1569
+ * @param {string} id Job id
1157
1570
  * @param {*} [options] Override http request option.
1158
1571
  * @throws {RequiredError}
1159
1572
  */
1160
- 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 = {}) {
1161
- // verify required parameter 'page' is not null or undefined
1162
- assertParamExists('listPlayers', 'page', page);
1163
- // verify required parameter 'limit' is not null or undefined
1164
- assertParamExists('listPlayers', 'limit', limit);
1165
- const localVarPath = `/admin/player`;
1573
+ downloadArtifact: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
1574
+ // verify required parameter 'id' is not null or undefined
1575
+ assertParamExists('downloadArtifact', 'id', id);
1576
+ const localVarPath = `/admin/job/{id}/artifact.csv`
1577
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
1166
1578
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1167
1579
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1168
1580
  let baseOptions;
@@ -1175,14 +1587,77 @@ export const AdminPlayersApiAxiosParamCreator = function (configuration) {
1175
1587
  // authentication DiscordAuth required
1176
1588
  // http bearer authentication required
1177
1589
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1178
- if (search !== undefined) {
1179
- localVarQueryParameter['search'] = search;
1590
+ localVarHeaderParameter['Accept'] = 'text/csv';
1591
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1592
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1593
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1594
+ return {
1595
+ url: toPathString(localVarUrlObj),
1596
+ options: localVarRequestOptions,
1597
+ };
1598
+ }),
1599
+ /**
1600
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1601
+ * @summary Get one async job
1602
+ * @param {string} id Job id
1603
+ * @param {*} [options] Override http request option.
1604
+ * @throws {RequiredError}
1605
+ */
1606
+ get: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
1607
+ // verify required parameter 'id' is not null or undefined
1608
+ assertParamExists('get', 'id', id);
1609
+ const localVarPath = `/admin/job/{id}`
1610
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
1611
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1612
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1613
+ let baseOptions;
1614
+ if (configuration) {
1615
+ baseOptions = configuration.baseOptions;
1616
+ }
1617
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1618
+ const localVarHeaderParameter = {};
1619
+ const localVarQueryParameter = {};
1620
+ // authentication DiscordAuth required
1621
+ // http bearer authentication required
1622
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1623
+ localVarHeaderParameter['Accept'] = 'application/json';
1624
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
1625
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1626
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1627
+ return {
1628
+ url: toPathString(localVarUrlObj),
1629
+ options: localVarRequestOptions,
1630
+ };
1631
+ }),
1632
+ /**
1633
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1634
+ * @summary List async jobs
1635
+ * @param {Pageable} pageable
1636
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1637
+ * @param {*} [options] Override http request option.
1638
+ * @throws {RequiredError}
1639
+ */
1640
+ list: (pageable_1, status_1, ...args_1) => __awaiter(this, [pageable_1, status_1, ...args_1], void 0, function* (pageable, status, options = {}) {
1641
+ // verify required parameter 'pageable' is not null or undefined
1642
+ assertParamExists('list', 'pageable', pageable);
1643
+ const localVarPath = `/admin/job`;
1644
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
1645
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1646
+ let baseOptions;
1647
+ if (configuration) {
1648
+ baseOptions = configuration.baseOptions;
1180
1649
  }
1181
- if (page !== undefined) {
1182
- localVarQueryParameter['page'] = page;
1650
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1651
+ const localVarHeaderParameter = {};
1652
+ const localVarQueryParameter = {};
1653
+ // authentication DiscordAuth required
1654
+ // http bearer authentication required
1655
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1656
+ if (status !== undefined) {
1657
+ localVarQueryParameter['status'] = status;
1183
1658
  }
1184
- if (limit !== undefined) {
1185
- localVarQueryParameter['limit'] = limit;
1659
+ if (pageable !== undefined) {
1660
+ localVarQueryParameter['pageable'] = pageable;
1186
1661
  }
1187
1662
  localVarHeaderParameter['Accept'] = 'application/json';
1188
1663
  setSearchParams(localVarUrlObj, localVarQueryParameter);
@@ -1196,120 +1671,193 @@ export const AdminPlayersApiAxiosParamCreator = function (configuration) {
1196
1671
  };
1197
1672
  };
1198
1673
  /**
1199
- * AdminPlayersApi - functional programming interface
1674
+ * AdminJobsApi - functional programming interface
1200
1675
  */
1201
- export const AdminPlayersApiFp = function (configuration) {
1202
- const localVarAxiosParamCreator = AdminPlayersApiAxiosParamCreator(configuration);
1676
+ export const AdminJobsApiFp = function (configuration) {
1677
+ const localVarAxiosParamCreator = AdminJobsApiAxiosParamCreator(configuration);
1203
1678
  return {
1204
1679
  /**
1205
- * Returns full detail for a single player including all known usernames and punishment scoring.
1206
- * @summary Get player detail
1207
- * @param {string} uuid Player Minecraft UUID
1680
+ * 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.
1681
+ * @summary Request cancellation of an async job
1682
+ * @param {string} id Job id
1208
1683
  * @param {*} [options] Override http request option.
1209
1684
  * @throws {RequiredError}
1210
1685
  */
1211
- getPlayer(uuid, options) {
1686
+ cancel(id, options) {
1212
1687
  return __awaiter(this, void 0, void 0, function* () {
1213
1688
  var _a, _b, _c;
1214
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayer(uuid, options);
1689
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.cancel(id, options);
1215
1690
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1216
- const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getPlayer']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1691
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminJobsApi.cancel']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1217
1692
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1218
1693
  });
1219
1694
  },
1220
1695
  /**
1221
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1222
- * @summary List players
1223
- * @param {number} page Page number (1-indexed)
1224
- * @param {number} limit Page size
1225
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1696
+ * 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).
1697
+ * @summary Download a job\'s CSV artifact
1698
+ * @param {string} id Job id
1226
1699
  * @param {*} [options] Override http request option.
1227
1700
  * @throws {RequiredError}
1228
1701
  */
1229
- listPlayers(page, limit, search, options) {
1702
+ downloadArtifact(id, options) {
1230
1703
  return __awaiter(this, void 0, void 0, function* () {
1231
1704
  var _a, _b, _c;
1232
- const localVarAxiosArgs = yield localVarAxiosParamCreator.listPlayers(page, limit, search, options);
1705
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.downloadArtifact(id, options);
1233
1706
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1234
- const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.listPlayers']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1707
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminJobsApi.downloadArtifact']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1708
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1709
+ });
1710
+ },
1711
+ /**
1712
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1713
+ * @summary Get one async job
1714
+ * @param {string} id Job id
1715
+ * @param {*} [options] Override http request option.
1716
+ * @throws {RequiredError}
1717
+ */
1718
+ get(id, options) {
1719
+ return __awaiter(this, void 0, void 0, function* () {
1720
+ var _a, _b, _c;
1721
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.get(id, options);
1722
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1723
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminJobsApi.get']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1724
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1725
+ });
1726
+ },
1727
+ /**
1728
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1729
+ * @summary List async jobs
1730
+ * @param {Pageable} pageable
1731
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1732
+ * @param {*} [options] Override http request option.
1733
+ * @throws {RequiredError}
1734
+ */
1735
+ list(pageable, status, options) {
1736
+ return __awaiter(this, void 0, void 0, function* () {
1737
+ var _a, _b, _c;
1738
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.list(pageable, status, options);
1739
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1740
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminJobsApi.list']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1235
1741
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1236
1742
  });
1237
1743
  },
1238
1744
  };
1239
1745
  };
1240
1746
  /**
1241
- * AdminPlayersApi - factory interface
1747
+ * AdminJobsApi - factory interface
1242
1748
  */
1243
- export const AdminPlayersApiFactory = function (configuration, basePath, axios) {
1244
- const localVarFp = AdminPlayersApiFp(configuration);
1749
+ export const AdminJobsApiFactory = function (configuration, basePath, axios) {
1750
+ const localVarFp = AdminJobsApiFp(configuration);
1245
1751
  return {
1246
1752
  /**
1247
- * Returns full detail for a single player including all known usernames and punishment scoring.
1248
- * @summary Get player detail
1249
- * @param {string} uuid Player Minecraft UUID
1753
+ * 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.
1754
+ * @summary Request cancellation of an async job
1755
+ * @param {string} id Job id
1250
1756
  * @param {*} [options] Override http request option.
1251
1757
  * @throws {RequiredError}
1252
1758
  */
1253
- getPlayer(uuid, options) {
1254
- return localVarFp.getPlayer(uuid, options).then((request) => request(axios, basePath));
1759
+ cancel(id, options) {
1760
+ return localVarFp.cancel(id, options).then((request) => request(axios, basePath));
1255
1761
  },
1256
1762
  /**
1257
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1258
- * @summary List players
1259
- * @param {number} page Page number (1-indexed)
1260
- * @param {number} limit Page size
1261
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1763
+ * 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).
1764
+ * @summary Download a job\'s CSV artifact
1765
+ * @param {string} id Job id
1766
+ * @param {*} [options] Override http request option.
1767
+ * @throws {RequiredError}
1768
+ */
1769
+ downloadArtifact(id, options) {
1770
+ return localVarFp.downloadArtifact(id, options).then((request) => request(axios, basePath));
1771
+ },
1772
+ /**
1773
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1774
+ * @summary Get one async job
1775
+ * @param {string} id Job id
1776
+ * @param {*} [options] Override http request option.
1777
+ * @throws {RequiredError}
1778
+ */
1779
+ get(id, options) {
1780
+ return localVarFp.get(id, options).then((request) => request(axios, basePath));
1781
+ },
1782
+ /**
1783
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1784
+ * @summary List async jobs
1785
+ * @param {Pageable} pageable
1786
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1262
1787
  * @param {*} [options] Override http request option.
1263
1788
  * @throws {RequiredError}
1264
1789
  */
1265
- listPlayers(page, limit, search, options) {
1266
- return localVarFp.listPlayers(page, limit, search, options).then((request) => request(axios, basePath));
1790
+ list(pageable, status, options) {
1791
+ return localVarFp.list(pageable, status, options).then((request) => request(axios, basePath));
1267
1792
  },
1268
1793
  };
1269
1794
  };
1270
1795
  /**
1271
- * AdminPlayersApi - object-oriented interface
1796
+ * AdminJobsApi - object-oriented interface
1272
1797
  */
1273
- export class AdminPlayersApi extends BaseAPI {
1798
+ export class AdminJobsApi extends BaseAPI {
1274
1799
  /**
1275
- * Returns full detail for a single player including all known usernames and punishment scoring.
1276
- * @summary Get player detail
1277
- * @param {string} uuid Player Minecraft UUID
1800
+ * 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.
1801
+ * @summary Request cancellation of an async job
1802
+ * @param {string} id Job id
1278
1803
  * @param {*} [options] Override http request option.
1279
1804
  * @throws {RequiredError}
1280
1805
  */
1281
- getPlayer(uuid, options) {
1282
- return AdminPlayersApiFp(this.configuration).getPlayer(uuid, options).then((request) => request(this.axios, this.basePath));
1806
+ cancel(id, options) {
1807
+ return AdminJobsApiFp(this.configuration).cancel(id, options).then((request) => request(this.axios, this.basePath));
1283
1808
  }
1284
1809
  /**
1285
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1286
- * @summary List players
1287
- * @param {number} page Page number (1-indexed)
1288
- * @param {number} limit Page size
1289
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1810
+ * 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).
1811
+ * @summary Download a job\'s CSV artifact
1812
+ * @param {string} id Job id
1813
+ * @param {*} [options] Override http request option.
1814
+ * @throws {RequiredError}
1815
+ */
1816
+ downloadArtifact(id, options) {
1817
+ return AdminJobsApiFp(this.configuration).downloadArtifact(id, options).then((request) => request(this.axios, this.basePath));
1818
+ }
1819
+ /**
1820
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
1821
+ * @summary Get one async job
1822
+ * @param {string} id Job id
1823
+ * @param {*} [options] Override http request option.
1824
+ * @throws {RequiredError}
1825
+ */
1826
+ get(id, options) {
1827
+ return AdminJobsApiFp(this.configuration).get(id, options).then((request) => request(this.axios, this.basePath));
1828
+ }
1829
+ /**
1830
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
1831
+ * @summary List async jobs
1832
+ * @param {Pageable} pageable
1833
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
1290
1834
  * @param {*} [options] Override http request option.
1291
1835
  * @throws {RequiredError}
1292
1836
  */
1293
- listPlayers(page, limit, search, options) {
1294
- return AdminPlayersApiFp(this.configuration).listPlayers(page, limit, search, options).then((request) => request(this.axios, this.basePath));
1837
+ list(pageable, status, options) {
1838
+ return AdminJobsApiFp(this.configuration).list(pageable, status, options).then((request) => request(this.axios, this.basePath));
1295
1839
  }
1296
1840
  }
1297
1841
  /**
1298
- * AdminPunishmentsApi - axios parameter creator
1842
+ * AdminPlayersApi - axios parameter creator
1299
1843
  */
1300
- export const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
1844
+ export const AdminPlayersApiAxiosParamCreator = function (configuration) {
1301
1845
  return {
1302
1846
  /**
1303
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1304
- * @summary Apply punishment
1305
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1847
+ * 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.
1848
+ * @summary Add an alt exemption
1849
+ * @param {string} uuid Player Minecraft UUID
1850
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
1306
1851
  * @param {*} [options] Override http request option.
1307
1852
  * @throws {RequiredError}
1308
1853
  */
1309
- applyPunishment: (adminApplyPunishmentRequest_1, ...args_1) => __awaiter(this, [adminApplyPunishmentRequest_1, ...args_1], void 0, function* (adminApplyPunishmentRequest, options = {}) {
1310
- // verify required parameter 'adminApplyPunishmentRequest' is not null or undefined
1311
- assertParamExists('applyPunishment', 'adminApplyPunishmentRequest', adminApplyPunishmentRequest);
1312
- const localVarPath = `/admin/punishment/apply`;
1854
+ addAltExemption: (uuid_1, adminCreateAltExemptionRequest_1, ...args_1) => __awaiter(this, [uuid_1, adminCreateAltExemptionRequest_1, ...args_1], void 0, function* (uuid, adminCreateAltExemptionRequest, options = {}) {
1855
+ // verify required parameter 'uuid' is not null or undefined
1856
+ assertParamExists('addAltExemption', 'uuid', uuid);
1857
+ // verify required parameter 'adminCreateAltExemptionRequest' is not null or undefined
1858
+ assertParamExists('addAltExemption', 'adminCreateAltExemptionRequest', adminCreateAltExemptionRequest);
1859
+ const localVarPath = `/admin/player/{uuid}/alt-exemption`
1860
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
1313
1861
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1314
1862
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1315
1863
  let baseOptions;
@@ -1323,27 +1871,23 @@ export const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
1323
1871
  // http bearer authentication required
1324
1872
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1325
1873
  localVarHeaderParameter['Content-Type'] = 'application/json';
1326
- localVarHeaderParameter['Accept'] = 'application/json';
1327
1874
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1328
1875
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1329
1876
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1330
- localVarRequestOptions.data = serializeDataIfNeeded(adminApplyPunishmentRequest, localVarRequestOptions, configuration);
1877
+ localVarRequestOptions.data = serializeDataIfNeeded(adminCreateAltExemptionRequest, localVarRequestOptions, configuration);
1331
1878
  return {
1332
1879
  url: toPathString(localVarUrlObj),
1333
1880
  options: localVarRequestOptions,
1334
1881
  };
1335
1882
  }),
1336
1883
  /**
1337
- * Preview the impact of a punishment across one or more targets. No changes are made.
1338
- * @summary Evaluate punishment impact
1339
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
1884
+ * 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.
1885
+ * @summary Start a username backfill job
1340
1886
  * @param {*} [options] Override http request option.
1341
1887
  * @throws {RequiredError}
1342
1888
  */
1343
- createDraft: (adminCreatePunishmentDraftRequest_1, ...args_1) => __awaiter(this, [adminCreatePunishmentDraftRequest_1, ...args_1], void 0, function* (adminCreatePunishmentDraftRequest, options = {}) {
1344
- // verify required parameter 'adminCreatePunishmentDraftRequest' is not null or undefined
1345
- assertParamExists('createDraft', 'adminCreatePunishmentDraftRequest', adminCreatePunishmentDraftRequest);
1346
- const localVarPath = `/admin/punishment/draft`;
1889
+ backfillUsernames: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
1890
+ const localVarPath = `/admin/player/backfill-usernames`;
1347
1891
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1348
1892
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1349
1893
  let baseOptions;
@@ -1356,303 +1900,2210 @@ export const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
1356
1900
  // authentication DiscordAuth required
1357
1901
  // http bearer authentication required
1358
1902
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1359
- localVarHeaderParameter['Content-Type'] = 'application/json';
1360
1903
  localVarHeaderParameter['Accept'] = 'application/json';
1361
1904
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1362
1905
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1363
1906
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1364
- localVarRequestOptions.data = serializeDataIfNeeded(adminCreatePunishmentDraftRequest, localVarRequestOptions, configuration);
1365
1907
  return {
1366
1908
  url: toPathString(localVarUrlObj),
1367
1909
  options: localVarRequestOptions,
1368
1910
  };
1369
1911
  }),
1370
1912
  /**
1371
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1372
- * @summary List punishments
1373
- * @param {number} page Page number (1-indexed)
1374
- * @param {number} limit Page size
1375
- * @param {string | null} [uuid] Filter by player UUID
1376
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1377
- * @param {string | null} [ipAddress] Filter by IP address
1378
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1379
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1380
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
1381
- * @param {*} [options] Override http request option.
1382
- * @throws {RequiredError}
1383
- */
1384
- 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 = {}) {
1385
- // verify required parameter 'page' is not null or undefined
1386
- assertParamExists('getPunishments', 'page', page);
1387
- // verify required parameter 'limit' is not null or undefined
1388
- assertParamExists('getPunishments', 'limit', limit);
1389
- const localVarPath = `/admin/punishment`;
1913
+ * 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.
1914
+ * @summary Bulk-revoke PROPAGATED links by source
1915
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
1916
+ * @param {*} [options] Override http request option.
1917
+ * @throws {RequiredError}
1918
+ */
1919
+ bulkRevokePropagated: (adminBulkRevokeRequest_1, ...args_1) => __awaiter(this, [adminBulkRevokeRequest_1, ...args_1], void 0, function* (adminBulkRevokeRequest, options = {}) {
1920
+ // verify required parameter 'adminBulkRevokeRequest' is not null or undefined
1921
+ assertParamExists('bulkRevokePropagated', 'adminBulkRevokeRequest', adminBulkRevokeRequest);
1922
+ const localVarPath = `/admin/player/player-punishment/bulk-revoke`;
1390
1923
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1391
1924
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1392
1925
  let baseOptions;
1393
1926
  if (configuration) {
1394
1927
  baseOptions = configuration.baseOptions;
1395
1928
  }
1396
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1929
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1397
1930
  const localVarHeaderParameter = {};
1398
1931
  const localVarQueryParameter = {};
1399
1932
  // authentication DiscordAuth required
1400
1933
  // http bearer authentication required
1401
1934
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1402
- if (uuid !== undefined) {
1403
- localVarQueryParameter['uuid'] = uuid;
1404
- }
1405
- if (username !== undefined) {
1406
- localVarQueryParameter['username'] = username;
1407
- }
1408
- if (ipAddress !== undefined) {
1409
- localVarQueryParameter['ipAddress'] = ipAddress;
1410
- }
1411
- if (type) {
1412
- localVarQueryParameter['type'] = type.join(COLLECTION_FORMATS.csv);
1413
- }
1414
- if (issuedAfter !== undefined) {
1415
- localVarQueryParameter['issuedAfter'] = issuedAfter;
1416
- }
1417
- if (issuedBefore !== undefined) {
1418
- localVarQueryParameter['issuedBefore'] = issuedBefore;
1419
- }
1420
- if (page !== undefined) {
1421
- localVarQueryParameter['page'] = page;
1422
- }
1423
- if (limit !== undefined) {
1424
- localVarQueryParameter['limit'] = limit;
1425
- }
1935
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1426
1936
  localVarHeaderParameter['Accept'] = 'application/json';
1427
1937
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1428
1938
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1429
1939
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1940
+ localVarRequestOptions.data = serializeDataIfNeeded(adminBulkRevokeRequest, localVarRequestOptions, configuration);
1430
1941
  return {
1431
1942
  url: toPathString(localVarUrlObj),
1432
1943
  options: localVarRequestOptions,
1433
1944
  };
1434
1945
  }),
1435
1946
  /**
1436
- * Search for players by UUID or username, or look up all players associated with an IP address.
1437
- * @summary Search punishment targets
1438
- * @param {string} q UUID, username, or partial/full IP address to search for
1947
+ * Appends a free-form note (1–4000 chars). Notes are not editable to revise, post a new one and soft-delete the old.
1948
+ * @summary Create a staff note on a player
1949
+ * @param {string} uuid Player Minecraft UUID
1950
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
1439
1951
  * @param {*} [options] Override http request option.
1440
1952
  * @throws {RequiredError}
1441
1953
  */
1442
- searchTargets: (q_1, ...args_1) => __awaiter(this, [q_1, ...args_1], void 0, function* (q, options = {}) {
1443
- // verify required parameter 'q' is not null or undefined
1444
- assertParamExists('searchTargets', 'q', q);
1445
- const localVarPath = `/admin/punishment/search`;
1954
+ createPlayerNote: (uuid_1, adminCreatePlayerNoteRequest_1, ...args_1) => __awaiter(this, [uuid_1, adminCreatePlayerNoteRequest_1, ...args_1], void 0, function* (uuid, adminCreatePlayerNoteRequest, options = {}) {
1955
+ // verify required parameter 'uuid' is not null or undefined
1956
+ assertParamExists('createPlayerNote', 'uuid', uuid);
1957
+ // verify required parameter 'adminCreatePlayerNoteRequest' is not null or undefined
1958
+ assertParamExists('createPlayerNote', 'adminCreatePlayerNoteRequest', adminCreatePlayerNoteRequest);
1959
+ const localVarPath = `/admin/player/{uuid}/note`
1960
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
1446
1961
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1447
1962
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
1448
1963
  let baseOptions;
1449
1964
  if (configuration) {
1450
1965
  baseOptions = configuration.baseOptions;
1451
1966
  }
1452
- const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
1967
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
1453
1968
  const localVarHeaderParameter = {};
1454
1969
  const localVarQueryParameter = {};
1455
1970
  // authentication DiscordAuth required
1456
1971
  // http bearer authentication required
1457
1972
  yield setBearerAuthToObject(localVarHeaderParameter, configuration);
1458
- if (q !== undefined) {
1459
- localVarQueryParameter['q'] = q;
1460
- }
1973
+ localVarHeaderParameter['Content-Type'] = 'application/json';
1461
1974
  localVarHeaderParameter['Accept'] = 'application/json';
1462
1975
  setSearchParams(localVarUrlObj, localVarQueryParameter);
1463
1976
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
1464
1977
  localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
1978
+ localVarRequestOptions.data = serializeDataIfNeeded(adminCreatePlayerNoteRequest, localVarRequestOptions, configuration);
1465
1979
  return {
1466
1980
  url: toPathString(localVarUrlObj),
1467
1981
  options: localVarRequestOptions,
1468
1982
  };
1469
1983
  }),
1470
- };
1471
- };
1472
- /**
1473
- * AdminPunishmentsApi - functional programming interface
1474
- */
1475
- export const AdminPunishmentsApiFp = function (configuration) {
1476
- const localVarAxiosParamCreator = AdminPunishmentsApiAxiosParamCreator(configuration);
1477
- return {
1478
1984
  /**
1479
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1480
- * @summary Apply punishment
1481
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1985
+ * Marks the note as deleted but keeps the row for audit. Idempotent 404 if already deleted or unknown id.
1986
+ * @summary Soft-delete a staff note
1987
+ * @param {string} uuid Player Minecraft UUID (routing only)
1988
+ * @param {number} noteId Note id
1482
1989
  * @param {*} [options] Override http request option.
1483
1990
  * @throws {RequiredError}
1484
1991
  */
1485
- applyPunishment(adminApplyPunishmentRequest, options) {
1486
- return __awaiter(this, void 0, void 0, function* () {
1487
- var _a, _b, _c;
1488
- const localVarAxiosArgs = yield localVarAxiosParamCreator.applyPunishment(adminApplyPunishmentRequest, options);
1489
- const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1490
- const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.applyPunishment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1491
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1492
- });
1493
- },
1992
+ deletePlayerNote: (uuid_1, noteId_1, ...args_1) => __awaiter(this, [uuid_1, noteId_1, ...args_1], void 0, function* (uuid, noteId, options = {}) {
1993
+ // verify required parameter 'uuid' is not null or undefined
1994
+ assertParamExists('deletePlayerNote', 'uuid', uuid);
1995
+ // verify required parameter 'noteId' is not null or undefined
1996
+ assertParamExists('deletePlayerNote', 'noteId', noteId);
1997
+ const localVarPath = `/admin/player/{uuid}/note/{noteId}`
1998
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)))
1999
+ .replace(`{${"noteId"}}`, encodeURIComponent(String(noteId)));
2000
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2001
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2002
+ let baseOptions;
2003
+ if (configuration) {
2004
+ baseOptions = configuration.baseOptions;
2005
+ }
2006
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
2007
+ const localVarHeaderParameter = {};
2008
+ const localVarQueryParameter = {};
2009
+ // authentication DiscordAuth required
2010
+ // http bearer authentication required
2011
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2012
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2013
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2014
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2015
+ return {
2016
+ url: toPathString(localVarUrlObj),
2017
+ options: localVarRequestOptions,
2018
+ };
2019
+ }),
1494
2020
  /**
1495
- * Preview the impact of a punishment across one or more targets. No changes are made.
1496
- * @summary Evaluate punishment impact
1497
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
2021
+ * 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.
2022
+ * @summary Alt-graph traversal rooted at a player
2023
+ * @param {string} uuid Player Minecraft UUID
2024
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
1498
2025
  * @param {*} [options] Override http request option.
1499
2026
  * @throws {RequiredError}
1500
2027
  */
1501
- createDraft(adminCreatePunishmentDraftRequest, options) {
1502
- return __awaiter(this, void 0, void 0, function* () {
1503
- var _a, _b, _c;
1504
- const localVarAxiosArgs = yield localVarAxiosParamCreator.createDraft(adminCreatePunishmentDraftRequest, options);
1505
- const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1506
- const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.createDraft']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1507
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1508
- });
2028
+ getAltGraph: (uuid_1, depth_1, ...args_1) => __awaiter(this, [uuid_1, depth_1, ...args_1], void 0, function* (uuid, depth, options = {}) {
2029
+ // verify required parameter 'uuid' is not null or undefined
2030
+ assertParamExists('getAltGraph', 'uuid', uuid);
2031
+ const localVarPath = `/admin/player/{uuid}/alt-graph`
2032
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2033
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2034
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2035
+ let baseOptions;
2036
+ if (configuration) {
2037
+ baseOptions = configuration.baseOptions;
2038
+ }
2039
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2040
+ const localVarHeaderParameter = {};
2041
+ const localVarQueryParameter = {};
2042
+ // authentication DiscordAuth required
2043
+ // http bearer authentication required
2044
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2045
+ if (depth !== undefined) {
2046
+ localVarQueryParameter['depth'] = depth;
2047
+ }
2048
+ localVarHeaderParameter['Accept'] = 'application/json';
2049
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2050
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2051
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2052
+ return {
2053
+ url: toPathString(localVarUrlObj),
2054
+ options: localVarRequestOptions,
2055
+ };
2056
+ }),
2057
+ /**
2058
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2059
+ * @summary Get player detail
2060
+ * @param {string} uuid Player Minecraft UUID
2061
+ * @param {*} [options] Override http request option.
2062
+ * @throws {RequiredError}
2063
+ */
2064
+ getPlayer: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
2065
+ // verify required parameter 'uuid' is not null or undefined
2066
+ assertParamExists('getPlayer', 'uuid', uuid);
2067
+ const localVarPath = `/admin/player/{uuid}`
2068
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2069
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2070
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2071
+ let baseOptions;
2072
+ if (configuration) {
2073
+ baseOptions = configuration.baseOptions;
2074
+ }
2075
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2076
+ const localVarHeaderParameter = {};
2077
+ const localVarQueryParameter = {};
2078
+ // authentication DiscordAuth required
2079
+ // http bearer authentication required
2080
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2081
+ localVarHeaderParameter['Accept'] = 'application/json';
2082
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2083
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2084
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2085
+ return {
2086
+ url: toPathString(localVarUrlObj),
2087
+ options: localVarRequestOptions,
2088
+ };
2089
+ }),
2090
+ /**
2091
+ * 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.
2092
+ * @summary List a player\'s alt accounts
2093
+ * @param {string} uuid Player Minecraft UUID
2094
+ * @param {Pageable} pageable
2095
+ * @param {*} [options] Override http request option.
2096
+ * @throws {RequiredError}
2097
+ */
2098
+ getPlayerAlts: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2099
+ // verify required parameter 'uuid' is not null or undefined
2100
+ assertParamExists('getPlayerAlts', 'uuid', uuid);
2101
+ // verify required parameter 'pageable' is not null or undefined
2102
+ assertParamExists('getPlayerAlts', 'pageable', pageable);
2103
+ const localVarPath = `/admin/player/{uuid}/alts`
2104
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2105
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2106
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2107
+ let baseOptions;
2108
+ if (configuration) {
2109
+ baseOptions = configuration.baseOptions;
2110
+ }
2111
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2112
+ const localVarHeaderParameter = {};
2113
+ const localVarQueryParameter = {};
2114
+ // authentication DiscordAuth required
2115
+ // http bearer authentication required
2116
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2117
+ if (pageable !== undefined) {
2118
+ localVarQueryParameter['pageable'] = pageable;
2119
+ }
2120
+ localVarHeaderParameter['Accept'] = 'application/json';
2121
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2122
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2123
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2124
+ return {
2125
+ url: toPathString(localVarUrlObj),
2126
+ options: localVarRequestOptions,
2127
+ };
2128
+ }),
2129
+ /**
2130
+ * 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.
2131
+ * @summary List a player\'s connection history
2132
+ * @param {string} uuid Player Minecraft UUID
2133
+ * @param {Pageable} pageable
2134
+ * @param {*} [options] Override http request option.
2135
+ * @throws {RequiredError}
2136
+ */
2137
+ getPlayerConnections: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2138
+ // verify required parameter 'uuid' is not null or undefined
2139
+ assertParamExists('getPlayerConnections', 'uuid', uuid);
2140
+ // verify required parameter 'pageable' is not null or undefined
2141
+ assertParamExists('getPlayerConnections', 'pageable', pageable);
2142
+ const localVarPath = `/admin/player/{uuid}/connections`
2143
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2144
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2145
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2146
+ let baseOptions;
2147
+ if (configuration) {
2148
+ baseOptions = configuration.baseOptions;
2149
+ }
2150
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2151
+ const localVarHeaderParameter = {};
2152
+ const localVarQueryParameter = {};
2153
+ // authentication DiscordAuth required
2154
+ // http bearer authentication required
2155
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2156
+ if (pageable !== undefined) {
2157
+ localVarQueryParameter['pageable'] = pageable;
2158
+ }
2159
+ localVarHeaderParameter['Accept'] = 'application/json';
2160
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2161
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2162
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2163
+ return {
2164
+ url: toPathString(localVarUrlObj),
2165
+ options: localVarRequestOptions,
2166
+ };
2167
+ }),
2168
+ /**
2169
+ * 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.
2170
+ * @summary List a player\'s full punishment history
2171
+ * @param {string} uuid Player Minecraft UUID
2172
+ * @param {Pageable} pageable
2173
+ * @param {*} [options] Override http request option.
2174
+ * @throws {RequiredError}
2175
+ */
2176
+ getPlayerPunishments: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2177
+ // verify required parameter 'uuid' is not null or undefined
2178
+ assertParamExists('getPlayerPunishments', 'uuid', uuid);
2179
+ // verify required parameter 'pageable' is not null or undefined
2180
+ assertParamExists('getPlayerPunishments', 'pageable', pageable);
2181
+ const localVarPath = `/admin/player/{uuid}/player-punishments`
2182
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2183
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2184
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2185
+ let baseOptions;
2186
+ if (configuration) {
2187
+ baseOptions = configuration.baseOptions;
2188
+ }
2189
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2190
+ const localVarHeaderParameter = {};
2191
+ const localVarQueryParameter = {};
2192
+ // authentication DiscordAuth required
2193
+ // http bearer authentication required
2194
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2195
+ if (pageable !== undefined) {
2196
+ localVarQueryParameter['pageable'] = pageable;
2197
+ }
2198
+ localVarHeaderParameter['Accept'] = 'application/json';
2199
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2200
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2201
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2202
+ return {
2203
+ url: toPathString(localVarUrlObj),
2204
+ options: localVarRequestOptions,
2205
+ };
2206
+ }),
2207
+ /**
2208
+ * 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.
2209
+ * @summary Get a player\'s aggregate session stats
2210
+ * @param {string} uuid Player Minecraft UUID
2211
+ * @param {*} [options] Override http request option.
2212
+ * @throws {RequiredError}
2213
+ */
2214
+ getSessionStats: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
2215
+ // verify required parameter 'uuid' is not null or undefined
2216
+ assertParamExists('getSessionStats', 'uuid', uuid);
2217
+ const localVarPath = `/admin/player/{uuid}/session-stats`
2218
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2219
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2220
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2221
+ let baseOptions;
2222
+ if (configuration) {
2223
+ baseOptions = configuration.baseOptions;
2224
+ }
2225
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2226
+ const localVarHeaderParameter = {};
2227
+ const localVarQueryParameter = {};
2228
+ // authentication DiscordAuth required
2229
+ // http bearer authentication required
2230
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2231
+ localVarHeaderParameter['Accept'] = 'application/json';
2232
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2233
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2234
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2235
+ return {
2236
+ url: toPathString(localVarUrlObj),
2237
+ options: localVarRequestOptions,
2238
+ };
2239
+ }),
2240
+ /**
2241
+ * 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.
2242
+ * @summary List a player\'s alt exemptions
2243
+ * @param {string} uuid Player Minecraft UUID
2244
+ * @param {Pageable} pageable
2245
+ * @param {*} [options] Override http request option.
2246
+ * @throws {RequiredError}
2247
+ */
2248
+ listAltExemptions: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2249
+ // verify required parameter 'uuid' is not null or undefined
2250
+ assertParamExists('listAltExemptions', 'uuid', uuid);
2251
+ // verify required parameter 'pageable' is not null or undefined
2252
+ assertParamExists('listAltExemptions', 'pageable', pageable);
2253
+ const localVarPath = `/admin/player/{uuid}/alt-exemption`
2254
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2255
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2256
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2257
+ let baseOptions;
2258
+ if (configuration) {
2259
+ baseOptions = configuration.baseOptions;
2260
+ }
2261
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2262
+ const localVarHeaderParameter = {};
2263
+ const localVarQueryParameter = {};
2264
+ // authentication DiscordAuth required
2265
+ // http bearer authentication required
2266
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2267
+ if (pageable !== undefined) {
2268
+ localVarQueryParameter['pageable'] = pageable;
2269
+ }
2270
+ localVarHeaderParameter['Accept'] = 'application/json';
2271
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2272
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2273
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2274
+ return {
2275
+ url: toPathString(localVarUrlObj),
2276
+ options: localVarRequestOptions,
2277
+ };
2278
+ }),
2279
+ /**
2280
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2281
+ * @summary List staff notes on a player
2282
+ * @param {string} uuid Player Minecraft UUID
2283
+ * @param {Pageable} pageable
2284
+ * @param {*} [options] Override http request option.
2285
+ * @throws {RequiredError}
2286
+ */
2287
+ listPlayerNotes: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2288
+ // verify required parameter 'uuid' is not null or undefined
2289
+ assertParamExists('listPlayerNotes', 'uuid', uuid);
2290
+ // verify required parameter 'pageable' is not null or undefined
2291
+ assertParamExists('listPlayerNotes', 'pageable', pageable);
2292
+ const localVarPath = `/admin/player/{uuid}/notes`
2293
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2294
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2295
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2296
+ let baseOptions;
2297
+ if (configuration) {
2298
+ baseOptions = configuration.baseOptions;
2299
+ }
2300
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2301
+ const localVarHeaderParameter = {};
2302
+ const localVarQueryParameter = {};
2303
+ // authentication DiscordAuth required
2304
+ // http bearer authentication required
2305
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2306
+ if (pageable !== undefined) {
2307
+ localVarQueryParameter['pageable'] = pageable;
2308
+ }
2309
+ localVarHeaderParameter['Accept'] = 'application/json';
2310
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2311
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2312
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2313
+ return {
2314
+ url: toPathString(localVarUrlObj),
2315
+ options: localVarRequestOptions,
2316
+ };
2317
+ }),
2318
+ /**
2319
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2320
+ * @summary List players
2321
+ * @param {Pageable} pageable
2322
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2323
+ * @param {*} [options] Override http request option.
2324
+ * @throws {RequiredError}
2325
+ */
2326
+ listPlayers: (pageable_1, search_1, ...args_1) => __awaiter(this, [pageable_1, search_1, ...args_1], void 0, function* (pageable, search, options = {}) {
2327
+ // verify required parameter 'pageable' is not null or undefined
2328
+ assertParamExists('listPlayers', 'pageable', pageable);
2329
+ const localVarPath = `/admin/player`;
2330
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2331
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2332
+ let baseOptions;
2333
+ if (configuration) {
2334
+ baseOptions = configuration.baseOptions;
2335
+ }
2336
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2337
+ const localVarHeaderParameter = {};
2338
+ const localVarQueryParameter = {};
2339
+ // authentication DiscordAuth required
2340
+ // http bearer authentication required
2341
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2342
+ if (search !== undefined) {
2343
+ localVarQueryParameter['search'] = search;
2344
+ }
2345
+ if (pageable !== undefined) {
2346
+ localVarQueryParameter['pageable'] = pageable;
2347
+ }
2348
+ localVarHeaderParameter['Accept'] = 'application/json';
2349
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2350
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2351
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2352
+ return {
2353
+ url: toPathString(localVarUrlObj),
2354
+ options: localVarRequestOptions,
2355
+ };
2356
+ }),
2357
+ /**
2358
+ * 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.
2359
+ * @summary List a player\'s session history
2360
+ * @param {string} uuid Player Minecraft UUID
2361
+ * @param {Pageable} pageable
2362
+ * @param {*} [options] Override http request option.
2363
+ * @throws {RequiredError}
2364
+ */
2365
+ listSessions: (uuid_1, pageable_1, ...args_1) => __awaiter(this, [uuid_1, pageable_1, ...args_1], void 0, function* (uuid, pageable, options = {}) {
2366
+ // verify required parameter 'uuid' is not null or undefined
2367
+ assertParamExists('listSessions', 'uuid', uuid);
2368
+ // verify required parameter 'pageable' is not null or undefined
2369
+ assertParamExists('listSessions', 'pageable', pageable);
2370
+ const localVarPath = `/admin/player/{uuid}/sessions`
2371
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2372
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2373
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2374
+ let baseOptions;
2375
+ if (configuration) {
2376
+ baseOptions = configuration.baseOptions;
2377
+ }
2378
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2379
+ const localVarHeaderParameter = {};
2380
+ const localVarQueryParameter = {};
2381
+ // authentication DiscordAuth required
2382
+ // http bearer authentication required
2383
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2384
+ if (pageable !== undefined) {
2385
+ localVarQueryParameter['pageable'] = pageable;
2386
+ }
2387
+ localVarHeaderParameter['Accept'] = 'application/json';
2388
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2389
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2390
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2391
+ return {
2392
+ url: toPathString(localVarUrlObj),
2393
+ options: localVarRequestOptions,
2394
+ };
2395
+ }),
2396
+ /**
2397
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2398
+ * @summary Remove an alt exemption
2399
+ * @param {string} uuid Player Minecraft UUID
2400
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2401
+ * @param {*} [options] Override http request option.
2402
+ * @throws {RequiredError}
2403
+ */
2404
+ removeAltExemption: (uuid_1, altPlayerUuid_1, ...args_1) => __awaiter(this, [uuid_1, altPlayerUuid_1, ...args_1], void 0, function* (uuid, altPlayerUuid, options = {}) {
2405
+ // verify required parameter 'uuid' is not null or undefined
2406
+ assertParamExists('removeAltExemption', 'uuid', uuid);
2407
+ // verify required parameter 'altPlayerUuid' is not null or undefined
2408
+ assertParamExists('removeAltExemption', 'altPlayerUuid', altPlayerUuid);
2409
+ const localVarPath = `/admin/player/{uuid}/alt-exemption/{altPlayerUuid}`
2410
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)))
2411
+ .replace(`{${"altPlayerUuid"}}`, encodeURIComponent(String(altPlayerUuid)));
2412
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2413
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2414
+ let baseOptions;
2415
+ if (configuration) {
2416
+ baseOptions = configuration.baseOptions;
2417
+ }
2418
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
2419
+ const localVarHeaderParameter = {};
2420
+ const localVarQueryParameter = {};
2421
+ // authentication DiscordAuth required
2422
+ // http bearer authentication required
2423
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2424
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2425
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2426
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2427
+ return {
2428
+ url: toPathString(localVarUrlObj),
2429
+ options: localVarRequestOptions,
2430
+ };
2431
+ }),
2432
+ /**
2433
+ * 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.
2434
+ * @summary Revoke a propagated punishment link
2435
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2436
+ * @param {number} playerPunishmentId player_punishment row id
2437
+ * @param {*} [options] Override http request option.
2438
+ * @throws {RequiredError}
2439
+ */
2440
+ revokePropagatedLink: (uuid_1, playerPunishmentId_1, ...args_1) => __awaiter(this, [uuid_1, playerPunishmentId_1, ...args_1], void 0, function* (uuid, playerPunishmentId, options = {}) {
2441
+ // verify required parameter 'uuid' is not null or undefined
2442
+ assertParamExists('revokePropagatedLink', 'uuid', uuid);
2443
+ // verify required parameter 'playerPunishmentId' is not null or undefined
2444
+ assertParamExists('revokePropagatedLink', 'playerPunishmentId', playerPunishmentId);
2445
+ const localVarPath = `/admin/player/{uuid}/player-punishment/{playerPunishmentId}`
2446
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)))
2447
+ .replace(`{${"playerPunishmentId"}}`, encodeURIComponent(String(playerPunishmentId)));
2448
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2449
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2450
+ let baseOptions;
2451
+ if (configuration) {
2452
+ baseOptions = configuration.baseOptions;
2453
+ }
2454
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'DELETE' }, baseOptions), options);
2455
+ const localVarHeaderParameter = {};
2456
+ const localVarQueryParameter = {};
2457
+ // authentication DiscordAuth required
2458
+ // http bearer authentication required
2459
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2460
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2461
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2462
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2463
+ return {
2464
+ url: toPathString(localVarUrlObj),
2465
+ options: localVarRequestOptions,
2466
+ };
2467
+ }),
2468
+ /**
2469
+ * 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.
2470
+ * @summary Toggle aggressive-mode immunity
2471
+ * @param {string} uuid Player Minecraft UUID
2472
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2473
+ * @param {*} [options] Override http request option.
2474
+ * @throws {RequiredError}
2475
+ */
2476
+ setAggressiveModeImmunity: (uuid_1, adminSetAggressiveModeImmunityRequest_1, ...args_1) => __awaiter(this, [uuid_1, adminSetAggressiveModeImmunityRequest_1, ...args_1], void 0, function* (uuid, adminSetAggressiveModeImmunityRequest, options = {}) {
2477
+ // verify required parameter 'uuid' is not null or undefined
2478
+ assertParamExists('setAggressiveModeImmunity', 'uuid', uuid);
2479
+ // verify required parameter 'adminSetAggressiveModeImmunityRequest' is not null or undefined
2480
+ assertParamExists('setAggressiveModeImmunity', 'adminSetAggressiveModeImmunityRequest', adminSetAggressiveModeImmunityRequest);
2481
+ const localVarPath = `/admin/player/{uuid}/aggressive-mode-immunity`
2482
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2483
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2484
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2485
+ let baseOptions;
2486
+ if (configuration) {
2487
+ baseOptions = configuration.baseOptions;
2488
+ }
2489
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'PATCH' }, baseOptions), options);
2490
+ const localVarHeaderParameter = {};
2491
+ const localVarQueryParameter = {};
2492
+ // authentication DiscordAuth required
2493
+ // http bearer authentication required
2494
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2495
+ localVarHeaderParameter['Content-Type'] = 'application/json';
2496
+ localVarHeaderParameter['Accept'] = 'application/json';
2497
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2498
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2499
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2500
+ localVarRequestOptions.data = serializeDataIfNeeded(adminSetAggressiveModeImmunityRequest, localVarRequestOptions, configuration);
2501
+ return {
2502
+ url: toPathString(localVarUrlObj),
2503
+ options: localVarRequestOptions,
2504
+ };
2505
+ }),
2506
+ /**
2507
+ * 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.
2508
+ * @summary Trust factor breakdown for a player
2509
+ * @param {string} uuid Player Minecraft UUID
2510
+ * @param {*} [options] Override http request option.
2511
+ * @throws {RequiredError}
2512
+ */
2513
+ trustFactorBreakdown: (uuid_1, ...args_1) => __awaiter(this, [uuid_1, ...args_1], void 0, function* (uuid, options = {}) {
2514
+ // verify required parameter 'uuid' is not null or undefined
2515
+ assertParamExists('trustFactorBreakdown', 'uuid', uuid);
2516
+ const localVarPath = `/admin/player/{uuid}/trust-factor-breakdown`
2517
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2518
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2519
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2520
+ let baseOptions;
2521
+ if (configuration) {
2522
+ baseOptions = configuration.baseOptions;
2523
+ }
2524
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2525
+ const localVarHeaderParameter = {};
2526
+ const localVarQueryParameter = {};
2527
+ // authentication DiscordAuth required
2528
+ // http bearer authentication required
2529
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2530
+ localVarHeaderParameter['Accept'] = 'application/json';
2531
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2532
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2533
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2534
+ return {
2535
+ url: toPathString(localVarUrlObj),
2536
+ options: localVarRequestOptions,
2537
+ };
2538
+ }),
2539
+ /**
2540
+ * 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).
2541
+ * @summary Trust factor history for a player
2542
+ * @param {string} uuid Player Minecraft UUID
2543
+ * @param {number} [days] Window in days (default 30, max 365)
2544
+ * @param {*} [options] Override http request option.
2545
+ * @throws {RequiredError}
2546
+ */
2547
+ trustFactorHistory: (uuid_1, days_1, ...args_1) => __awaiter(this, [uuid_1, days_1, ...args_1], void 0, function* (uuid, days, options = {}) {
2548
+ // verify required parameter 'uuid' is not null or undefined
2549
+ assertParamExists('trustFactorHistory', 'uuid', uuid);
2550
+ const localVarPath = `/admin/player/{uuid}/trust-factor-history`
2551
+ .replace(`{${"uuid"}}`, encodeURIComponent(String(uuid)));
2552
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
2553
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
2554
+ let baseOptions;
2555
+ if (configuration) {
2556
+ baseOptions = configuration.baseOptions;
2557
+ }
2558
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
2559
+ const localVarHeaderParameter = {};
2560
+ const localVarQueryParameter = {};
2561
+ // authentication DiscordAuth required
2562
+ // http bearer authentication required
2563
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
2564
+ if (days !== undefined) {
2565
+ localVarQueryParameter['days'] = days;
2566
+ }
2567
+ localVarHeaderParameter['Accept'] = 'application/json';
2568
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
2569
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
2570
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
2571
+ return {
2572
+ url: toPathString(localVarUrlObj),
2573
+ options: localVarRequestOptions,
2574
+ };
2575
+ }),
2576
+ };
2577
+ };
2578
+ /**
2579
+ * AdminPlayersApi - functional programming interface
2580
+ */
2581
+ export const AdminPlayersApiFp = function (configuration) {
2582
+ const localVarAxiosParamCreator = AdminPlayersApiAxiosParamCreator(configuration);
2583
+ return {
2584
+ /**
2585
+ * 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.
2586
+ * @summary Add an alt exemption
2587
+ * @param {string} uuid Player Minecraft UUID
2588
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2589
+ * @param {*} [options] Override http request option.
2590
+ * @throws {RequiredError}
2591
+ */
2592
+ addAltExemption(uuid, adminCreateAltExemptionRequest, options) {
2593
+ return __awaiter(this, void 0, void 0, function* () {
2594
+ var _a, _b, _c;
2595
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.addAltExemption(uuid, adminCreateAltExemptionRequest, options);
2596
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2597
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.addAltExemption']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2598
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2599
+ });
2600
+ },
2601
+ /**
2602
+ * 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.
2603
+ * @summary Start a username backfill job
2604
+ * @param {*} [options] Override http request option.
2605
+ * @throws {RequiredError}
2606
+ */
2607
+ backfillUsernames(options) {
2608
+ return __awaiter(this, void 0, void 0, function* () {
2609
+ var _a, _b, _c;
2610
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.backfillUsernames(options);
2611
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2612
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.backfillUsernames']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2613
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2614
+ });
2615
+ },
2616
+ /**
2617
+ * 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.
2618
+ * @summary Bulk-revoke PROPAGATED links by source
2619
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2620
+ * @param {*} [options] Override http request option.
2621
+ * @throws {RequiredError}
2622
+ */
2623
+ bulkRevokePropagated(adminBulkRevokeRequest, options) {
2624
+ return __awaiter(this, void 0, void 0, function* () {
2625
+ var _a, _b, _c;
2626
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.bulkRevokePropagated(adminBulkRevokeRequest, options);
2627
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2628
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.bulkRevokePropagated']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2629
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2630
+ });
2631
+ },
2632
+ /**
2633
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2634
+ * @summary Create a staff note on a player
2635
+ * @param {string} uuid Player Minecraft UUID
2636
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2637
+ * @param {*} [options] Override http request option.
2638
+ * @throws {RequiredError}
2639
+ */
2640
+ createPlayerNote(uuid, adminCreatePlayerNoteRequest, options) {
2641
+ return __awaiter(this, void 0, void 0, function* () {
2642
+ var _a, _b, _c;
2643
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.createPlayerNote(uuid, adminCreatePlayerNoteRequest, options);
2644
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2645
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.createPlayerNote']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2646
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2647
+ });
2648
+ },
2649
+ /**
2650
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2651
+ * @summary Soft-delete a staff note
2652
+ * @param {string} uuid Player Minecraft UUID (routing only)
2653
+ * @param {number} noteId Note id
2654
+ * @param {*} [options] Override http request option.
2655
+ * @throws {RequiredError}
2656
+ */
2657
+ deletePlayerNote(uuid, noteId, options) {
2658
+ return __awaiter(this, void 0, void 0, function* () {
2659
+ var _a, _b, _c;
2660
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.deletePlayerNote(uuid, noteId, options);
2661
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2662
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.deletePlayerNote']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2663
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2664
+ });
2665
+ },
2666
+ /**
2667
+ * 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.
2668
+ * @summary Alt-graph traversal rooted at a player
2669
+ * @param {string} uuid Player Minecraft UUID
2670
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
2671
+ * @param {*} [options] Override http request option.
2672
+ * @throws {RequiredError}
2673
+ */
2674
+ getAltGraph(uuid, depth, options) {
2675
+ return __awaiter(this, void 0, void 0, function* () {
2676
+ var _a, _b, _c;
2677
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getAltGraph(uuid, depth, options);
2678
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2679
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getAltGraph']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2680
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2681
+ });
2682
+ },
2683
+ /**
2684
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2685
+ * @summary Get player detail
2686
+ * @param {string} uuid Player Minecraft UUID
2687
+ * @param {*} [options] Override http request option.
2688
+ * @throws {RequiredError}
2689
+ */
2690
+ getPlayer(uuid, options) {
2691
+ return __awaiter(this, void 0, void 0, function* () {
2692
+ var _a, _b, _c;
2693
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayer(uuid, options);
2694
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2695
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getPlayer']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2696
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2697
+ });
2698
+ },
2699
+ /**
2700
+ * 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.
2701
+ * @summary List a player\'s alt accounts
2702
+ * @param {string} uuid Player Minecraft UUID
2703
+ * @param {Pageable} pageable
2704
+ * @param {*} [options] Override http request option.
2705
+ * @throws {RequiredError}
2706
+ */
2707
+ getPlayerAlts(uuid, pageable, options) {
2708
+ return __awaiter(this, void 0, void 0, function* () {
2709
+ var _a, _b, _c;
2710
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayerAlts(uuid, pageable, options);
2711
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2712
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getPlayerAlts']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2713
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2714
+ });
2715
+ },
2716
+ /**
2717
+ * 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.
2718
+ * @summary List a player\'s connection history
2719
+ * @param {string} uuid Player Minecraft UUID
2720
+ * @param {Pageable} pageable
2721
+ * @param {*} [options] Override http request option.
2722
+ * @throws {RequiredError}
2723
+ */
2724
+ getPlayerConnections(uuid, pageable, options) {
2725
+ return __awaiter(this, void 0, void 0, function* () {
2726
+ var _a, _b, _c;
2727
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayerConnections(uuid, pageable, options);
2728
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2729
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getPlayerConnections']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2730
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2731
+ });
2732
+ },
2733
+ /**
2734
+ * 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.
2735
+ * @summary List a player\'s full punishment history
2736
+ * @param {string} uuid Player Minecraft UUID
2737
+ * @param {Pageable} pageable
2738
+ * @param {*} [options] Override http request option.
2739
+ * @throws {RequiredError}
2740
+ */
2741
+ getPlayerPunishments(uuid, pageable, options) {
2742
+ return __awaiter(this, void 0, void 0, function* () {
2743
+ var _a, _b, _c;
2744
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPlayerPunishments(uuid, pageable, options);
2745
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2746
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getPlayerPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2747
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2748
+ });
2749
+ },
2750
+ /**
2751
+ * 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.
2752
+ * @summary Get a player\'s aggregate session stats
2753
+ * @param {string} uuid Player Minecraft UUID
2754
+ * @param {*} [options] Override http request option.
2755
+ * @throws {RequiredError}
2756
+ */
2757
+ getSessionStats(uuid, options) {
2758
+ return __awaiter(this, void 0, void 0, function* () {
2759
+ var _a, _b, _c;
2760
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getSessionStats(uuid, options);
2761
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2762
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.getSessionStats']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2763
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2764
+ });
2765
+ },
2766
+ /**
2767
+ * 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.
2768
+ * @summary List a player\'s alt exemptions
2769
+ * @param {string} uuid Player Minecraft UUID
2770
+ * @param {Pageable} pageable
2771
+ * @param {*} [options] Override http request option.
2772
+ * @throws {RequiredError}
2773
+ */
2774
+ listAltExemptions(uuid, pageable, options) {
2775
+ return __awaiter(this, void 0, void 0, function* () {
2776
+ var _a, _b, _c;
2777
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listAltExemptions(uuid, pageable, options);
2778
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2779
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.listAltExemptions']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2780
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2781
+ });
2782
+ },
2783
+ /**
2784
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2785
+ * @summary List staff notes on a player
2786
+ * @param {string} uuid Player Minecraft UUID
2787
+ * @param {Pageable} pageable
2788
+ * @param {*} [options] Override http request option.
2789
+ * @throws {RequiredError}
2790
+ */
2791
+ listPlayerNotes(uuid, pageable, options) {
2792
+ return __awaiter(this, void 0, void 0, function* () {
2793
+ var _a, _b, _c;
2794
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listPlayerNotes(uuid, pageable, options);
2795
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2796
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.listPlayerNotes']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2797
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2798
+ });
2799
+ },
2800
+ /**
2801
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2802
+ * @summary List players
2803
+ * @param {Pageable} pageable
2804
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2805
+ * @param {*} [options] Override http request option.
2806
+ * @throws {RequiredError}
2807
+ */
2808
+ listPlayers(pageable, search, options) {
2809
+ return __awaiter(this, void 0, void 0, function* () {
2810
+ var _a, _b, _c;
2811
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listPlayers(pageable, search, options);
2812
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2813
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.listPlayers']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2814
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2815
+ });
2816
+ },
2817
+ /**
2818
+ * 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.
2819
+ * @summary List a player\'s session history
2820
+ * @param {string} uuid Player Minecraft UUID
2821
+ * @param {Pageable} pageable
2822
+ * @param {*} [options] Override http request option.
2823
+ * @throws {RequiredError}
2824
+ */
2825
+ listSessions(uuid, pageable, options) {
2826
+ return __awaiter(this, void 0, void 0, function* () {
2827
+ var _a, _b, _c;
2828
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.listSessions(uuid, pageable, options);
2829
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2830
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.listSessions']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2831
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2832
+ });
2833
+ },
2834
+ /**
2835
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2836
+ * @summary Remove an alt exemption
2837
+ * @param {string} uuid Player Minecraft UUID
2838
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2839
+ * @param {*} [options] Override http request option.
2840
+ * @throws {RequiredError}
2841
+ */
2842
+ removeAltExemption(uuid, altPlayerUuid, options) {
2843
+ return __awaiter(this, void 0, void 0, function* () {
2844
+ var _a, _b, _c;
2845
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.removeAltExemption(uuid, altPlayerUuid, options);
2846
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2847
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.removeAltExemption']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2848
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2849
+ });
2850
+ },
2851
+ /**
2852
+ * 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.
2853
+ * @summary Revoke a propagated punishment link
2854
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2855
+ * @param {number} playerPunishmentId player_punishment row id
2856
+ * @param {*} [options] Override http request option.
2857
+ * @throws {RequiredError}
2858
+ */
2859
+ revokePropagatedLink(uuid, playerPunishmentId, options) {
2860
+ return __awaiter(this, void 0, void 0, function* () {
2861
+ var _a, _b, _c;
2862
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.revokePropagatedLink(uuid, playerPunishmentId, options);
2863
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2864
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.revokePropagatedLink']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2865
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2866
+ });
2867
+ },
2868
+ /**
2869
+ * 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.
2870
+ * @summary Toggle aggressive-mode immunity
2871
+ * @param {string} uuid Player Minecraft UUID
2872
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2873
+ * @param {*} [options] Override http request option.
2874
+ * @throws {RequiredError}
2875
+ */
2876
+ setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options) {
2877
+ return __awaiter(this, void 0, void 0, function* () {
2878
+ var _a, _b, _c;
2879
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options);
2880
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2881
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.setAggressiveModeImmunity']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2882
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2883
+ });
2884
+ },
2885
+ /**
2886
+ * 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.
2887
+ * @summary Trust factor breakdown for a player
2888
+ * @param {string} uuid Player Minecraft UUID
2889
+ * @param {*} [options] Override http request option.
2890
+ * @throws {RequiredError}
2891
+ */
2892
+ trustFactorBreakdown(uuid, options) {
2893
+ return __awaiter(this, void 0, void 0, function* () {
2894
+ var _a, _b, _c;
2895
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.trustFactorBreakdown(uuid, options);
2896
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2897
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.trustFactorBreakdown']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2898
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2899
+ });
2900
+ },
2901
+ /**
2902
+ * 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).
2903
+ * @summary Trust factor history for a player
2904
+ * @param {string} uuid Player Minecraft UUID
2905
+ * @param {number} [days] Window in days (default 30, max 365)
2906
+ * @param {*} [options] Override http request option.
2907
+ * @throws {RequiredError}
2908
+ */
2909
+ trustFactorHistory(uuid, days, options) {
2910
+ return __awaiter(this, void 0, void 0, function* () {
2911
+ var _a, _b, _c;
2912
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.trustFactorHistory(uuid, days, options);
2913
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2914
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPlayersApi.trustFactorHistory']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2915
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
2916
+ });
2917
+ },
2918
+ };
2919
+ };
2920
+ /**
2921
+ * AdminPlayersApi - factory interface
2922
+ */
2923
+ export const AdminPlayersApiFactory = function (configuration, basePath, axios) {
2924
+ const localVarFp = AdminPlayersApiFp(configuration);
2925
+ return {
2926
+ /**
2927
+ * 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.
2928
+ * @summary Add an alt exemption
2929
+ * @param {string} uuid Player Minecraft UUID
2930
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2931
+ * @param {*} [options] Override http request option.
2932
+ * @throws {RequiredError}
2933
+ */
2934
+ addAltExemption(uuid, adminCreateAltExemptionRequest, options) {
2935
+ return localVarFp.addAltExemption(uuid, adminCreateAltExemptionRequest, options).then((request) => request(axios, basePath));
2936
+ },
2937
+ /**
2938
+ * 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.
2939
+ * @summary Start a username backfill job
2940
+ * @param {*} [options] Override http request option.
2941
+ * @throws {RequiredError}
2942
+ */
2943
+ backfillUsernames(options) {
2944
+ return localVarFp.backfillUsernames(options).then((request) => request(axios, basePath));
2945
+ },
2946
+ /**
2947
+ * 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.
2948
+ * @summary Bulk-revoke PROPAGATED links by source
2949
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2950
+ * @param {*} [options] Override http request option.
2951
+ * @throws {RequiredError}
2952
+ */
2953
+ bulkRevokePropagated(adminBulkRevokeRequest, options) {
2954
+ return localVarFp.bulkRevokePropagated(adminBulkRevokeRequest, options).then((request) => request(axios, basePath));
2955
+ },
2956
+ /**
2957
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2958
+ * @summary Create a staff note on a player
2959
+ * @param {string} uuid Player Minecraft UUID
2960
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2961
+ * @param {*} [options] Override http request option.
2962
+ * @throws {RequiredError}
2963
+ */
2964
+ createPlayerNote(uuid, adminCreatePlayerNoteRequest, options) {
2965
+ return localVarFp.createPlayerNote(uuid, adminCreatePlayerNoteRequest, options).then((request) => request(axios, basePath));
2966
+ },
2967
+ /**
2968
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2969
+ * @summary Soft-delete a staff note
2970
+ * @param {string} uuid Player Minecraft UUID (routing only)
2971
+ * @param {number} noteId Note id
2972
+ * @param {*} [options] Override http request option.
2973
+ * @throws {RequiredError}
2974
+ */
2975
+ deletePlayerNote(uuid, noteId, options) {
2976
+ return localVarFp.deletePlayerNote(uuid, noteId, options).then((request) => request(axios, basePath));
2977
+ },
2978
+ /**
2979
+ * 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.
2980
+ * @summary Alt-graph traversal rooted at a player
2981
+ * @param {string} uuid Player Minecraft UUID
2982
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
2983
+ * @param {*} [options] Override http request option.
2984
+ * @throws {RequiredError}
2985
+ */
2986
+ getAltGraph(uuid, depth, options) {
2987
+ return localVarFp.getAltGraph(uuid, depth, options).then((request) => request(axios, basePath));
2988
+ },
2989
+ /**
2990
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2991
+ * @summary Get player detail
2992
+ * @param {string} uuid Player Minecraft UUID
2993
+ * @param {*} [options] Override http request option.
2994
+ * @throws {RequiredError}
2995
+ */
2996
+ getPlayer(uuid, options) {
2997
+ return localVarFp.getPlayer(uuid, options).then((request) => request(axios, basePath));
2998
+ },
2999
+ /**
3000
+ * 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.
3001
+ * @summary List a player\'s alt accounts
3002
+ * @param {string} uuid Player Minecraft UUID
3003
+ * @param {Pageable} pageable
3004
+ * @param {*} [options] Override http request option.
3005
+ * @throws {RequiredError}
3006
+ */
3007
+ getPlayerAlts(uuid, pageable, options) {
3008
+ return localVarFp.getPlayerAlts(uuid, pageable, options).then((request) => request(axios, basePath));
3009
+ },
3010
+ /**
3011
+ * 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.
3012
+ * @summary List a player\'s connection history
3013
+ * @param {string} uuid Player Minecraft UUID
3014
+ * @param {Pageable} pageable
3015
+ * @param {*} [options] Override http request option.
3016
+ * @throws {RequiredError}
3017
+ */
3018
+ getPlayerConnections(uuid, pageable, options) {
3019
+ return localVarFp.getPlayerConnections(uuid, pageable, options).then((request) => request(axios, basePath));
3020
+ },
3021
+ /**
3022
+ * 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.
3023
+ * @summary List a player\'s full punishment history
3024
+ * @param {string} uuid Player Minecraft UUID
3025
+ * @param {Pageable} pageable
3026
+ * @param {*} [options] Override http request option.
3027
+ * @throws {RequiredError}
3028
+ */
3029
+ getPlayerPunishments(uuid, pageable, options) {
3030
+ return localVarFp.getPlayerPunishments(uuid, pageable, options).then((request) => request(axios, basePath));
3031
+ },
3032
+ /**
3033
+ * 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.
3034
+ * @summary Get a player\'s aggregate session stats
3035
+ * @param {string} uuid Player Minecraft UUID
3036
+ * @param {*} [options] Override http request option.
3037
+ * @throws {RequiredError}
3038
+ */
3039
+ getSessionStats(uuid, options) {
3040
+ return localVarFp.getSessionStats(uuid, options).then((request) => request(axios, basePath));
3041
+ },
3042
+ /**
3043
+ * 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.
3044
+ * @summary List a player\'s alt exemptions
3045
+ * @param {string} uuid Player Minecraft UUID
3046
+ * @param {Pageable} pageable
3047
+ * @param {*} [options] Override http request option.
3048
+ * @throws {RequiredError}
3049
+ */
3050
+ listAltExemptions(uuid, pageable, options) {
3051
+ return localVarFp.listAltExemptions(uuid, pageable, options).then((request) => request(axios, basePath));
3052
+ },
3053
+ /**
3054
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3055
+ * @summary List staff notes on a player
3056
+ * @param {string} uuid Player Minecraft UUID
3057
+ * @param {Pageable} pageable
3058
+ * @param {*} [options] Override http request option.
3059
+ * @throws {RequiredError}
3060
+ */
3061
+ listPlayerNotes(uuid, pageable, options) {
3062
+ return localVarFp.listPlayerNotes(uuid, pageable, options).then((request) => request(axios, basePath));
3063
+ },
3064
+ /**
3065
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3066
+ * @summary List players
3067
+ * @param {Pageable} pageable
3068
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3069
+ * @param {*} [options] Override http request option.
3070
+ * @throws {RequiredError}
3071
+ */
3072
+ listPlayers(pageable, search, options) {
3073
+ return localVarFp.listPlayers(pageable, search, options).then((request) => request(axios, basePath));
3074
+ },
3075
+ /**
3076
+ * 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.
3077
+ * @summary List a player\'s session history
3078
+ * @param {string} uuid Player Minecraft UUID
3079
+ * @param {Pageable} pageable
3080
+ * @param {*} [options] Override http request option.
3081
+ * @throws {RequiredError}
3082
+ */
3083
+ listSessions(uuid, pageable, options) {
3084
+ return localVarFp.listSessions(uuid, pageable, options).then((request) => request(axios, basePath));
3085
+ },
3086
+ /**
3087
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3088
+ * @summary Remove an alt exemption
3089
+ * @param {string} uuid Player Minecraft UUID
3090
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3091
+ * @param {*} [options] Override http request option.
3092
+ * @throws {RequiredError}
3093
+ */
3094
+ removeAltExemption(uuid, altPlayerUuid, options) {
3095
+ return localVarFp.removeAltExemption(uuid, altPlayerUuid, options).then((request) => request(axios, basePath));
3096
+ },
3097
+ /**
3098
+ * 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.
3099
+ * @summary Revoke a propagated punishment link
3100
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3101
+ * @param {number} playerPunishmentId player_punishment row id
3102
+ * @param {*} [options] Override http request option.
3103
+ * @throws {RequiredError}
3104
+ */
3105
+ revokePropagatedLink(uuid, playerPunishmentId, options) {
3106
+ return localVarFp.revokePropagatedLink(uuid, playerPunishmentId, options).then((request) => request(axios, basePath));
3107
+ },
3108
+ /**
3109
+ * 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.
3110
+ * @summary Toggle aggressive-mode immunity
3111
+ * @param {string} uuid Player Minecraft UUID
3112
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
3113
+ * @param {*} [options] Override http request option.
3114
+ * @throws {RequiredError}
3115
+ */
3116
+ setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options) {
3117
+ return localVarFp.setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options).then((request) => request(axios, basePath));
3118
+ },
3119
+ /**
3120
+ * 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.
3121
+ * @summary Trust factor breakdown for a player
3122
+ * @param {string} uuid Player Minecraft UUID
3123
+ * @param {*} [options] Override http request option.
3124
+ * @throws {RequiredError}
3125
+ */
3126
+ trustFactorBreakdown(uuid, options) {
3127
+ return localVarFp.trustFactorBreakdown(uuid, options).then((request) => request(axios, basePath));
3128
+ },
3129
+ /**
3130
+ * 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).
3131
+ * @summary Trust factor history for a player
3132
+ * @param {string} uuid Player Minecraft UUID
3133
+ * @param {number} [days] Window in days (default 30, max 365)
3134
+ * @param {*} [options] Override http request option.
3135
+ * @throws {RequiredError}
3136
+ */
3137
+ trustFactorHistory(uuid, days, options) {
3138
+ return localVarFp.trustFactorHistory(uuid, days, options).then((request) => request(axios, basePath));
3139
+ },
3140
+ };
3141
+ };
3142
+ /**
3143
+ * AdminPlayersApi - object-oriented interface
3144
+ */
3145
+ export class AdminPlayersApi extends BaseAPI {
3146
+ /**
3147
+ * 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.
3148
+ * @summary Add an alt exemption
3149
+ * @param {string} uuid Player Minecraft UUID
3150
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
3151
+ * @param {*} [options] Override http request option.
3152
+ * @throws {RequiredError}
3153
+ */
3154
+ addAltExemption(uuid, adminCreateAltExemptionRequest, options) {
3155
+ return AdminPlayersApiFp(this.configuration).addAltExemption(uuid, adminCreateAltExemptionRequest, options).then((request) => request(this.axios, this.basePath));
3156
+ }
3157
+ /**
3158
+ * 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.
3159
+ * @summary Start a username backfill job
3160
+ * @param {*} [options] Override http request option.
3161
+ * @throws {RequiredError}
3162
+ */
3163
+ backfillUsernames(options) {
3164
+ return AdminPlayersApiFp(this.configuration).backfillUsernames(options).then((request) => request(this.axios, this.basePath));
3165
+ }
3166
+ /**
3167
+ * 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.
3168
+ * @summary Bulk-revoke PROPAGATED links by source
3169
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
3170
+ * @param {*} [options] Override http request option.
3171
+ * @throws {RequiredError}
3172
+ */
3173
+ bulkRevokePropagated(adminBulkRevokeRequest, options) {
3174
+ return AdminPlayersApiFp(this.configuration).bulkRevokePropagated(adminBulkRevokeRequest, options).then((request) => request(this.axios, this.basePath));
3175
+ }
3176
+ /**
3177
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
3178
+ * @summary Create a staff note on a player
3179
+ * @param {string} uuid Player Minecraft UUID
3180
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
3181
+ * @param {*} [options] Override http request option.
3182
+ * @throws {RequiredError}
3183
+ */
3184
+ createPlayerNote(uuid, adminCreatePlayerNoteRequest, options) {
3185
+ return AdminPlayersApiFp(this.configuration).createPlayerNote(uuid, adminCreatePlayerNoteRequest, options).then((request) => request(this.axios, this.basePath));
3186
+ }
3187
+ /**
3188
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
3189
+ * @summary Soft-delete a staff note
3190
+ * @param {string} uuid Player Minecraft UUID (routing only)
3191
+ * @param {number} noteId Note id
3192
+ * @param {*} [options] Override http request option.
3193
+ * @throws {RequiredError}
3194
+ */
3195
+ deletePlayerNote(uuid, noteId, options) {
3196
+ return AdminPlayersApiFp(this.configuration).deletePlayerNote(uuid, noteId, options).then((request) => request(this.axios, this.basePath));
3197
+ }
3198
+ /**
3199
+ * 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.
3200
+ * @summary Alt-graph traversal rooted at a player
3201
+ * @param {string} uuid Player Minecraft UUID
3202
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
3203
+ * @param {*} [options] Override http request option.
3204
+ * @throws {RequiredError}
3205
+ */
3206
+ getAltGraph(uuid, depth, options) {
3207
+ return AdminPlayersApiFp(this.configuration).getAltGraph(uuid, depth, options).then((request) => request(this.axios, this.basePath));
3208
+ }
3209
+ /**
3210
+ * Returns full detail for a single player including all known usernames and punishment scoring.
3211
+ * @summary Get player detail
3212
+ * @param {string} uuid Player Minecraft UUID
3213
+ * @param {*} [options] Override http request option.
3214
+ * @throws {RequiredError}
3215
+ */
3216
+ getPlayer(uuid, options) {
3217
+ return AdminPlayersApiFp(this.configuration).getPlayer(uuid, options).then((request) => request(this.axios, this.basePath));
3218
+ }
3219
+ /**
3220
+ * 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.
3221
+ * @summary List a player\'s alt accounts
3222
+ * @param {string} uuid Player Minecraft UUID
3223
+ * @param {Pageable} pageable
3224
+ * @param {*} [options] Override http request option.
3225
+ * @throws {RequiredError}
3226
+ */
3227
+ getPlayerAlts(uuid, pageable, options) {
3228
+ return AdminPlayersApiFp(this.configuration).getPlayerAlts(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3229
+ }
3230
+ /**
3231
+ * 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.
3232
+ * @summary List a player\'s connection history
3233
+ * @param {string} uuid Player Minecraft UUID
3234
+ * @param {Pageable} pageable
3235
+ * @param {*} [options] Override http request option.
3236
+ * @throws {RequiredError}
3237
+ */
3238
+ getPlayerConnections(uuid, pageable, options) {
3239
+ return AdminPlayersApiFp(this.configuration).getPlayerConnections(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3240
+ }
3241
+ /**
3242
+ * 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.
3243
+ * @summary List a player\'s full punishment history
3244
+ * @param {string} uuid Player Minecraft UUID
3245
+ * @param {Pageable} pageable
3246
+ * @param {*} [options] Override http request option.
3247
+ * @throws {RequiredError}
3248
+ */
3249
+ getPlayerPunishments(uuid, pageable, options) {
3250
+ return AdminPlayersApiFp(this.configuration).getPlayerPunishments(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3251
+ }
3252
+ /**
3253
+ * 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.
3254
+ * @summary Get a player\'s aggregate session stats
3255
+ * @param {string} uuid Player Minecraft UUID
3256
+ * @param {*} [options] Override http request option.
3257
+ * @throws {RequiredError}
3258
+ */
3259
+ getSessionStats(uuid, options) {
3260
+ return AdminPlayersApiFp(this.configuration).getSessionStats(uuid, options).then((request) => request(this.axios, this.basePath));
3261
+ }
3262
+ /**
3263
+ * 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.
3264
+ * @summary List a player\'s alt exemptions
3265
+ * @param {string} uuid Player Minecraft UUID
3266
+ * @param {Pageable} pageable
3267
+ * @param {*} [options] Override http request option.
3268
+ * @throws {RequiredError}
3269
+ */
3270
+ listAltExemptions(uuid, pageable, options) {
3271
+ return AdminPlayersApiFp(this.configuration).listAltExemptions(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3272
+ }
3273
+ /**
3274
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3275
+ * @summary List staff notes on a player
3276
+ * @param {string} uuid Player Minecraft UUID
3277
+ * @param {Pageable} pageable
3278
+ * @param {*} [options] Override http request option.
3279
+ * @throws {RequiredError}
3280
+ */
3281
+ listPlayerNotes(uuid, pageable, options) {
3282
+ return AdminPlayersApiFp(this.configuration).listPlayerNotes(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3283
+ }
3284
+ /**
3285
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3286
+ * @summary List players
3287
+ * @param {Pageable} pageable
3288
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3289
+ * @param {*} [options] Override http request option.
3290
+ * @throws {RequiredError}
3291
+ */
3292
+ listPlayers(pageable, search, options) {
3293
+ return AdminPlayersApiFp(this.configuration).listPlayers(pageable, search, options).then((request) => request(this.axios, this.basePath));
3294
+ }
3295
+ /**
3296
+ * 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.
3297
+ * @summary List a player\'s session history
3298
+ * @param {string} uuid Player Minecraft UUID
3299
+ * @param {Pageable} pageable
3300
+ * @param {*} [options] Override http request option.
3301
+ * @throws {RequiredError}
3302
+ */
3303
+ listSessions(uuid, pageable, options) {
3304
+ return AdminPlayersApiFp(this.configuration).listSessions(uuid, pageable, options).then((request) => request(this.axios, this.basePath));
3305
+ }
3306
+ /**
3307
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3308
+ * @summary Remove an alt exemption
3309
+ * @param {string} uuid Player Minecraft UUID
3310
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3311
+ * @param {*} [options] Override http request option.
3312
+ * @throws {RequiredError}
3313
+ */
3314
+ removeAltExemption(uuid, altPlayerUuid, options) {
3315
+ return AdminPlayersApiFp(this.configuration).removeAltExemption(uuid, altPlayerUuid, options).then((request) => request(this.axios, this.basePath));
3316
+ }
3317
+ /**
3318
+ * 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.
3319
+ * @summary Revoke a propagated punishment link
3320
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3321
+ * @param {number} playerPunishmentId player_punishment row id
3322
+ * @param {*} [options] Override http request option.
3323
+ * @throws {RequiredError}
3324
+ */
3325
+ revokePropagatedLink(uuid, playerPunishmentId, options) {
3326
+ return AdminPlayersApiFp(this.configuration).revokePropagatedLink(uuid, playerPunishmentId, options).then((request) => request(this.axios, this.basePath));
3327
+ }
3328
+ /**
3329
+ * 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.
3330
+ * @summary Toggle aggressive-mode immunity
3331
+ * @param {string} uuid Player Minecraft UUID
3332
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
3333
+ * @param {*} [options] Override http request option.
3334
+ * @throws {RequiredError}
3335
+ */
3336
+ setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options) {
3337
+ return AdminPlayersApiFp(this.configuration).setAggressiveModeImmunity(uuid, adminSetAggressiveModeImmunityRequest, options).then((request) => request(this.axios, this.basePath));
3338
+ }
3339
+ /**
3340
+ * 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.
3341
+ * @summary Trust factor breakdown for a player
3342
+ * @param {string} uuid Player Minecraft UUID
3343
+ * @param {*} [options] Override http request option.
3344
+ * @throws {RequiredError}
3345
+ */
3346
+ trustFactorBreakdown(uuid, options) {
3347
+ return AdminPlayersApiFp(this.configuration).trustFactorBreakdown(uuid, options).then((request) => request(this.axios, this.basePath));
3348
+ }
3349
+ /**
3350
+ * 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).
3351
+ * @summary Trust factor history for a player
3352
+ * @param {string} uuid Player Minecraft UUID
3353
+ * @param {number} [days] Window in days (default 30, max 365)
3354
+ * @param {*} [options] Override http request option.
3355
+ * @throws {RequiredError}
3356
+ */
3357
+ trustFactorHistory(uuid, days, options) {
3358
+ return AdminPlayersApiFp(this.configuration).trustFactorHistory(uuid, days, options).then((request) => request(this.axios, this.basePath));
3359
+ }
3360
+ }
3361
+ /**
3362
+ * AdminPunishmentsApi - axios parameter creator
3363
+ */
3364
+ export const AdminPunishmentsApiAxiosParamCreator = function (configuration) {
3365
+ return {
3366
+ /**
3367
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3368
+ * @summary Apply punishment
3369
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3370
+ * @param {*} [options] Override http request option.
3371
+ * @throws {RequiredError}
3372
+ */
3373
+ applyPunishment: (adminApplyPunishmentRequest_1, ...args_1) => __awaiter(this, [adminApplyPunishmentRequest_1, ...args_1], void 0, function* (adminApplyPunishmentRequest, options = {}) {
3374
+ // verify required parameter 'adminApplyPunishmentRequest' is not null or undefined
3375
+ assertParamExists('applyPunishment', 'adminApplyPunishmentRequest', adminApplyPunishmentRequest);
3376
+ const localVarPath = `/admin/punishment/apply`;
3377
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3378
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3379
+ let baseOptions;
3380
+ if (configuration) {
3381
+ baseOptions = configuration.baseOptions;
3382
+ }
3383
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3384
+ const localVarHeaderParameter = {};
3385
+ const localVarQueryParameter = {};
3386
+ // authentication DiscordAuth required
3387
+ // http bearer authentication required
3388
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3389
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3390
+ localVarHeaderParameter['Accept'] = 'application/json';
3391
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3392
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3393
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3394
+ localVarRequestOptions.data = serializeDataIfNeeded(adminApplyPunishmentRequest, localVarRequestOptions, configuration);
3395
+ return {
3396
+ url: toPathString(localVarUrlObj),
3397
+ options: localVarRequestOptions,
3398
+ };
3399
+ }),
3400
+ /**
3401
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3402
+ * @summary Evaluate punishment impact
3403
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3404
+ * @param {*} [options] Override http request option.
3405
+ * @throws {RequiredError}
3406
+ */
3407
+ createDraft: (adminCreatePunishmentDraftRequest_1, ...args_1) => __awaiter(this, [adminCreatePunishmentDraftRequest_1, ...args_1], void 0, function* (adminCreatePunishmentDraftRequest, options = {}) {
3408
+ // verify required parameter 'adminCreatePunishmentDraftRequest' is not null or undefined
3409
+ assertParamExists('createDraft', 'adminCreatePunishmentDraftRequest', adminCreatePunishmentDraftRequest);
3410
+ const localVarPath = `/admin/punishment/draft`;
3411
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3412
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3413
+ let baseOptions;
3414
+ if (configuration) {
3415
+ baseOptions = configuration.baseOptions;
3416
+ }
3417
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3418
+ const localVarHeaderParameter = {};
3419
+ const localVarQueryParameter = {};
3420
+ // authentication DiscordAuth required
3421
+ // http bearer authentication required
3422
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3423
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3424
+ localVarHeaderParameter['Accept'] = 'application/json';
3425
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3426
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3427
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3428
+ localVarRequestOptions.data = serializeDataIfNeeded(adminCreatePunishmentDraftRequest, localVarRequestOptions, configuration);
3429
+ return {
3430
+ url: toPathString(localVarUrlObj),
3431
+ options: localVarRequestOptions,
3432
+ };
3433
+ }),
3434
+ /**
3435
+ * 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.
3436
+ * @summary Edit a punishment
3437
+ * @param {number} id Punishment id
3438
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3439
+ * @param {*} [options] Override http request option.
3440
+ * @throws {RequiredError}
3441
+ */
3442
+ editPunishment: (id_1, adminUpdatePunishmentRequest_1, ...args_1) => __awaiter(this, [id_1, adminUpdatePunishmentRequest_1, ...args_1], void 0, function* (id, adminUpdatePunishmentRequest, options = {}) {
3443
+ // verify required parameter 'id' is not null or undefined
3444
+ assertParamExists('editPunishment', 'id', id);
3445
+ // verify required parameter 'adminUpdatePunishmentRequest' is not null or undefined
3446
+ assertParamExists('editPunishment', 'adminUpdatePunishmentRequest', adminUpdatePunishmentRequest);
3447
+ const localVarPath = `/admin/punishment/{id}`
3448
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3449
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3450
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3451
+ let baseOptions;
3452
+ if (configuration) {
3453
+ baseOptions = configuration.baseOptions;
3454
+ }
3455
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'PATCH' }, baseOptions), options);
3456
+ const localVarHeaderParameter = {};
3457
+ const localVarQueryParameter = {};
3458
+ // authentication DiscordAuth required
3459
+ // http bearer authentication required
3460
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3461
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3462
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3463
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3464
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3465
+ localVarRequestOptions.data = serializeDataIfNeeded(adminUpdatePunishmentRequest, localVarRequestOptions, configuration);
3466
+ return {
3467
+ url: toPathString(localVarUrlObj),
3468
+ options: localVarRequestOptions,
3469
+ };
3470
+ }),
3471
+ /**
3472
+ * 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\'.
3473
+ * @summary List a punishment\'s current participants
3474
+ * @param {number} id Punishment id
3475
+ * @param {*} [options] Override http request option.
3476
+ * @throws {RequiredError}
3477
+ */
3478
+ getPunishmentTargets: (id_1, ...args_1) => __awaiter(this, [id_1, ...args_1], void 0, function* (id, options = {}) {
3479
+ // verify required parameter 'id' is not null or undefined
3480
+ assertParamExists('getPunishmentTargets', 'id', id);
3481
+ const localVarPath = `/admin/punishment/{id}/targets`
3482
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3483
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3484
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3485
+ let baseOptions;
3486
+ if (configuration) {
3487
+ baseOptions = configuration.baseOptions;
3488
+ }
3489
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3490
+ const localVarHeaderParameter = {};
3491
+ const localVarQueryParameter = {};
3492
+ // authentication DiscordAuth required
3493
+ // http bearer authentication required
3494
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3495
+ localVarHeaderParameter['Accept'] = 'application/json';
3496
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3497
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3498
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3499
+ return {
3500
+ url: toPathString(localVarUrlObj),
3501
+ options: localVarRequestOptions,
3502
+ };
3503
+ }),
3504
+ /**
3505
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3506
+ * @summary List punishments
3507
+ * @param {Pageable} pageable
3508
+ * @param {string | null} [uuid]
3509
+ * @param {string | null} [username]
3510
+ * @param {string | null} [ipAddress]
3511
+ * @param {Array<PunishmentType> | null} [type]
3512
+ * @param {number | null} [issuedAfter]
3513
+ * @param {number | null} [issuedBefore]
3514
+ * @param {*} [options] Override http request option.
3515
+ * @throws {RequiredError}
3516
+ */
3517
+ 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 = {}) {
3518
+ // verify required parameter 'pageable' is not null or undefined
3519
+ assertParamExists('getPunishments', 'pageable', pageable);
3520
+ const localVarPath = `/admin/punishment`;
3521
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3522
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3523
+ let baseOptions;
3524
+ if (configuration) {
3525
+ baseOptions = configuration.baseOptions;
3526
+ }
3527
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3528
+ const localVarHeaderParameter = {};
3529
+ const localVarQueryParameter = {};
3530
+ // authentication DiscordAuth required
3531
+ // http bearer authentication required
3532
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3533
+ if (uuid !== undefined) {
3534
+ localVarQueryParameter['uuid'] = uuid;
3535
+ }
3536
+ if (username !== undefined) {
3537
+ localVarQueryParameter['username'] = username;
3538
+ }
3539
+ if (ipAddress !== undefined) {
3540
+ localVarQueryParameter['ipAddress'] = ipAddress;
3541
+ }
3542
+ if (type) {
3543
+ localVarQueryParameter['type'] = type.join(COLLECTION_FORMATS.csv);
3544
+ }
3545
+ if (issuedAfter !== undefined) {
3546
+ localVarQueryParameter['issuedAfter'] = issuedAfter;
3547
+ }
3548
+ if (issuedBefore !== undefined) {
3549
+ localVarQueryParameter['issuedBefore'] = issuedBefore;
3550
+ }
3551
+ if (pageable !== undefined) {
3552
+ localVarQueryParameter['pageable'] = pageable;
3553
+ }
3554
+ localVarHeaderParameter['Accept'] = 'application/json';
3555
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3556
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3557
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3558
+ return {
3559
+ url: toPathString(localVarUrlObj),
3560
+ options: localVarRequestOptions,
3561
+ };
3562
+ }),
3563
+ /**
3564
+ * 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.
3565
+ * @summary Start an alt-propagation sweep job
3566
+ * @param {*} [options] Override http request option.
3567
+ * @throws {RequiredError}
3568
+ */
3569
+ propagationSweep: (...args_1) => __awaiter(this, [...args_1], void 0, function* (options = {}) {
3570
+ const localVarPath = `/admin/punishment/propagation-sweep`;
3571
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3572
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3573
+ let baseOptions;
3574
+ if (configuration) {
3575
+ baseOptions = configuration.baseOptions;
3576
+ }
3577
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3578
+ const localVarHeaderParameter = {};
3579
+ const localVarQueryParameter = {};
3580
+ // authentication DiscordAuth required
3581
+ // http bearer authentication required
3582
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3583
+ localVarHeaderParameter['Accept'] = 'application/json';
3584
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3585
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3586
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3587
+ return {
3588
+ url: toPathString(localVarUrlObj),
3589
+ options: localVarRequestOptions,
3590
+ };
3591
+ }),
3592
+ /**
3593
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3594
+ * @summary Search punishment targets
3595
+ * @param {string} q UUID, username, or partial/full IP address to search for
3596
+ * @param {*} [options] Override http request option.
3597
+ * @throws {RequiredError}
3598
+ */
3599
+ searchTargets: (q_1, ...args_1) => __awaiter(this, [q_1, ...args_1], void 0, function* (q, options = {}) {
3600
+ // verify required parameter 'q' is not null or undefined
3601
+ assertParamExists('searchTargets', 'q', q);
3602
+ const localVarPath = `/admin/punishment/search`;
3603
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3604
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3605
+ let baseOptions;
3606
+ if (configuration) {
3607
+ baseOptions = configuration.baseOptions;
3608
+ }
3609
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3610
+ const localVarHeaderParameter = {};
3611
+ const localVarQueryParameter = {};
3612
+ // authentication DiscordAuth required
3613
+ // http bearer authentication required
3614
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3615
+ if (q !== undefined) {
3616
+ localVarQueryParameter['q'] = q;
3617
+ }
3618
+ localVarHeaderParameter['Accept'] = 'application/json';
3619
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3620
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3621
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3622
+ return {
3623
+ url: toPathString(localVarUrlObj),
3624
+ options: localVarRequestOptions,
3625
+ };
3626
+ }),
3627
+ };
3628
+ };
3629
+ /**
3630
+ * AdminPunishmentsApi - functional programming interface
3631
+ */
3632
+ export const AdminPunishmentsApiFp = function (configuration) {
3633
+ const localVarAxiosParamCreator = AdminPunishmentsApiAxiosParamCreator(configuration);
3634
+ return {
3635
+ /**
3636
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3637
+ * @summary Apply punishment
3638
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3639
+ * @param {*} [options] Override http request option.
3640
+ * @throws {RequiredError}
3641
+ */
3642
+ applyPunishment(adminApplyPunishmentRequest, options) {
3643
+ return __awaiter(this, void 0, void 0, function* () {
3644
+ var _a, _b, _c;
3645
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.applyPunishment(adminApplyPunishmentRequest, options);
3646
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3647
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.applyPunishment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3648
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3649
+ });
3650
+ },
3651
+ /**
3652
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3653
+ * @summary Evaluate punishment impact
3654
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3655
+ * @param {*} [options] Override http request option.
3656
+ * @throws {RequiredError}
3657
+ */
3658
+ createDraft(adminCreatePunishmentDraftRequest, options) {
3659
+ return __awaiter(this, void 0, void 0, function* () {
3660
+ var _a, _b, _c;
3661
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.createDraft(adminCreatePunishmentDraftRequest, options);
3662
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3663
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.createDraft']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3664
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3665
+ });
3666
+ },
3667
+ /**
3668
+ * 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.
3669
+ * @summary Edit a punishment
3670
+ * @param {number} id Punishment id
3671
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3672
+ * @param {*} [options] Override http request option.
3673
+ * @throws {RequiredError}
3674
+ */
3675
+ editPunishment(id, adminUpdatePunishmentRequest, options) {
3676
+ return __awaiter(this, void 0, void 0, function* () {
3677
+ var _a, _b, _c;
3678
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.editPunishment(id, adminUpdatePunishmentRequest, options);
3679
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3680
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.editPunishment']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3681
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3682
+ });
3683
+ },
3684
+ /**
3685
+ * 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\'.
3686
+ * @summary List a punishment\'s current participants
3687
+ * @param {number} id Punishment id
3688
+ * @param {*} [options] Override http request option.
3689
+ * @throws {RequiredError}
3690
+ */
3691
+ getPunishmentTargets(id, options) {
3692
+ return __awaiter(this, void 0, void 0, function* () {
3693
+ var _a, _b, _c;
3694
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPunishmentTargets(id, options);
3695
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3696
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.getPunishmentTargets']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3697
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3698
+ });
3699
+ },
3700
+ /**
3701
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3702
+ * @summary List punishments
3703
+ * @param {Pageable} pageable
3704
+ * @param {string | null} [uuid]
3705
+ * @param {string | null} [username]
3706
+ * @param {string | null} [ipAddress]
3707
+ * @param {Array<PunishmentType> | null} [type]
3708
+ * @param {number | null} [issuedAfter]
3709
+ * @param {number | null} [issuedBefore]
3710
+ * @param {*} [options] Override http request option.
3711
+ * @throws {RequiredError}
3712
+ */
3713
+ getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
3714
+ return __awaiter(this, void 0, void 0, function* () {
3715
+ var _a, _b, _c;
3716
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options);
3717
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3718
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.getPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3719
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3720
+ });
3721
+ },
3722
+ /**
3723
+ * 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.
3724
+ * @summary Start an alt-propagation sweep job
3725
+ * @param {*} [options] Override http request option.
3726
+ * @throws {RequiredError}
3727
+ */
3728
+ propagationSweep(options) {
3729
+ return __awaiter(this, void 0, void 0, function* () {
3730
+ var _a, _b, _c;
3731
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.propagationSweep(options);
3732
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3733
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.propagationSweep']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3734
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3735
+ });
3736
+ },
3737
+ /**
3738
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3739
+ * @summary Search punishment targets
3740
+ * @param {string} q UUID, username, or partial/full IP address to search for
3741
+ * @param {*} [options] Override http request option.
3742
+ * @throws {RequiredError}
3743
+ */
3744
+ searchTargets(q, options) {
3745
+ return __awaiter(this, void 0, void 0, function* () {
3746
+ var _a, _b, _c;
3747
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.searchTargets(q, options);
3748
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
3749
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.searchTargets']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
3750
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3751
+ });
3752
+ },
3753
+ };
3754
+ };
3755
+ /**
3756
+ * AdminPunishmentsApi - factory interface
3757
+ */
3758
+ export const AdminPunishmentsApiFactory = function (configuration, basePath, axios) {
3759
+ const localVarFp = AdminPunishmentsApiFp(configuration);
3760
+ return {
3761
+ /**
3762
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3763
+ * @summary Apply punishment
3764
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3765
+ * @param {*} [options] Override http request option.
3766
+ * @throws {RequiredError}
3767
+ */
3768
+ applyPunishment(adminApplyPunishmentRequest, options) {
3769
+ return localVarFp.applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(axios, basePath));
3770
+ },
3771
+ /**
3772
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3773
+ * @summary Evaluate punishment impact
3774
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3775
+ * @param {*} [options] Override http request option.
3776
+ * @throws {RequiredError}
3777
+ */
3778
+ createDraft(adminCreatePunishmentDraftRequest, options) {
3779
+ return localVarFp.createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(axios, basePath));
3780
+ },
3781
+ /**
3782
+ * 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.
3783
+ * @summary Edit a punishment
3784
+ * @param {number} id Punishment id
3785
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3786
+ * @param {*} [options] Override http request option.
3787
+ * @throws {RequiredError}
3788
+ */
3789
+ editPunishment(id, adminUpdatePunishmentRequest, options) {
3790
+ return localVarFp.editPunishment(id, adminUpdatePunishmentRequest, options).then((request) => request(axios, basePath));
3791
+ },
3792
+ /**
3793
+ * 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\'.
3794
+ * @summary List a punishment\'s current participants
3795
+ * @param {number} id Punishment id
3796
+ * @param {*} [options] Override http request option.
3797
+ * @throws {RequiredError}
3798
+ */
3799
+ getPunishmentTargets(id, options) {
3800
+ return localVarFp.getPunishmentTargets(id, options).then((request) => request(axios, basePath));
3801
+ },
3802
+ /**
3803
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3804
+ * @summary List punishments
3805
+ * @param {Pageable} pageable
3806
+ * @param {string | null} [uuid]
3807
+ * @param {string | null} [username]
3808
+ * @param {string | null} [ipAddress]
3809
+ * @param {Array<PunishmentType> | null} [type]
3810
+ * @param {number | null} [issuedAfter]
3811
+ * @param {number | null} [issuedBefore]
3812
+ * @param {*} [options] Override http request option.
3813
+ * @throws {RequiredError}
3814
+ */
3815
+ getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
3816
+ return localVarFp.getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(axios, basePath));
3817
+ },
3818
+ /**
3819
+ * 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.
3820
+ * @summary Start an alt-propagation sweep job
3821
+ * @param {*} [options] Override http request option.
3822
+ * @throws {RequiredError}
3823
+ */
3824
+ propagationSweep(options) {
3825
+ return localVarFp.propagationSweep(options).then((request) => request(axios, basePath));
3826
+ },
3827
+ /**
3828
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3829
+ * @summary Search punishment targets
3830
+ * @param {string} q UUID, username, or partial/full IP address to search for
3831
+ * @param {*} [options] Override http request option.
3832
+ * @throws {RequiredError}
3833
+ */
3834
+ searchTargets(q, options) {
3835
+ return localVarFp.searchTargets(q, options).then((request) => request(axios, basePath));
1509
3836
  },
3837
+ };
3838
+ };
3839
+ /**
3840
+ * AdminPunishmentsApi - object-oriented interface
3841
+ */
3842
+ export class AdminPunishmentsApi extends BaseAPI {
3843
+ /**
3844
+ * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
3845
+ * @summary Apply punishment
3846
+ * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
3847
+ * @param {*} [options] Override http request option.
3848
+ * @throws {RequiredError}
3849
+ */
3850
+ applyPunishment(adminApplyPunishmentRequest, options) {
3851
+ return AdminPunishmentsApiFp(this.configuration).applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(this.axios, this.basePath));
3852
+ }
3853
+ /**
3854
+ * Preview the impact of a punishment across one or more targets. No changes are made.
3855
+ * @summary Evaluate punishment impact
3856
+ * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
3857
+ * @param {*} [options] Override http request option.
3858
+ * @throws {RequiredError}
3859
+ */
3860
+ createDraft(adminCreatePunishmentDraftRequest, options) {
3861
+ return AdminPunishmentsApiFp(this.configuration).createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(this.axios, this.basePath));
3862
+ }
3863
+ /**
3864
+ * 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.
3865
+ * @summary Edit a punishment
3866
+ * @param {number} id Punishment id
3867
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3868
+ * @param {*} [options] Override http request option.
3869
+ * @throws {RequiredError}
3870
+ */
3871
+ editPunishment(id, adminUpdatePunishmentRequest, options) {
3872
+ return AdminPunishmentsApiFp(this.configuration).editPunishment(id, adminUpdatePunishmentRequest, options).then((request) => request(this.axios, this.basePath));
3873
+ }
3874
+ /**
3875
+ * 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\'.
3876
+ * @summary List a punishment\'s current participants
3877
+ * @param {number} id Punishment id
3878
+ * @param {*} [options] Override http request option.
3879
+ * @throws {RequiredError}
3880
+ */
3881
+ getPunishmentTargets(id, options) {
3882
+ return AdminPunishmentsApiFp(this.configuration).getPunishmentTargets(id, options).then((request) => request(this.axios, this.basePath));
3883
+ }
3884
+ /**
3885
+ * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
3886
+ * @summary List punishments
3887
+ * @param {Pageable} pageable
3888
+ * @param {string | null} [uuid]
3889
+ * @param {string | null} [username]
3890
+ * @param {string | null} [ipAddress]
3891
+ * @param {Array<PunishmentType> | null} [type]
3892
+ * @param {number | null} [issuedAfter]
3893
+ * @param {number | null} [issuedBefore]
3894
+ * @param {*} [options] Override http request option.
3895
+ * @throws {RequiredError}
3896
+ */
3897
+ getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
3898
+ return AdminPunishmentsApiFp(this.configuration).getPunishments(pageable, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(this.axios, this.basePath));
3899
+ }
3900
+ /**
3901
+ * 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.
3902
+ * @summary Start an alt-propagation sweep job
3903
+ * @param {*} [options] Override http request option.
3904
+ * @throws {RequiredError}
3905
+ */
3906
+ propagationSweep(options) {
3907
+ return AdminPunishmentsApiFp(this.configuration).propagationSweep(options).then((request) => request(this.axios, this.basePath));
3908
+ }
3909
+ /**
3910
+ * Search for players by UUID or username, or look up all players associated with an IP address.
3911
+ * @summary Search punishment targets
3912
+ * @param {string} q UUID, username, or partial/full IP address to search for
3913
+ * @param {*} [options] Override http request option.
3914
+ * @throws {RequiredError}
3915
+ */
3916
+ searchTargets(q, options) {
3917
+ return AdminPunishmentsApiFp(this.configuration).searchTargets(q, options).then((request) => request(this.axios, this.basePath));
3918
+ }
3919
+ }
3920
+ /**
3921
+ * AdminReportsApi - axios parameter creator
3922
+ */
3923
+ export const AdminReportsApiAxiosParamCreator = function (configuration) {
3924
+ return {
3925
+ /**
3926
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3927
+ * @summary List reports
3928
+ * @param {Pageable} pageable
3929
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3930
+ * @param {boolean} [openOnly]
3931
+ * @param {*} [options] Override http request option.
3932
+ * @throws {RequiredError}
3933
+ */
3934
+ 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 = {}) {
3935
+ // verify required parameter 'pageable' is not null or undefined
3936
+ assertParamExists('list1', 'pageable', pageable);
3937
+ const localVarPath = `/admin/report`;
3938
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3939
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3940
+ let baseOptions;
3941
+ if (configuration) {
3942
+ baseOptions = configuration.baseOptions;
3943
+ }
3944
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'GET' }, baseOptions), options);
3945
+ const localVarHeaderParameter = {};
3946
+ const localVarQueryParameter = {};
3947
+ // authentication DiscordAuth required
3948
+ // http bearer authentication required
3949
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3950
+ if (reportedUuid !== undefined) {
3951
+ localVarQueryParameter['reportedUuid'] = reportedUuid;
3952
+ }
3953
+ if (openOnly !== undefined) {
3954
+ localVarQueryParameter['openOnly'] = openOnly;
3955
+ }
3956
+ if (pageable !== undefined) {
3957
+ localVarQueryParameter['pageable'] = pageable;
3958
+ }
3959
+ localVarHeaderParameter['Accept'] = 'application/json';
3960
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3961
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3962
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3963
+ return {
3964
+ url: toPathString(localVarUrlObj),
3965
+ options: localVarRequestOptions,
3966
+ };
3967
+ }),
3968
+ /**
3969
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3970
+ * @summary Resolve a report
3971
+ * @param {number} id Report id
3972
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3973
+ * @param {*} [options] Override http request option.
3974
+ * @throws {RequiredError}
3975
+ */
3976
+ resolve: (id_1, adminResolveReportRequest_1, ...args_1) => __awaiter(this, [id_1, adminResolveReportRequest_1, ...args_1], void 0, function* (id, adminResolveReportRequest, options = {}) {
3977
+ // verify required parameter 'id' is not null or undefined
3978
+ assertParamExists('resolve', 'id', id);
3979
+ // verify required parameter 'adminResolveReportRequest' is not null or undefined
3980
+ assertParamExists('resolve', 'adminResolveReportRequest', adminResolveReportRequest);
3981
+ const localVarPath = `/admin/report/{id}/resolve`
3982
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3983
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3984
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3985
+ let baseOptions;
3986
+ if (configuration) {
3987
+ baseOptions = configuration.baseOptions;
3988
+ }
3989
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
3990
+ const localVarHeaderParameter = {};
3991
+ const localVarQueryParameter = {};
3992
+ // authentication DiscordAuth required
3993
+ // http bearer authentication required
3994
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
3995
+ localVarHeaderParameter['Content-Type'] = 'application/json';
3996
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3997
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3998
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
3999
+ localVarRequestOptions.data = serializeDataIfNeeded(adminResolveReportRequest, localVarRequestOptions, configuration);
4000
+ return {
4001
+ url: toPathString(localVarUrlObj),
4002
+ options: localVarRequestOptions,
4003
+ };
4004
+ }),
4005
+ };
4006
+ };
4007
+ /**
4008
+ * AdminReportsApi - functional programming interface
4009
+ */
4010
+ export const AdminReportsApiFp = function (configuration) {
4011
+ const localVarAxiosParamCreator = AdminReportsApiAxiosParamCreator(configuration);
4012
+ return {
1510
4013
  /**
1511
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1512
- * @summary List punishments
1513
- * @param {number} page Page number (1-indexed)
1514
- * @param {number} limit Page size
1515
- * @param {string | null} [uuid] Filter by player UUID
1516
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1517
- * @param {string | null} [ipAddress] Filter by IP address
1518
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1519
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1520
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
4014
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
4015
+ * @summary List reports
4016
+ * @param {Pageable} pageable
4017
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
4018
+ * @param {boolean} [openOnly]
1521
4019
  * @param {*} [options] Override http request option.
1522
4020
  * @throws {RequiredError}
1523
4021
  */
1524
- getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
4022
+ list1(pageable, reportedUuid, openOnly, options) {
1525
4023
  return __awaiter(this, void 0, void 0, function* () {
1526
4024
  var _a, _b, _c;
1527
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options);
4025
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.list1(pageable, reportedUuid, openOnly, options);
1528
4026
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1529
- const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.getPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
4027
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminReportsApi.list1']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1530
4028
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1531
4029
  });
1532
4030
  },
1533
4031
  /**
1534
- * Search for players by UUID or username, or look up all players associated with an IP address.
1535
- * @summary Search punishment targets
1536
- * @param {string} q UUID, username, or partial/full IP address to search for
4032
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4033
+ * @summary Resolve a report
4034
+ * @param {number} id Report id
4035
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
1537
4036
  * @param {*} [options] Override http request option.
1538
4037
  * @throws {RequiredError}
1539
4038
  */
1540
- searchTargets(q, options) {
4039
+ resolve(id, adminResolveReportRequest, options) {
1541
4040
  return __awaiter(this, void 0, void 0, function* () {
1542
4041
  var _a, _b, _c;
1543
- const localVarAxiosArgs = yield localVarAxiosParamCreator.searchTargets(q, options);
4042
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.resolve(id, adminResolveReportRequest, options);
1544
4043
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
1545
- const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminPunishmentsApi.searchTargets']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
4044
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['AdminReportsApi.resolve']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
1546
4045
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
1547
4046
  });
1548
4047
  },
1549
4048
  };
1550
4049
  };
1551
4050
  /**
1552
- * AdminPunishmentsApi - factory interface
4051
+ * AdminReportsApi - factory interface
1553
4052
  */
1554
- export const AdminPunishmentsApiFactory = function (configuration, basePath, axios) {
1555
- const localVarFp = AdminPunishmentsApiFp(configuration);
4053
+ export const AdminReportsApiFactory = function (configuration, basePath, axios) {
4054
+ const localVarFp = AdminReportsApiFp(configuration);
1556
4055
  return {
1557
4056
  /**
1558
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1559
- * @summary Apply punishment
1560
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1561
- * @param {*} [options] Override http request option.
1562
- * @throws {RequiredError}
1563
- */
1564
- applyPunishment(adminApplyPunishmentRequest, options) {
1565
- return localVarFp.applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(axios, basePath));
1566
- },
1567
- /**
1568
- * Preview the impact of a punishment across one or more targets. No changes are made.
1569
- * @summary Evaluate punishment impact
1570
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
1571
- * @param {*} [options] Override http request option.
1572
- * @throws {RequiredError}
1573
- */
1574
- createDraft(adminCreatePunishmentDraftRequest, options) {
1575
- return localVarFp.createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(axios, basePath));
1576
- },
1577
- /**
1578
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1579
- * @summary List punishments
1580
- * @param {number} page Page number (1-indexed)
1581
- * @param {number} limit Page size
1582
- * @param {string | null} [uuid] Filter by player UUID
1583
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1584
- * @param {string | null} [ipAddress] Filter by IP address
1585
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1586
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1587
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
4057
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
4058
+ * @summary List reports
4059
+ * @param {Pageable} pageable
4060
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
4061
+ * @param {boolean} [openOnly]
1588
4062
  * @param {*} [options] Override http request option.
1589
4063
  * @throws {RequiredError}
1590
4064
  */
1591
- getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
1592
- return localVarFp.getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(axios, basePath));
4065
+ list1(pageable, reportedUuid, openOnly, options) {
4066
+ return localVarFp.list1(pageable, reportedUuid, openOnly, options).then((request) => request(axios, basePath));
1593
4067
  },
1594
4068
  /**
1595
- * Search for players by UUID or username, or look up all players associated with an IP address.
1596
- * @summary Search punishment targets
1597
- * @param {string} q UUID, username, or partial/full IP address to search for
4069
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4070
+ * @summary Resolve a report
4071
+ * @param {number} id Report id
4072
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
1598
4073
  * @param {*} [options] Override http request option.
1599
4074
  * @throws {RequiredError}
1600
4075
  */
1601
- searchTargets(q, options) {
1602
- return localVarFp.searchTargets(q, options).then((request) => request(axios, basePath));
4076
+ resolve(id, adminResolveReportRequest, options) {
4077
+ return localVarFp.resolve(id, adminResolveReportRequest, options).then((request) => request(axios, basePath));
1603
4078
  },
1604
4079
  };
1605
4080
  };
1606
4081
  /**
1607
- * AdminPunishmentsApi - object-oriented interface
4082
+ * AdminReportsApi - object-oriented interface
1608
4083
  */
1609
- export class AdminPunishmentsApi extends BaseAPI {
1610
- /**
1611
- * Apply a punishment to one or more targets. The authenticated user is recorded as the issuer.
1612
- * @summary Apply punishment
1613
- * @param {AdminApplyPunishmentRequest} adminApplyPunishmentRequest
1614
- * @param {*} [options] Override http request option.
1615
- * @throws {RequiredError}
1616
- */
1617
- applyPunishment(adminApplyPunishmentRequest, options) {
1618
- return AdminPunishmentsApiFp(this.configuration).applyPunishment(adminApplyPunishmentRequest, options).then((request) => request(this.axios, this.basePath));
1619
- }
1620
- /**
1621
- * Preview the impact of a punishment across one or more targets. No changes are made.
1622
- * @summary Evaluate punishment impact
1623
- * @param {AdminCreatePunishmentDraftRequest} adminCreatePunishmentDraftRequest
1624
- * @param {*} [options] Override http request option.
1625
- * @throws {RequiredError}
1626
- */
1627
- createDraft(adminCreatePunishmentDraftRequest, options) {
1628
- return AdminPunishmentsApiFp(this.configuration).createDraft(adminCreatePunishmentDraftRequest, options).then((request) => request(this.axios, this.basePath));
1629
- }
4084
+ export class AdminReportsApi extends BaseAPI {
1630
4085
  /**
1631
- * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1632
- * @summary List punishments
1633
- * @param {number} page Page number (1-indexed)
1634
- * @param {number} limit Page size
1635
- * @param {string | null} [uuid] Filter by player UUID
1636
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1637
- * @param {string | null} [ipAddress] Filter by IP address
1638
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1639
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1640
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
4086
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
4087
+ * @summary List reports
4088
+ * @param {Pageable} pageable
4089
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
4090
+ * @param {boolean} [openOnly]
1641
4091
  * @param {*} [options] Override http request option.
1642
4092
  * @throws {RequiredError}
1643
4093
  */
1644
- getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options) {
1645
- return AdminPunishmentsApiFp(this.configuration).getPunishments(page, limit, uuid, username, ipAddress, type, issuedAfter, issuedBefore, options).then((request) => request(this.axios, this.basePath));
4094
+ list1(pageable, reportedUuid, openOnly, options) {
4095
+ return AdminReportsApiFp(this.configuration).list1(pageable, reportedUuid, openOnly, options).then((request) => request(this.axios, this.basePath));
1646
4096
  }
1647
4097
  /**
1648
- * Search for players by UUID or username, or look up all players associated with an IP address.
1649
- * @summary Search punishment targets
1650
- * @param {string} q UUID, username, or partial/full IP address to search for
4098
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
4099
+ * @summary Resolve a report
4100
+ * @param {number} id Report id
4101
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
1651
4102
  * @param {*} [options] Override http request option.
1652
4103
  * @throws {RequiredError}
1653
4104
  */
1654
- searchTargets(q, options) {
1655
- return AdminPunishmentsApiFp(this.configuration).searchTargets(q, options).then((request) => request(this.axios, this.basePath));
4105
+ resolve(id, adminResolveReportRequest, options) {
4106
+ return AdminReportsApiFp(this.configuration).resolve(id, adminResolveReportRequest, options).then((request) => request(this.axios, this.basePath));
1656
4107
  }
1657
4108
  }
1658
4109
  /**
@@ -1975,15 +4426,13 @@ export const ChatApiAxiosParamCreator = function (configuration) {
1975
4426
  /**
1976
4427
  * 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.
1977
4428
  * @summary Get chat history
1978
- * @param {number} limit Maximum number of messages to return (1–100)
1979
4429
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1980
4430
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4431
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1981
4432
  * @param {*} [options] Override http request option.
1982
4433
  * @throws {RequiredError}
1983
4434
  */
1984
- 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 = {}) {
1985
- // verify required parameter 'limit' is not null or undefined
1986
- assertParamExists('history', 'limit', limit);
4435
+ 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 = {}) {
1987
4436
  const localVarPath = `/v1/chat`;
1988
4437
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
1989
4438
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -2060,16 +4509,16 @@ export const ChatApiFp = function (configuration) {
2060
4509
  /**
2061
4510
  * 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.
2062
4511
  * @summary Get chat history
2063
- * @param {number} limit Maximum number of messages to return (1–100)
2064
4512
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2065
4513
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4514
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2066
4515
  * @param {*} [options] Override http request option.
2067
4516
  * @throws {RequiredError}
2068
4517
  */
2069
- history(limit, sessionId, before, options) {
4518
+ history(sessionId, before, limit, options) {
2070
4519
  return __awaiter(this, void 0, void 0, function* () {
2071
4520
  var _a, _b, _c;
2072
- const localVarAxiosArgs = yield localVarAxiosParamCreator.history(limit, sessionId, before, options);
4521
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.history(sessionId, before, limit, options);
2073
4522
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2074
4523
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['ChatApi.history']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2075
4524
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -2102,14 +4551,14 @@ export const ChatApiFactory = function (configuration, basePath, axios) {
2102
4551
  /**
2103
4552
  * 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.
2104
4553
  * @summary Get chat history
2105
- * @param {number} limit Maximum number of messages to return (1–100)
2106
4554
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2107
4555
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4556
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2108
4557
  * @param {*} [options] Override http request option.
2109
4558
  * @throws {RequiredError}
2110
4559
  */
2111
- history(limit, sessionId, before, options) {
2112
- return localVarFp.history(limit, sessionId, before, options).then((request) => request(axios, basePath));
4560
+ history(sessionId, before, limit, options) {
4561
+ return localVarFp.history(sessionId, before, limit, options).then((request) => request(axios, basePath));
2113
4562
  },
2114
4563
  /**
2115
4564
  * 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.
@@ -2130,14 +4579,14 @@ export class ChatApi extends BaseAPI {
2130
4579
  /**
2131
4580
  * 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.
2132
4581
  * @summary Get chat history
2133
- * @param {number} limit Maximum number of messages to return (1–100)
2134
4582
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
2135
4583
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4584
+ * @param {number} [limit] Maximum number of messages to return (1–100)
2136
4585
  * @param {*} [options] Override http request option.
2137
4586
  * @throws {RequiredError}
2138
4587
  */
2139
- history(limit, sessionId, before, options) {
2140
- return ChatApiFp(this.configuration).history(limit, sessionId, before, options).then((request) => request(this.axios, this.basePath));
4588
+ history(sessionId, before, limit, options) {
4589
+ return ChatApiFp(this.configuration).history(sessionId, before, limit, options).then((request) => request(this.axios, this.basePath));
2141
4590
  }
2142
4591
  /**
2143
4592
  * 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.
@@ -2156,19 +4605,18 @@ export class ChatApi extends BaseAPI {
2156
4605
  export const ConnectionApiAxiosParamCreator = function (configuration) {
2157
4606
  return {
2158
4607
  /**
2159
- * 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.
2160
- * @summary Check Connection and Detect VPN/Proxy
4608
+ * **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.
4609
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2161
4610
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2162
- * @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
4611
+ * @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
2163
4612
  * @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.
2164
4613
  * @param {*} [options] Override http request option.
4614
+ * @deprecated
2165
4615
  * @throws {RequiredError}
2166
4616
  */
2167
4617
  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 = {}) {
2168
4618
  // verify required parameter 'ip' is not null or undefined
2169
4619
  assertParamExists('getConnectionDetails', 'ip', ip);
2170
- // verify required parameter 'forceRecheck' is not null or undefined
2171
- assertParamExists('getConnectionDetails', 'forceRecheck', forceRecheck);
2172
4620
  const localVarPath = `/v1/connection/get-connection-details/{ip}`
2173
4621
  .replace(`{${"ip"}}`, encodeURIComponent(String(ip)));
2174
4622
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
@@ -2207,12 +4655,13 @@ export const ConnectionApiFp = function (configuration) {
2207
4655
  const localVarAxiosParamCreator = ConnectionApiAxiosParamCreator(configuration);
2208
4656
  return {
2209
4657
  /**
2210
- * 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.
2211
- * @summary Check Connection and Detect VPN/Proxy
4658
+ * **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.
4659
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2212
4660
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2213
- * @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
4661
+ * @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
2214
4662
  * @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.
2215
4663
  * @param {*} [options] Override http request option.
4664
+ * @deprecated
2216
4665
  * @throws {RequiredError}
2217
4666
  */
2218
4667
  getConnectionDetails(ip, forceRecheck, associateUuid, options) {
@@ -2233,12 +4682,13 @@ export const ConnectionApiFactory = function (configuration, basePath, axios) {
2233
4682
  const localVarFp = ConnectionApiFp(configuration);
2234
4683
  return {
2235
4684
  /**
2236
- * 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.
2237
- * @summary Check Connection and Detect VPN/Proxy
4685
+ * **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.
4686
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2238
4687
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2239
- * @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
4688
+ * @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
2240
4689
  * @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.
2241
4690
  * @param {*} [options] Override http request option.
4691
+ * @deprecated
2242
4692
  * @throws {RequiredError}
2243
4693
  */
2244
4694
  getConnectionDetails(ip, forceRecheck, associateUuid, options) {
@@ -2251,12 +4701,13 @@ export const ConnectionApiFactory = function (configuration, basePath, axios) {
2251
4701
  */
2252
4702
  export class ConnectionApi extends BaseAPI {
2253
4703
  /**
2254
- * 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.
2255
- * @summary Check Connection and Detect VPN/Proxy
4704
+ * **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.
4705
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
2256
4706
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
2257
- * @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
4707
+ * @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
2258
4708
  * @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.
2259
4709
  * @param {*} [options] Override http request option.
4710
+ * @deprecated
2260
4711
  * @throws {RequiredError}
2261
4712
  */
2262
4713
  getConnectionDetails(ip, forceRecheck, associateUuid, options) {
@@ -2431,6 +4882,173 @@ export class PlayerApi extends BaseAPI {
2431
4882
  return PlayerApiFp(this.configuration).getUsernames(uuids, options).then((request) => request(this.axios, this.basePath));
2432
4883
  }
2433
4884
  }
4885
+ /**
4886
+ * PlayerSessionsApi - axios parameter creator
4887
+ */
4888
+ export const PlayerSessionsApiAxiosParamCreator = function (configuration) {
4889
+ return {
4890
+ /**
4891
+ * 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.
4892
+ * @summary Close the active player session
4893
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4894
+ * @param {*} [options] Override http request option.
4895
+ * @throws {RequiredError}
4896
+ */
4897
+ end: (playerSessionEndRequest_1, ...args_1) => __awaiter(this, [playerSessionEndRequest_1, ...args_1], void 0, function* (playerSessionEndRequest, options = {}) {
4898
+ // verify required parameter 'playerSessionEndRequest' is not null or undefined
4899
+ assertParamExists('end', 'playerSessionEndRequest', playerSessionEndRequest);
4900
+ const localVarPath = `/v1/player-session/end`;
4901
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4902
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4903
+ let baseOptions;
4904
+ if (configuration) {
4905
+ baseOptions = configuration.baseOptions;
4906
+ }
4907
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
4908
+ const localVarHeaderParameter = {};
4909
+ const localVarQueryParameter = {};
4910
+ // authentication DiscordAuth required
4911
+ // http bearer authentication required
4912
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
4913
+ localVarHeaderParameter['Content-Type'] = 'application/json';
4914
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4915
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4916
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
4917
+ localVarRequestOptions.data = serializeDataIfNeeded(playerSessionEndRequest, localVarRequestOptions, configuration);
4918
+ return {
4919
+ url: toPathString(localVarUrlObj),
4920
+ options: localVarRequestOptions,
4921
+ };
4922
+ }),
4923
+ /**
4924
+ * 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.
4925
+ * @summary Player join — unified authorization + session-open
4926
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4927
+ * @param {*} [options] Override http request option.
4928
+ * @throws {RequiredError}
4929
+ */
4930
+ start: (playerSessionStartRequest_1, ...args_1) => __awaiter(this, [playerSessionStartRequest_1, ...args_1], void 0, function* (playerSessionStartRequest, options = {}) {
4931
+ // verify required parameter 'playerSessionStartRequest' is not null or undefined
4932
+ assertParamExists('start', 'playerSessionStartRequest', playerSessionStartRequest);
4933
+ const localVarPath = `/v1/player-session/start`;
4934
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4935
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4936
+ let baseOptions;
4937
+ if (configuration) {
4938
+ baseOptions = configuration.baseOptions;
4939
+ }
4940
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
4941
+ const localVarHeaderParameter = {};
4942
+ const localVarQueryParameter = {};
4943
+ // authentication DiscordAuth required
4944
+ // http bearer authentication required
4945
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
4946
+ localVarHeaderParameter['Content-Type'] = 'application/json';
4947
+ localVarHeaderParameter['Accept'] = 'application/json';
4948
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4949
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4950
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
4951
+ localVarRequestOptions.data = serializeDataIfNeeded(playerSessionStartRequest, localVarRequestOptions, configuration);
4952
+ return {
4953
+ url: toPathString(localVarUrlObj),
4954
+ options: localVarRequestOptions,
4955
+ };
4956
+ }),
4957
+ };
4958
+ };
4959
+ /**
4960
+ * PlayerSessionsApi - functional programming interface
4961
+ */
4962
+ export const PlayerSessionsApiFp = function (configuration) {
4963
+ const localVarAxiosParamCreator = PlayerSessionsApiAxiosParamCreator(configuration);
4964
+ return {
4965
+ /**
4966
+ * 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.
4967
+ * @summary Close the active player session
4968
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4969
+ * @param {*} [options] Override http request option.
4970
+ * @throws {RequiredError}
4971
+ */
4972
+ end(playerSessionEndRequest, options) {
4973
+ return __awaiter(this, void 0, void 0, function* () {
4974
+ var _a, _b, _c;
4975
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.end(playerSessionEndRequest, options);
4976
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
4977
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PlayerSessionsApi.end']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
4978
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4979
+ });
4980
+ },
4981
+ /**
4982
+ * 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.
4983
+ * @summary Player join — unified authorization + session-open
4984
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4985
+ * @param {*} [options] Override http request option.
4986
+ * @throws {RequiredError}
4987
+ */
4988
+ start(playerSessionStartRequest, options) {
4989
+ return __awaiter(this, void 0, void 0, function* () {
4990
+ var _a, _b, _c;
4991
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.start(playerSessionStartRequest, options);
4992
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
4993
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PlayerSessionsApi.start']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
4994
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4995
+ });
4996
+ },
4997
+ };
4998
+ };
4999
+ /**
5000
+ * PlayerSessionsApi - factory interface
5001
+ */
5002
+ export const PlayerSessionsApiFactory = function (configuration, basePath, axios) {
5003
+ const localVarFp = PlayerSessionsApiFp(configuration);
5004
+ return {
5005
+ /**
5006
+ * 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.
5007
+ * @summary Close the active player session
5008
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
5009
+ * @param {*} [options] Override http request option.
5010
+ * @throws {RequiredError}
5011
+ */
5012
+ end(playerSessionEndRequest, options) {
5013
+ return localVarFp.end(playerSessionEndRequest, options).then((request) => request(axios, basePath));
5014
+ },
5015
+ /**
5016
+ * 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.
5017
+ * @summary Player join — unified authorization + session-open
5018
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
5019
+ * @param {*} [options] Override http request option.
5020
+ * @throws {RequiredError}
5021
+ */
5022
+ start(playerSessionStartRequest, options) {
5023
+ return localVarFp.start(playerSessionStartRequest, options).then((request) => request(axios, basePath));
5024
+ },
5025
+ };
5026
+ };
5027
+ /**
5028
+ * PlayerSessionsApi - object-oriented interface
5029
+ */
5030
+ export class PlayerSessionsApi extends BaseAPI {
5031
+ /**
5032
+ * 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.
5033
+ * @summary Close the active player session
5034
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
5035
+ * @param {*} [options] Override http request option.
5036
+ * @throws {RequiredError}
5037
+ */
5038
+ end(playerSessionEndRequest, options) {
5039
+ return PlayerSessionsApiFp(this.configuration).end(playerSessionEndRequest, options).then((request) => request(this.axios, this.basePath));
5040
+ }
5041
+ /**
5042
+ * 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.
5043
+ * @summary Player join — unified authorization + session-open
5044
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
5045
+ * @param {*} [options] Override http request option.
5046
+ * @throws {RequiredError}
5047
+ */
5048
+ start(playerSessionStartRequest, options) {
5049
+ return PlayerSessionsApiFp(this.configuration).start(playerSessionStartRequest, options).then((request) => request(this.axios, this.basePath));
5050
+ }
5051
+ }
2434
5052
  /**
2435
5053
  * PunishmentApi - axios parameter creator
2436
5054
  */
@@ -2548,23 +5166,20 @@ export const PunishmentApiAxiosParamCreator = function (configuration) {
2548
5166
  /**
2549
5167
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2550
5168
  * @summary List recent punishments
2551
- * @param {number} limit Maximum number of records to return
2552
- * @param {number} page Page number for pagination
2553
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2554
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2555
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2556
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2557
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2558
- * @param {string | null} [uuid] Filter by player UUID
2559
- * @param {string | null} [ipAddress] Filter by IP address
5169
+ * @param {Pageable} pageable
5170
+ * @param {number | null} [issuedAfter]
5171
+ * @param {number | null} [issuedBefore]
5172
+ * @param {number | null} [expiresAfter]
5173
+ * @param {number | null} [expiresBefore]
5174
+ * @param {Array<PunishmentType> | null} [type]
5175
+ * @param {string | null} [uuid]
5176
+ * @param {string | null} [ipAddress]
2560
5177
  * @param {*} [options] Override http request option.
2561
5178
  * @throws {RequiredError}
2562
5179
  */
2563
- 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 = {}) {
2564
- // verify required parameter 'limit' is not null or undefined
2565
- assertParamExists('getRecentPunishments', 'limit', limit);
2566
- // verify required parameter 'page' is not null or undefined
2567
- assertParamExists('getRecentPunishments', 'page', page);
5180
+ 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 = {}) {
5181
+ // verify required parameter 'pageable' is not null or undefined
5182
+ assertParamExists('getRecentPunishments', 'pageable', pageable);
2568
5183
  const localVarPath = `/v1/punishment/recent`;
2569
5184
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
2570
5185
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -2599,11 +5214,8 @@ export const PunishmentApiAxiosParamCreator = function (configuration) {
2599
5214
  if (ipAddress !== undefined) {
2600
5215
  localVarQueryParameter['ipAddress'] = ipAddress;
2601
5216
  }
2602
- if (limit !== undefined) {
2603
- localVarQueryParameter['limit'] = limit;
2604
- }
2605
- if (page !== undefined) {
2606
- localVarQueryParameter['page'] = page;
5217
+ if (pageable !== undefined) {
5218
+ localVarQueryParameter['pageable'] = pageable;
2607
5219
  }
2608
5220
  localVarHeaderParameter['Accept'] = 'application/json';
2609
5221
  setSearchParams(localVarUrlObj, localVarQueryParameter);
@@ -2675,22 +5287,21 @@ export const PunishmentApiFp = function (configuration) {
2675
5287
  /**
2676
5288
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2677
5289
  * @summary List recent punishments
2678
- * @param {number} limit Maximum number of records to return
2679
- * @param {number} page Page number for pagination
2680
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2681
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2682
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2683
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2684
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2685
- * @param {string | null} [uuid] Filter by player UUID
2686
- * @param {string | null} [ipAddress] Filter by IP address
5290
+ * @param {Pageable} pageable
5291
+ * @param {number | null} [issuedAfter]
5292
+ * @param {number | null} [issuedBefore]
5293
+ * @param {number | null} [expiresAfter]
5294
+ * @param {number | null} [expiresBefore]
5295
+ * @param {Array<PunishmentType> | null} [type]
5296
+ * @param {string | null} [uuid]
5297
+ * @param {string | null} [ipAddress]
2687
5298
  * @param {*} [options] Override http request option.
2688
5299
  * @throws {RequiredError}
2689
5300
  */
2690
- getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
5301
+ getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
2691
5302
  return __awaiter(this, void 0, void 0, function* () {
2692
5303
  var _a, _b, _c;
2693
- const localVarAxiosArgs = yield localVarAxiosParamCreator.getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options);
5304
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options);
2694
5305
  const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
2695
5306
  const localVarOperationServerBasePath = (_c = (_b = operationServerMap['PunishmentApi.getRecentPunishments']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
2696
5307
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -2739,20 +5350,19 @@ export const PunishmentApiFactory = function (configuration, basePath, axios) {
2739
5350
  /**
2740
5351
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2741
5352
  * @summary List recent punishments
2742
- * @param {number} limit Maximum number of records to return
2743
- * @param {number} page Page number for pagination
2744
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2745
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2746
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2747
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2748
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2749
- * @param {string | null} [uuid] Filter by player UUID
2750
- * @param {string | null} [ipAddress] Filter by IP address
5353
+ * @param {Pageable} pageable
5354
+ * @param {number | null} [issuedAfter]
5355
+ * @param {number | null} [issuedBefore]
5356
+ * @param {number | null} [expiresAfter]
5357
+ * @param {number | null} [expiresBefore]
5358
+ * @param {Array<PunishmentType> | null} [type]
5359
+ * @param {string | null} [uuid]
5360
+ * @param {string | null} [ipAddress]
2751
5361
  * @param {*} [options] Override http request option.
2752
5362
  * @throws {RequiredError}
2753
5363
  */
2754
- getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
2755
- return localVarFp.getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(axios, basePath));
5364
+ getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
5365
+ return localVarFp.getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(axios, basePath));
2756
5366
  },
2757
5367
  };
2758
5368
  };
@@ -2795,20 +5405,117 @@ export class PunishmentApi extends BaseAPI {
2795
5405
  /**
2796
5406
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2797
5407
  * @summary List recent punishments
2798
- * @param {number} limit Maximum number of records to return
2799
- * @param {number} page Page number for pagination
2800
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2801
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2802
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2803
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2804
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2805
- * @param {string | null} [uuid] Filter by player UUID
2806
- * @param {string | null} [ipAddress] Filter by IP address
5408
+ * @param {Pageable} pageable
5409
+ * @param {number | null} [issuedAfter]
5410
+ * @param {number | null} [issuedBefore]
5411
+ * @param {number | null} [expiresAfter]
5412
+ * @param {number | null} [expiresBefore]
5413
+ * @param {Array<PunishmentType> | null} [type]
5414
+ * @param {string | null} [uuid]
5415
+ * @param {string | null} [ipAddress]
5416
+ * @param {*} [options] Override http request option.
5417
+ * @throws {RequiredError}
5418
+ */
5419
+ getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
5420
+ return PunishmentApiFp(this.configuration).getRecentPunishments(pageable, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(this.axios, this.basePath));
5421
+ }
5422
+ }
5423
+ /**
5424
+ * ReportApi - axios parameter creator
5425
+ */
5426
+ export const ReportApiAxiosParamCreator = function (configuration) {
5427
+ return {
5428
+ /**
5429
+ * 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.
5430
+ * @summary Submit a peer report
5431
+ * @param {CreateReportRequest} createReportRequest
5432
+ * @param {*} [options] Override http request option.
5433
+ * @throws {RequiredError}
5434
+ */
5435
+ submit: (createReportRequest_1, ...args_1) => __awaiter(this, [createReportRequest_1, ...args_1], void 0, function* (createReportRequest, options = {}) {
5436
+ // verify required parameter 'createReportRequest' is not null or undefined
5437
+ assertParamExists('submit', 'createReportRequest', createReportRequest);
5438
+ const localVarPath = `/v1/report`;
5439
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
5440
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
5441
+ let baseOptions;
5442
+ if (configuration) {
5443
+ baseOptions = configuration.baseOptions;
5444
+ }
5445
+ const localVarRequestOptions = Object.assign(Object.assign({ method: 'POST' }, baseOptions), options);
5446
+ const localVarHeaderParameter = {};
5447
+ const localVarQueryParameter = {};
5448
+ // authentication DiscordAuth required
5449
+ // http bearer authentication required
5450
+ yield setBearerAuthToObject(localVarHeaderParameter, configuration);
5451
+ localVarHeaderParameter['Content-Type'] = 'application/json';
5452
+ localVarHeaderParameter['Accept'] = 'application/json';
5453
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
5454
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
5455
+ localVarRequestOptions.headers = Object.assign(Object.assign(Object.assign({}, localVarHeaderParameter), headersFromBaseOptions), options.headers);
5456
+ localVarRequestOptions.data = serializeDataIfNeeded(createReportRequest, localVarRequestOptions, configuration);
5457
+ return {
5458
+ url: toPathString(localVarUrlObj),
5459
+ options: localVarRequestOptions,
5460
+ };
5461
+ }),
5462
+ };
5463
+ };
5464
+ /**
5465
+ * ReportApi - functional programming interface
5466
+ */
5467
+ export const ReportApiFp = function (configuration) {
5468
+ const localVarAxiosParamCreator = ReportApiAxiosParamCreator(configuration);
5469
+ return {
5470
+ /**
5471
+ * 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.
5472
+ * @summary Submit a peer report
5473
+ * @param {CreateReportRequest} createReportRequest
5474
+ * @param {*} [options] Override http request option.
5475
+ * @throws {RequiredError}
5476
+ */
5477
+ submit(createReportRequest, options) {
5478
+ return __awaiter(this, void 0, void 0, function* () {
5479
+ var _a, _b, _c;
5480
+ const localVarAxiosArgs = yield localVarAxiosParamCreator.submit(createReportRequest, options);
5481
+ const localVarOperationServerIndex = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.serverIndex) !== null && _a !== void 0 ? _a : 0;
5482
+ const localVarOperationServerBasePath = (_c = (_b = operationServerMap['ReportApi.submit']) === null || _b === void 0 ? void 0 : _b[localVarOperationServerIndex]) === null || _c === void 0 ? void 0 : _c.url;
5483
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
5484
+ });
5485
+ },
5486
+ };
5487
+ };
5488
+ /**
5489
+ * ReportApi - factory interface
5490
+ */
5491
+ export const ReportApiFactory = function (configuration, basePath, axios) {
5492
+ const localVarFp = ReportApiFp(configuration);
5493
+ return {
5494
+ /**
5495
+ * 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.
5496
+ * @summary Submit a peer report
5497
+ * @param {CreateReportRequest} createReportRequest
5498
+ * @param {*} [options] Override http request option.
5499
+ * @throws {RequiredError}
5500
+ */
5501
+ submit(createReportRequest, options) {
5502
+ return localVarFp.submit(createReportRequest, options).then((request) => request(axios, basePath));
5503
+ },
5504
+ };
5505
+ };
5506
+ /**
5507
+ * ReportApi - object-oriented interface
5508
+ */
5509
+ export class ReportApi extends BaseAPI {
5510
+ /**
5511
+ * 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.
5512
+ * @summary Submit a peer report
5513
+ * @param {CreateReportRequest} createReportRequest
2807
5514
  * @param {*} [options] Override http request option.
2808
5515
  * @throws {RequiredError}
2809
5516
  */
2810
- getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options) {
2811
- return PunishmentApiFp(this.configuration).getRecentPunishments(limit, page, issuedAfter, issuedBefore, expiresAfter, expiresBefore, type, uuid, ipAddress, options).then((request) => request(this.axios, this.basePath));
5517
+ submit(createReportRequest, options) {
5518
+ return ReportApiFp(this.configuration).submit(createReportRequest, options).then((request) => request(this.axios, this.basePath));
2812
5519
  }
2813
5520
  }
2814
5521
  /**