@rebornteam/reborn-api 3.2.1 → 4.0.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 (113) hide show
  1. package/.openapi-generator/FILES +65 -4
  2. package/README.md +93 -8
  3. package/api.ts +3979 -537
  4. package/base.ts +1 -1
  5. package/common.ts +1 -1
  6. package/configuration.ts +1 -1
  7. package/dist/api.d.ts +2462 -386
  8. package/dist/api.js +2750 -361
  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 +2462 -386
  16. package/dist/esm/api.js +2722 -353
  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/AdminApplyPunishmentResult.md +4 -4
  30. package/docs/AdminAsyncJob.md +47 -0
  31. package/docs/AdminAsyncJobStartResponse.md +21 -0
  32. package/docs/AdminAuditLogApi.md +141 -0
  33. package/docs/AdminAuditLogEntry.md +33 -0
  34. package/docs/AdminBulkRevokeRequest.md +25 -0
  35. package/docs/AdminBulkRevokeResponse.md +21 -0
  36. package/docs/AdminConnectionCheckResult.md +4 -0
  37. package/docs/AdminConnectionsApi.md +154 -39
  38. package/docs/AdminCreateAltExemptionRequest.md +23 -0
  39. package/docs/AdminCreatePlayerNoteRequest.md +21 -0
  40. package/docs/AdminDashboardConnectionResponse.md +4 -2
  41. package/docs/AdminJobsApi.md +175 -0
  42. package/docs/AdminPlayerDetailResponse.md +4 -4
  43. package/docs/AdminPlayerNote.md +31 -0
  44. package/docs/AdminPlayerPunishmentResponse.md +51 -0
  45. package/docs/AdminPlayerReport.md +39 -0
  46. package/docs/AdminPlayerSession.md +31 -0
  47. package/docs/AdminPlayerSessionStats.md +29 -0
  48. package/docs/AdminPlayerSummary.md +2 -4
  49. package/docs/AdminPlayersApi.md +936 -16
  50. package/docs/AdminPunishmentEvaluation.md +4 -8
  51. package/docs/AdminPunishmentsApi.md +78 -21
  52. package/docs/AdminReportTarget.md +23 -0
  53. package/docs/AdminReportsApi.md +123 -0
  54. package/docs/AdminResolveReportRequest.md +21 -0
  55. package/docs/AdminSetAggressiveModeImmunityRequest.md +21 -0
  56. package/docs/AdminTrustFactorBreakdown.md +61 -0
  57. package/docs/AdminTrustFactorHistoryEntry.md +23 -0
  58. package/docs/AdminTrustFactorImpact.md +23 -0
  59. package/docs/AdminUpdatePunishmentRequest.md +27 -0
  60. package/docs/ChatApi.md +4 -4
  61. package/docs/ConnectionApi.md +4 -4
  62. package/docs/ConnectionGetConnectionDetailsResponse.md +5 -1
  63. package/docs/ConnectionResult.md +1 -1
  64. package/docs/CreateReportRequest.md +27 -0
  65. package/docs/CreateReportResponse.md +23 -0
  66. package/docs/CursoredPageAdminAuditLogEntry.md +38 -0
  67. package/docs/CursoredPageable.md +30 -0
  68. package/docs/JobStatus.md +17 -0
  69. package/docs/PageAdminAltAccount.md +36 -0
  70. package/docs/PageAdminAltExemption.md +36 -0
  71. package/docs/PageAdminAsyncJob.md +36 -0
  72. package/docs/PageAdminAuditLogEntry.md +36 -0
  73. package/docs/PageAdminDashboardConnectionResponse.md +36 -0
  74. package/docs/PageAdminPlayerNote.md +36 -0
  75. package/docs/PageAdminPlayerPunishmentResponse.md +36 -0
  76. package/docs/PageAdminPlayerReport.md +36 -0
  77. package/docs/PageAdminPlayerSession.md +36 -0
  78. package/docs/PageAdminPlayerSummary.md +36 -0
  79. package/docs/PageAdminPunishmentListItem.md +36 -0
  80. package/docs/PagePunishmentGetPunishmentResponse.md +36 -0
  81. package/docs/Pageable.md +28 -0
  82. package/docs/PageableMode.md +12 -0
  83. package/docs/PlayerGetPlayerInformation.md +5 -3
  84. package/docs/PlayerSessionEndRequest.md +23 -0
  85. package/docs/PlayerSessionStartRequest.md +27 -0
  86. package/docs/PlayerSessionStartResponse.md +51 -0
  87. package/docs/PlayerSessionsApi.md +116 -0
  88. package/docs/PunishmentApi.md +22 -24
  89. package/docs/PunishmentSource.md +11 -0
  90. package/docs/PunishmentType.md +1 -0
  91. package/docs/ReportApi.md +64 -0
  92. package/docs/ReportCategory.md +17 -0
  93. package/docs/SliceAdminAltAccount.md +32 -0
  94. package/docs/SliceAdminAltExemption.md +32 -0
  95. package/docs/SliceAdminAsyncJob.md +32 -0
  96. package/docs/SliceAdminAuditLogEntry.md +32 -0
  97. package/docs/SliceAdminDashboardConnectionResponse.md +32 -0
  98. package/docs/SliceAdminPlayerNote.md +32 -0
  99. package/docs/SliceAdminPlayerPunishmentResponse.md +32 -0
  100. package/docs/SliceAdminPlayerReport.md +32 -0
  101. package/docs/SliceAdminPlayerSession.md +32 -0
  102. package/docs/SliceAdminPlayerSummary.md +32 -0
  103. package/docs/SliceAdminPunishmentListItem.md +32 -0
  104. package/docs/SlicePunishmentGetPunishmentResponse.md +32 -0
  105. package/docs/Sort.md +20 -0
  106. package/docs/SortOrder.md +26 -0
  107. package/docs/SortOrderDirection.md +10 -0
  108. package/index.ts +1 -1
  109. package/package.json +1 -1
  110. package/docs/AdminBackfillLocationResponse.md +0 -25
  111. package/docs/AdminPagedConnectionResponse.md +0 -29
  112. package/docs/AdminPagedPlayerResponse.md +0 -29
  113. package/docs/AdminPagedPunishmentResponse.md +0 -29
package/dist/esm/api.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Reborn API
3
3
  * 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
4
4
  *
5
- * The version of the OpenAPI document: 3.2.1
5
+ * The version of the OpenAPI document: 4.0.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -13,6 +13,56 @@ import type { Configuration } from './configuration';
13
13
  import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
14
14
  import type { RequestArgs } from './base';
15
15
  import { BaseAPI } from './base';
16
+ /**
17
+ * Another player who has been seen on at least one of this player\'s historical connections — i.e. an alt account candidate.
18
+ */
19
+ export interface AdminAltAccount {
20
+ /**
21
+ * Alt player\'s Minecraft UUID
22
+ */
23
+ 'uuid': string;
24
+ /**
25
+ * Most recently seen username for the alt, null if never recorded
26
+ */
27
+ 'username'?: string | null;
28
+ /**
29
+ * Timestamp of the alt\'s most recent connection (ISO-8601), null if never connected
30
+ */
31
+ 'lastUsedAt'?: string | null;
32
+ /**
33
+ * Number of distinct connections this alt shares with the source player
34
+ */
35
+ 'sharedConnectionCount': number;
36
+ }
37
+ /**
38
+ * Per-pair exemption from aggressive-mode alt propagation. When a row exists with (player_id=X, alt_player_id=Y), propagation for X will skip Y as an alt source.
39
+ */
40
+ export interface AdminAltExemption {
41
+ /**
42
+ * Player this exemption applies to
43
+ */
44
+ 'playerUuid': string;
45
+ /**
46
+ * Player to be skipped as an alt source
47
+ */
48
+ 'altPlayerUuid': string;
49
+ /**
50
+ * Most recent username of the exempted alt
51
+ */
52
+ 'altPlayerUsername'?: string | null;
53
+ /**
54
+ * Staff member who created the exemption
55
+ */
56
+ 'createdBy': string;
57
+ /**
58
+ * When the exemption was created (ISO-8601)
59
+ */
60
+ 'createdAt': string;
61
+ /**
62
+ * Optional human-readable reason
63
+ */
64
+ 'reason'?: string | null;
65
+ }
16
66
  /**
17
67
  * Request to apply a punishment to one or more targets
18
68
  */
@@ -72,15 +122,15 @@ export interface AdminApplyPunishmentResult {
72
122
  */
73
123
  'type': PunishmentType;
74
124
  /**
75
- * Severity level applied
125
+ * Severity level applied (1-4)
76
126
  */
77
127
  'severity': number;
78
128
  /**
79
- * Updated punishment score after applying
129
+ * Trust factor (0-100) for the targeted player after the punishment landed. Present only when the target is a player; absent for any other target shape.
80
130
  */
81
- 'newScore': number;
131
+ 'newTrustFactor'?: number | null;
82
132
  /**
83
- * Whether the punishment was made permanent
133
+ * Whether the punishment was made permanent. Mirrors the request\'s forcePermanent flag — auto-escalation has been removed.
84
134
  */
85
135
  'isPermanent': boolean;
86
136
  /**
@@ -89,21 +139,133 @@ export interface AdminApplyPunishmentResult {
89
139
  'expiresAt'?: string | null;
90
140
  }
91
141
  /**
92
- * Result of a location backfill run rechecks every connection_check row missing both city and country, repopulating them from the VPN providers.
142
+ * One row of admin_joba long-running admin operation.
143
+ */
144
+ export interface AdminAsyncJob {
145
+ /**
146
+ * Job id
147
+ */
148
+ 'id': string;
149
+ /**
150
+ * Stable identifier of what kind of work this is (e.g. LOCATION_BACKFILL)
151
+ */
152
+ 'jobType': string;
153
+ /**
154
+ * Current lifecycle state.
155
+ */
156
+ 'status': JobStatus;
157
+ /**
158
+ * Number of units processed so far
159
+ */
160
+ 'progressCurrent': number;
161
+ /**
162
+ * Total units, when known up front. Null when total is undetermined.
163
+ */
164
+ 'progressTotal'?: number | null;
165
+ /**
166
+ * Optional human-readable status line (e.g. \"Re-checking IpHub\").
167
+ */
168
+ 'progressMessage'?: string | null;
169
+ /**
170
+ * Error message when status = FAILED. Null otherwise.
171
+ */
172
+ 'errorMessage'?: string | null;
173
+ /**
174
+ * Type-specific JSON result, populated when status = COMPLETED. Schema varies by jobType — consult the docs for each type.
175
+ */
176
+ 'resultPayload'?: object | null;
177
+ /**
178
+ * Admin who submitted the job (Discord username for SSO admins).
179
+ */
180
+ 'startedBy': string;
181
+ /**
182
+ * When the job was submitted (ISO-8601).
183
+ */
184
+ 'startedAt': string;
185
+ /**
186
+ * Timestamp of the most recent progress update. The reaper marks jobs FAILED when this falls behind by 5 min.
187
+ */
188
+ 'lastProgressAt': string;
189
+ /**
190
+ * When the job entered a terminal state. Null while running.
191
+ */
192
+ 'finishedAt'?: string | null;
193
+ /**
194
+ * True if an admin has requested cancellation. The host instance picks this up at its next progress tick.
195
+ */
196
+ 'cancelRequested': boolean;
197
+ /**
198
+ * Identifier of the API instance that is running this job. Other instances can see state and request cancellation but cannot dispose the in-flight Reactor subscription directly.
199
+ */
200
+ 'hostInstance': string;
201
+ }
202
+ /**
203
+ * Acknowledgement returned by endpoints that submit an async job. The id is the polling target — GET /admin/job/{id} for status, DELETE /admin/job/{id} to cancel.
204
+ */
205
+ export interface AdminAsyncJobStartResponse {
206
+ /**
207
+ * Server-assigned job id
208
+ */
209
+ 'jobId': string;
210
+ }
211
+ /**
212
+ * Single admin audit-log entry. Captures who did what to which target with an action-specific JSON payload (e.g. before/after for edits, count for bulk ops).
213
+ */
214
+ export interface AdminAuditLogEntry {
215
+ /**
216
+ * Sequential id (ordering matches createdAt)
217
+ */
218
+ 'id': number;
219
+ /**
220
+ * Discord username of the moderator who performed the action
221
+ */
222
+ 'actorUsername': string;
223
+ /**
224
+ * Action verb. Open-vocabulary; current values include APPLY_PUNISHMENT, EDIT_PUNISHMENT, REVOKE_PROPAGATED_LINK, BULK_REVOKE, SET_AGGRESSIVE_MODE_IMMUNITY, ADD_ALT_EXEMPTION, REMOVE_ALT_EXEMPTION.
225
+ */
226
+ 'action': string;
227
+ /**
228
+ * Type of entity acted upon (PLAYER, PUNISHMENT, PLAYER_PUNISHMENT, etc.)
229
+ */
230
+ 'targetType': string;
231
+ /**
232
+ * Identifier of the target (stringified id or UUID, depending on targetType)
233
+ */
234
+ 'targetId': string;
235
+ /**
236
+ * Action-specific JSON payload. Shape depends on the action.
237
+ */
238
+ 'payload'?: string | null;
239
+ /**
240
+ * When the action occurred (ISO-8601)
241
+ */
242
+ 'createdAt': string;
243
+ }
244
+ /**
245
+ * Bulk-revoke every active PROPAGATED player_punishment row sourced from a single alt or connection. Used when staff identify a false-positive source (e.g. a shared NAT or legitimate roommate) and want to undo every link it caused.
93
246
  */
94
- export interface AdminBackfillLocationResponse {
247
+ export interface AdminBulkRevokeRequest {
248
+ /**
249
+ * Revoke links whose source_player_id matches. Mutually exclusive with sourceConnectionId.
250
+ */
251
+ 'sourcePlayerId'?: number | null;
95
252
  /**
96
- * Total checks attempted
253
+ * Revoke links whose source_connection_id matches. Mutually exclusive with sourcePlayerId.
97
254
  */
98
- 'processed': number;
255
+ 'sourceConnectionId'?: number | null;
99
256
  /**
100
- * Checks where the provider returned at least a city or country
257
+ * Optional reason for the audit log
101
258
  */
102
- 'succeeded': number;
259
+ 'reason'?: string | null;
260
+ }
261
+ /**
262
+ * Result of a bulk-revoke operation
263
+ */
264
+ export interface AdminBulkRevokeResponse {
103
265
  /**
104
- * Checks that errored or returned no location data
266
+ * Number of player_punishment rows soft-deleted by the operation
105
267
  */
106
- 'failed': number;
268
+ 'revoked': number;
107
269
  }
108
270
  /**
109
271
  * Client credential response
@@ -187,6 +349,36 @@ export interface AdminConnectionCheckResult {
187
349
  * Country code reported by this service, if available
188
350
  */
189
351
  'country'?: string | null;
352
+ /**
353
+ * Latitude reported by this service, if available
354
+ */
355
+ 'latitude'?: number | null;
356
+ /**
357
+ * Longitude reported by this service, if available
358
+ */
359
+ 'longitude'?: number | null;
360
+ }
361
+ /**
362
+ * Add an alt exemption: mark altPlayerUuid as a known-legitimate associate of the path player. Subsequent aggressive-mode propagation skips this pair as an alt source.
363
+ */
364
+ export interface AdminCreateAltExemptionRequest {
365
+ /**
366
+ * UUID of the player to mark as a known-legitimate associate
367
+ */
368
+ 'altPlayerUuid': string;
369
+ /**
370
+ * Optional human-readable reason (e.g. \'roommates, verified via support ticket #1234\')
371
+ */
372
+ 'reason'?: string | null;
373
+ }
374
+ /**
375
+ * Create a staff note on a player
376
+ */
377
+ export interface AdminCreatePlayerNoteRequest {
378
+ /**
379
+ * Note body (1–4000 chars)
380
+ */
381
+ 'body': string;
190
382
  }
191
383
  /**
192
384
  * Request to evaluate the impact of a punishment across one or more targets before applying
@@ -220,7 +412,14 @@ export interface AdminCreatePunishmentDraftRequest {
220
412
  export interface AdminDashboardConnectionResponse {
221
413
  'id': number;
222
414
  'ipAddress': string;
223
- 'location'?: string | null;
415
+ /**
416
+ * City reported by the first VPN provider that returned one for this IP.
417
+ */
418
+ 'city'?: string | null;
419
+ /**
420
+ * Country code (ISO 3166-1 alpha-2 or alpha-3 depending on provider) from the first provider that returned one.
421
+ */
422
+ 'country'?: string | null;
224
423
  'isVpn': boolean;
225
424
  'isBypassed': boolean;
226
425
  'bypassExpiresAt'?: string | null;
@@ -252,120 +451,188 @@ export interface AdminIpSearchResult {
252
451
  'players': Array<AdminPlayerSearchResult>;
253
452
  }
254
453
  /**
255
- * Paginated connection list response
454
+ * Full player detail including punishment history and all known usernames
256
455
  */
257
- export interface AdminPagedConnectionResponse {
456
+ export interface AdminPlayerDetailResponse {
258
457
  /**
259
- * Connections on the current page
458
+ * Internal player ID
260
459
  */
261
- 'data': Array<AdminDashboardConnectionResponse>;
460
+ 'id': number;
262
461
  /**
263
- * Total number of connections matching the filters
462
+ * Player Minecraft UUID
264
463
  */
265
- 'total': number;
464
+ 'uuid': string;
266
465
  /**
267
- * Current page (1-indexed)
466
+ * Most recently seen username
268
467
  */
269
- 'page': number;
468
+ 'username'?: string | null;
270
469
  /**
271
- * Page size
470
+ * Whether this player still has first-join status
272
471
  */
273
- 'limit': number;
472
+ 'firstJoin': boolean;
274
473
  /**
275
- * Total number of pages
474
+ * Timestamp of first connection (ISO-8601)
276
475
  */
277
- 'totalPages': number;
476
+ 'firstLogin': string;
477
+ /**
478
+ * Timestamp of most recent connection (ISO-8601)
479
+ */
480
+ 'lastUsedAt'?: string | null;
481
+ /**
482
+ * Trust factor (0-100, higher = more trusted). Informational only — does NOT auto-escalate punishments. See compute_trust_factor in the database for the formula.
483
+ */
484
+ 'trustFactor': number;
485
+ /**
486
+ * All usernames this player has used, newest first
487
+ */
488
+ 'usernameHistory': Array<AdminUsernameHistoryEntry>;
489
+ /**
490
+ * True when this player is exempt from aggressive-mode propagation. Toggling on also bulk-revokes existing propagated links. Defaults to false.
491
+ */
492
+ 'aggressiveModeImmunity': boolean;
278
493
  }
279
494
  /**
280
- * Paginated player list response
495
+ * Free-form staff note about a player
281
496
  */
282
- export interface AdminPagedPlayerResponse {
497
+ export interface AdminPlayerNote {
283
498
  /**
284
- * Players on the current page
499
+ * Note id
285
500
  */
286
- 'data': Array<AdminPlayerSummary>;
501
+ 'id': number;
287
502
  /**
288
- * Total number of players matching the search filter
503
+ * Username (Discord username for SSO admins) of the staff member who wrote the note
289
504
  */
290
- 'total': number;
505
+ 'author': string;
291
506
  /**
292
- * Current page (1-indexed)
507
+ * The note body (1–4000 characters)
293
508
  */
294
- 'page': number;
509
+ 'body': string;
295
510
  /**
296
- * Page size
511
+ * When the note was created (ISO-8601)
297
512
  */
298
- 'limit': number;
513
+ 'createdAt': string;
299
514
  /**
300
- * Total number of pages
515
+ * When the note was soft-deleted. Null on active notes. Deleted notes are still returned by default; the UI styles them as struck-through.
301
516
  */
302
- 'totalPages': number;
517
+ 'deletedAt'?: string | null;
518
+ /**
519
+ * Staff member who soft-deleted the note. Null on active notes.
520
+ */
521
+ 'deletedBy'?: string | null;
303
522
  }
304
523
  /**
305
- * Paginated punishment list response
524
+ * A single player_punishment link with full audit metadata. Used by admin UIs to render the player\'s punishment history with DIRECT vs PROPAGATED badges and per-link revoke controls.
306
525
  */
307
- export interface AdminPagedPunishmentResponse {
526
+ export interface AdminPlayerPunishmentResponse {
308
527
  /**
309
- * Punishments on the current page
528
+ * player_punishment row id (the link id, NOT the punishment id)
310
529
  */
311
- 'data': Array<AdminPunishmentListItem>;
530
+ 'id': number;
312
531
  /**
313
- * Total number of punishments matching the filters
532
+ * Source punishment id this link points to
314
533
  */
315
- 'total': number;
534
+ 'punishmentId': number;
316
535
  /**
317
- * Current page (1-indexed)
536
+ * UUID of the player this link is attached to
318
537
  */
319
- 'page': number;
538
+ 'playerUuid': string;
320
539
  /**
321
- * Page size
540
+ * Punishment type
322
541
  */
323
- 'limit': number;
542
+ 'type': PunishmentType;
324
543
  /**
325
- * Total number of pages
544
+ * Severity (1-4)
326
545
  */
327
- 'totalPages': number;
546
+ 'severity': number;
547
+ /**
548
+ * Reason from the source punishment record
549
+ */
550
+ 'reason': string;
551
+ /**
552
+ * Internal admin notes from the source punishment (may be null)
553
+ */
554
+ 'notes'?: string | null;
555
+ /**
556
+ * Original issuer of the punishment
557
+ */
558
+ 'createdBy': string;
559
+ /**
560
+ * When the source punishment was created (ISO-8601)
561
+ */
562
+ 'createdAt': string;
563
+ /**
564
+ * Source punishment expiration (null = permanent)
565
+ */
566
+ 'expiresAt'?: string | null;
567
+ /**
568
+ * 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.
569
+ */
570
+ 'source': PunishmentSource;
571
+ /**
572
+ * Human-readable origin for a PROPAGATED link, e.g. \'Propagated from alt Notch (player_id=42)\' or \'Propagated from connection 1.2.3.4\'. Null for DIRECT links.
573
+ */
574
+ 'transferNote'?: string | null;
575
+ /**
576
+ * player.id that triggered this PROPAGATED link (the alt account). Null for DIRECT links, for PROPAGATED links pre-dating the structured-source migration, and for connection-sourced PROPAGATED links.
577
+ */
578
+ 'sourcePlayerId'?: number | null;
579
+ /**
580
+ * connection.id that triggered this PROPAGATED link (the IP). Null for DIRECT links, for PROPAGATED links pre-dating the structured-source migration, and for player-sourced PROPAGATED links.
581
+ */
582
+ 'sourceConnectionId'?: number | null;
583
+ /**
584
+ * When this link was revoked by a staff member. Null while active.
585
+ */
586
+ 'revokedAt'?: string | null;
587
+ /**
588
+ * Staff member who revoked this link.
589
+ */
590
+ 'revokedBy'?: string | null;
328
591
  }
329
592
  /**
330
- * Full player detail including punishment history and all known usernames
593
+ * One peer report. May target one or more players.
331
594
  */
332
- export interface AdminPlayerDetailResponse {
595
+ export interface AdminPlayerReport {
333
596
  /**
334
- * Internal player ID
597
+ * Report id
335
598
  */
336
599
  'id': number;
337
600
  /**
338
- * Player Minecraft UUID
601
+ * Reporter\'s UUID
339
602
  */
340
- 'uuid': string;
603
+ 'reporterUuid': string;
341
604
  /**
342
- * Most recently seen username
605
+ * Reporter\'s username at the time of the report (last-known if changed)
343
606
  */
344
- 'username'?: string | null;
607
+ 'reporterUsername'?: string | null;
345
608
  /**
346
- * Whether this player still has first-join status
609
+ * All players this report flags. At least one entry.
347
610
  */
348
- 'firstJoin': boolean;
611
+ 'reportedTargets': Array<AdminReportTarget>;
349
612
  /**
350
- * Timestamp of first connection (ISO-8601)
613
+ * Category
351
614
  */
352
- 'firstLogin': string;
615
+ 'category': string;
353
616
  /**
354
- * Timestamp of most recent connection (ISO-8601)
617
+ * Reason text
355
618
  */
356
- 'lastUsedAt'?: string | null;
619
+ 'reason': string;
357
620
  /**
358
- * Raw punishment score
621
+ * When created (ISO-8601)
359
622
  */
360
- 'punishmentPointsRaw': number;
623
+ 'createdAt': string;
361
624
  /**
362
- * Punishment score as a percentage
625
+ * When resolved by staff. Null = open.
363
626
  */
364
- 'punishmentPointsPercent': number;
627
+ 'resolvedAt'?: string | null;
365
628
  /**
366
- * All usernames this player has used, newest first
629
+ * Staff member who resolved it
367
630
  */
368
- 'usernameHistory': Array<AdminUsernameHistoryEntry>;
631
+ 'resolvedBy'?: string | null;
632
+ /**
633
+ * Staff\'s resolution note
634
+ */
635
+ 'resolutionNote'?: string | null;
369
636
  }
370
637
  /**
371
638
  * Lightweight player reference used in search results and punishment evaluations
@@ -380,6 +647,60 @@ export interface AdminPlayerSearchResult {
380
647
  */
381
648
  'username'?: string | null;
382
649
  }
650
+ /**
651
+ * A single player session — one visit by one player to one game server. Active sessions have null endedAt and durationSeconds; closed sessions have both populated.
652
+ */
653
+ export interface AdminPlayerSession {
654
+ /**
655
+ * Session id (UUID)
656
+ */
657
+ 'id': string;
658
+ /**
659
+ * Player Minecraft UUID
660
+ */
661
+ 'playerUuid': string;
662
+ /**
663
+ * Game server session id this session is associated with. Nullable when the server record has been deleted.
664
+ */
665
+ 'serverSessionId'?: string | null;
666
+ /**
667
+ * When the player joined (ISO-8601)
668
+ */
669
+ 'startedAt': string;
670
+ /**
671
+ * When the player disconnected (ISO-8601). Null while the session is still active.
672
+ */
673
+ 'endedAt'?: string | null;
674
+ /**
675
+ * Closed session duration in seconds (ended_at − started_at). Null while active.
676
+ */
677
+ 'durationSeconds'?: number | null;
678
+ }
679
+ /**
680
+ * Aggregate session statistics for one player. Computed on demand from player_session.
681
+ */
682
+ export interface AdminPlayerSessionStats {
683
+ /**
684
+ * Sum of duration_seconds across all closed sessions
685
+ */
686
+ 'totalSecondsPlayed': number;
687
+ /**
688
+ * Total number of session rows for this player (active + closed)
689
+ */
690
+ 'sessionCount': number;
691
+ /**
692
+ * Distinct calendar days (UTC) on which this player had at least one session
693
+ */
694
+ 'distinctDaysActive': number;
695
+ /**
696
+ * Most recent session start time (ISO-8601). Null if the player has never connected.
697
+ */
698
+ 'lastStartedAt'?: string | null;
699
+ /**
700
+ * True when the player has at least one currently-active (ended_at IS NULL) session.
701
+ */
702
+ 'currentlyOnline': boolean;
703
+ }
383
704
  /**
384
705
  * Summary of a player record, used in list views
385
706
  */
@@ -409,13 +730,9 @@ export interface AdminPlayerSummary {
409
730
  */
410
731
  'lastUsedAt'?: string | null;
411
732
  /**
412
- * Raw punishment score (sum of weighted punishment values)
413
- */
414
- 'punishmentPointsRaw': number;
415
- /**
416
- * Punishment score as a percentage. Values above 100 indicate future punishments should be permanent.
733
+ * Trust factor (0-100, higher = more trusted). Informational only — does NOT auto-escalate punishments. See compute_trust_factor in the database for the formula.
417
734
  */
418
- 'punishmentPointsPercent': number;
735
+ 'trustFactor': number;
419
736
  }
420
737
  /**
421
738
  * Batch punishment draft — one evaluation per target
@@ -439,19 +756,11 @@ export interface AdminPunishmentEvaluation {
439
756
  */
440
757
  'affectedPlayers': Array<AdminPlayerSearchResult>;
441
758
  /**
442
- * Current punishment score before applying this punishment (0–100+)
443
- */
444
- 'currentScore': number;
445
- /**
446
- * Points this punishment would add to the score
447
- */
448
- 'pointsToAdd': number;
449
- /**
450
- * Projected score after applying this punishment
759
+ * Trust factor preview for the targeted player. Present only when the target is a player; absent for any other target shape.
451
760
  */
452
- 'newScore': number;
761
+ 'trustFactorImpact'?: AdminTrustFactorImpact | null;
453
762
  /**
454
- * Whether this punishment would be permanent based on the current score threshold
763
+ * Whether this punishment will be permanent. Mirrors the request\'s forcePermanent flag — auto-escalation has been removed.
455
764
  */
456
765
  'willBePermanent': boolean;
457
766
  /**
@@ -467,7 +776,7 @@ export interface AdminPunishmentEvaluation {
467
776
  */
468
777
  'isConnectionTarget': boolean;
469
778
  /**
470
- * The effective punishment type that will be applied may differ from the requested type if escalated to BAN at threshold
779
+ * The punishment type that will be applied. Equal to the requested type auto-escalation has been removed.
471
780
  */
472
781
  'effectiveType': PunishmentType;
473
782
  }
@@ -516,23 +825,190 @@ export interface AdminPunishmentTarget {
516
825
  'ipAddress'?: string | null;
517
826
  }
518
827
  /**
519
- * A single entry in a player\'s username history
828
+ * One reported player attached to a report.
520
829
  */
521
- export interface AdminUsernameHistoryEntry {
830
+ export interface AdminReportTarget {
522
831
  /**
523
- * The username at this point in time
832
+ * Target player\'s UUID
524
833
  */
525
- 'username': string;
834
+ 'uuid': string;
526
835
  /**
527
- * When this username was first observed (ISO-8601)
836
+ * Target player\'s last-known username
528
837
  */
529
- 'changedAt': string;
838
+ 'username'?: string | null;
530
839
  }
531
- export interface ChatMessageDTO {
532
- 'id': number;
533
- 'sentAt': string;
534
- 'sessionId': string;
535
- 'playerUuid': string;
840
+ /**
841
+ * Resolve a player report. Sets resolved_at = NOW() and stores the staff note.
842
+ */
843
+ export interface AdminResolveReportRequest {
844
+ /**
845
+ * Free-form resolution note from staff (e.g. \"Watched 10 min footage, no cheating evident.\")
846
+ */
847
+ 'resolutionNote'?: string | null;
848
+ }
849
+ /**
850
+ * Set whether a player is exempt from aggressive-mode punishment propagation. Toggling on also revokes all currently-active propagated links for the player.
851
+ */
852
+ export interface AdminSetAggressiveModeImmunityRequest {
853
+ /**
854
+ * True to mark the player immune (no future propagation; existing propagated links bulk-revoked). False to re-enable propagation.
855
+ */
856
+ 'immune': boolean;
857
+ }
858
+ /**
859
+ * Detailed breakdown of how a player\'s trust factor was computed. The final score is the same value returned by compute_trust_factor — this DTO carries the subtotals (bonuses, penalties) and the underlying signal counts that drove each subtotal. Powers the \"why is this score 65?\" admin tooltip. Informational only; trust factor does not auto-escalate punishments.
860
+ */
861
+ export interface AdminTrustFactorBreakdown {
862
+ /**
863
+ * Starting score before any signals applied. Constant 75.
864
+ */
865
+ 'baseTrust': number;
866
+ /**
867
+ * Bonus from account age (+1 per 30 days, capped at +15)
868
+ */
869
+ 'ageBonus': number;
870
+ /**
871
+ * Bonus from clean history. +10 if no active punishments; otherwise +1 per 60 days since the most recent one. Capped at +10.
872
+ */
873
+ 'cleanHistoryBonus': number;
874
+ /**
875
+ * Bonus from connection stability. Stair-step on distinct-connection count: ≤1=+5, ≤3=+3, ≤8=+1, else 0.
876
+ */
877
+ 'stabilityBonus': number;
878
+ /**
879
+ * Bonus from admin affirmation. alt-exemptions × 2 + active player-bypass × 4, capped at +10.
880
+ */
881
+ 'adminAffirmationBonus': number;
882
+ /**
883
+ * Penalty from active punishments. Type-weighted, severity-scaled, time-decayed (BAN half-life 730d, MUTE 180d, WARNING 60d). Capped at -40.
884
+ */
885
+ 'punishmentPenalty': number;
886
+ /**
887
+ * Penalty from alts. dirty-alts × 4 + clean-alts × 0.5, after promiscuity/alt caps, excluding alt-exempted players. Capped at -20.
888
+ */
889
+ 'altPenalty': number;
890
+ /**
891
+ * Penalty from VPN exposure. Fraction of the player\'s connections flagged > 50% positive × 15.
892
+ */
893
+ 'vpnPenalty': number;
894
+ /**
895
+ * Penalty from active PROPAGATED punishment links × 3. Capped at -15.
896
+ */
897
+ 'propagationPenalty': number;
898
+ /**
899
+ * Sum of base + bonuses - penalties BEFORE clamping to 0..100. Useful for debugging \"why is my -50 raw sum clamped to 0?\" cases.
900
+ */
901
+ 'rawSum': number;
902
+ /**
903
+ * The clamped final trust factor (0–100). Identical to what compute_trust_factor() returns.
904
+ */
905
+ 'finalScore': number;
906
+ /**
907
+ * Days since the player\'s account was created.
908
+ */
909
+ 'accountAgeDays': number;
910
+ /**
911
+ * Days since the most recent active punishment landed. Null when the player has none — the clean_history bonus is at its cap.
912
+ */
913
+ 'daysSinceLastPunishment'?: number | null;
914
+ /**
915
+ * Distinct connections this player has used. Drives the stability bonus.
916
+ */
917
+ 'numConnections': number;
918
+ /**
919
+ * Alt-exemption rows attributed to this player (admin-asserted legitimate associates).
920
+ */
921
+ 'numAltExemptions': number;
922
+ /**
923
+ * Whether this player currently has an active player_bypass row.
924
+ */
925
+ 'hasPlayerBypass': boolean;
926
+ /**
927
+ * Count of active (non-revoked, non-expired) player_punishment rows on this player. Includes both DIRECT and PROPAGATED.
928
+ */
929
+ 'numActivePunishments': number;
930
+ /**
931
+ * Alts with active punishments (drives the bigger per-alt penalty multiplier).
932
+ */
933
+ 'numDirtyAlts': number;
934
+ /**
935
+ * Alts WITHOUT active punishments (drives the smaller per-alt penalty multiplier).
936
+ */
937
+ 'numCleanAlts': number;
938
+ /**
939
+ * Fraction of this player\'s connections flagged > 50% VPN-positive. Range 0..1.
940
+ */
941
+ 'vpnConnectionRatio': number;
942
+ /**
943
+ * Active PROPAGATED player_punishment links on this player (i.e. aggressive-mode propagation).
944
+ */
945
+ 'numPropagatedLinks': number;
946
+ }
947
+ /**
948
+ * One trust factor snapshot for a player on a given day.
949
+ */
950
+ export interface AdminTrustFactorHistoryEntry {
951
+ /**
952
+ * UTC date the snapshot was taken
953
+ */
954
+ 'snapshotDate': string;
955
+ /**
956
+ * Trust factor (0–100, higher = more trusted) on that day
957
+ */
958
+ 'trustFactor': number;
959
+ }
960
+ /**
961
+ * Trust factor impact preview for a player-targeted punishment.
962
+ */
963
+ export interface AdminTrustFactorImpact {
964
+ /**
965
+ * Trust factor right now (0-100, higher = more trusted). Computed by compute_trust_factor in the database.
966
+ */
967
+ 'currentTrustFactor': number;
968
+ /**
969
+ * Approximate trust factor AFTER this punishment would land. Approximate because caps in the underlying signals can absorb part of the impact, so the actual post-apply value may be higher than this preview.
970
+ */
971
+ 'projectedTrustFactor': number;
972
+ }
973
+ /**
974
+ * Partial update for a punishment. Only reason / notes / expiresAt may be edited — severity is intentionally immutable to keep the punishment score deterministic.
975
+ */
976
+ export interface AdminUpdatePunishmentRequest {
977
+ /**
978
+ * Replace the visible reason. Min 3, max 500 characters.
979
+ */
980
+ 'reason'?: string | null;
981
+ /**
982
+ * Replace the internal admin notes. Null leaves them untouched; empty string clears them.
983
+ */
984
+ 'notes'?: string | null;
985
+ /**
986
+ * Replace the expiry timestamp (ISO-8601). Send an explicit null in JSON to make permanent — but note: omitting the field leaves expiry untouched. Use \'forcePermanent\' if you want to clear.
987
+ */
988
+ 'expiresAt'?: string | null;
989
+ /**
990
+ * When true, clears expiresAt (makes the punishment permanent). Takes precedence over expiresAt.
991
+ */
992
+ 'forcePermanent'?: boolean | null;
993
+ }
994
+ /**
995
+ * A single entry in a player\'s username history
996
+ */
997
+ export interface AdminUsernameHistoryEntry {
998
+ /**
999
+ * The username at this point in time
1000
+ */
1001
+ 'username': string;
1002
+ /**
1003
+ * When this username was first observed (ISO-8601)
1004
+ */
1005
+ 'changedAt': string;
1006
+ }
1007
+ export interface ChatMessageDTO {
1008
+ 'id': number;
1009
+ 'sentAt': string;
1010
+ 'sessionId': string;
1011
+ 'playerUuid': string;
536
1012
  'message': string;
537
1013
  'channel': string;
538
1014
  }
@@ -568,9 +1044,18 @@ export interface ConnectionGetConnectionDetailsResponse {
568
1044
  */
569
1045
  'ipAddress': string;
570
1046
  /**
571
- * Approximate geographic location of the IP address. Returns \'Local, N/A\' for localhost or private IPs.
1047
+ * City reported by the first VPN provider that returned one for this IP. Null for localhost / private IPs or when no provider returned a city.
1048
+ */
1049
+ 'city'?: string | null;
1050
+ /**
1051
+ * Country code reported by the first VPN provider that returned one (ISO 3166-1 alpha-2 or alpha-3 depending on provider).
1052
+ */
1053
+ 'country'?: string | null;
1054
+ /**
1055
+ * **DEPRECATED.** Combined city + country string retained for clients pinned to ≤ 3.6.0. Reads as \"City, COUNTRY\" when both are present, the available one when only one is, null when neither is. Use {@link #city} and {@link #country} directly.
1056
+ * @deprecated
572
1057
  */
573
- 'approximateLocation': string;
1058
+ 'approximateLocation'?: string | null;
574
1059
  /**
575
1060
  * Confidence score representing the percentage of VPN detection services that flagged this IP as suspicious. Range: 0.0 (clean) to 100.0 (definitely VPN/proxy).
576
1061
  */
@@ -605,7 +1090,7 @@ export interface ConnectionGetConnectionDetailsResponse {
605
1090
  'connectionResult'?: ConnectionResult | null;
606
1091
  }
607
1092
  /**
608
- * Join enforcement result. Only populated when \'associate_uuid\' query parameter is provided. Contains the final allow/deny decision and a formatted kick message if denied.
1093
+ * Final allow/deny verdict plus formatted kick message if denied.
609
1094
  */
610
1095
  export interface ConnectionResult {
611
1096
  'code': ConnectionResultResultCode;
@@ -635,6 +1120,60 @@ export interface CreateBypassRequest {
635
1120
  */
636
1121
  'expiresAtEpoch': number;
637
1122
  }
1123
+ /**
1124
+ * Game-server-issued peer report. Sent when a player runs /report in-game. A single report can target multiple players (\"these 3 were griefing together\"); the same reporter resubmitting the EXACT same target set while the prior report is unresolved updates it in place (response\'s deduplicated = true). Any different target set, even an overlapping one, creates a new report.
1125
+ */
1126
+ export interface CreateReportRequest {
1127
+ /**
1128
+ * Reporter\'s UUID (the player who ran /report)
1129
+ */
1130
+ 'reporterUuid': string;
1131
+ /**
1132
+ * One or more reported player UUIDs. Duplicates within the list are de-duped server-side. The reporter MUST NOT appear in this list.
1133
+ */
1134
+ 'reportedUuids': Array<string>;
1135
+ /**
1136
+ * Category of misconduct. Coarse on purpose — staff refine in triage.
1137
+ */
1138
+ 'category': ReportCategory;
1139
+ /**
1140
+ * Free-form description from the reporter (1–500 chars)
1141
+ */
1142
+ 'reason': string;
1143
+ }
1144
+ /**
1145
+ * Acknowledgement that a peer report was accepted by the API.
1146
+ */
1147
+ export interface CreateReportResponse {
1148
+ /**
1149
+ * Server-assigned report id
1150
+ */
1151
+ 'reportId': number;
1152
+ /**
1153
+ * True if an active report from this reporter against this target already existed; the row\'s reason/category were updated in place. False on first report.
1154
+ */
1155
+ 'deduplicated': boolean;
1156
+ }
1157
+ export interface CursoredPageAdminAuditLogEntry {
1158
+ 'content': Array<AdminAuditLogEntry>;
1159
+ 'pageable': Pageable;
1160
+ 'pageNumber': number;
1161
+ 'offset': number;
1162
+ 'size': number;
1163
+ 'empty': boolean;
1164
+ 'numberOfElements': number;
1165
+ 'totalSize': number;
1166
+ 'totalPages': number;
1167
+ 'cursors': Array<object>;
1168
+ }
1169
+ export interface CursoredPageable {
1170
+ 'orderBy': Array<SortOrder>;
1171
+ 'number': number;
1172
+ 'size': number;
1173
+ 'mode': PageableMode;
1174
+ 'sort': Sort;
1175
+ 'backward': boolean;
1176
+ }
638
1177
  export declare const GameType: {
639
1178
  readonly Rotj: "ROTJ";
640
1179
  readonly Legacy: "LEGACY";
@@ -642,7 +1181,163 @@ export declare const GameType: {
642
1181
  };
643
1182
  export type GameType = typeof GameType[keyof typeof GameType];
644
1183
  /**
645
- * Player information including join history, tracking data, and punishment scoring
1184
+ * Current lifecycle state.
1185
+ */
1186
+ export declare const JobStatus: {
1187
+ readonly Queued: "QUEUED";
1188
+ readonly Running: "RUNNING";
1189
+ readonly Completed: "COMPLETED";
1190
+ readonly Failed: "FAILED";
1191
+ readonly Cancelled: "CANCELLED";
1192
+ };
1193
+ export type JobStatus = typeof JobStatus[keyof typeof JobStatus];
1194
+ export interface PageAdminAltAccount {
1195
+ 'content': Array<AdminAltAccount>;
1196
+ 'pageable': Pageable;
1197
+ 'pageNumber': number;
1198
+ 'offset': number;
1199
+ 'size': number;
1200
+ 'empty': boolean;
1201
+ 'numberOfElements': number;
1202
+ 'totalSize': number;
1203
+ 'totalPages': number;
1204
+ }
1205
+ export interface PageAdminAltExemption {
1206
+ 'content': Array<AdminAltExemption>;
1207
+ 'pageable': Pageable;
1208
+ 'pageNumber': number;
1209
+ 'offset': number;
1210
+ 'size': number;
1211
+ 'empty': boolean;
1212
+ 'numberOfElements': number;
1213
+ 'totalSize': number;
1214
+ 'totalPages': number;
1215
+ }
1216
+ export interface PageAdminAsyncJob {
1217
+ 'content': Array<AdminAsyncJob>;
1218
+ 'pageable': Pageable;
1219
+ 'pageNumber': number;
1220
+ 'offset': number;
1221
+ 'size': number;
1222
+ 'empty': boolean;
1223
+ 'numberOfElements': number;
1224
+ 'totalSize': number;
1225
+ 'totalPages': number;
1226
+ }
1227
+ export interface PageAdminAuditLogEntry {
1228
+ 'content': Array<AdminAuditLogEntry>;
1229
+ 'pageable': Pageable;
1230
+ 'pageNumber': number;
1231
+ 'offset': number;
1232
+ 'size': number;
1233
+ 'empty': boolean;
1234
+ 'numberOfElements': number;
1235
+ 'totalSize': number;
1236
+ 'totalPages': number;
1237
+ }
1238
+ export interface PageAdminDashboardConnectionResponse {
1239
+ 'content': Array<AdminDashboardConnectionResponse>;
1240
+ 'pageable': Pageable;
1241
+ 'pageNumber': number;
1242
+ 'offset': number;
1243
+ 'size': number;
1244
+ 'empty': boolean;
1245
+ 'numberOfElements': number;
1246
+ 'totalSize': number;
1247
+ 'totalPages': number;
1248
+ }
1249
+ export interface PageAdminPlayerNote {
1250
+ 'content': Array<AdminPlayerNote>;
1251
+ 'pageable': Pageable;
1252
+ 'pageNumber': number;
1253
+ 'offset': number;
1254
+ 'size': number;
1255
+ 'empty': boolean;
1256
+ 'numberOfElements': number;
1257
+ 'totalSize': number;
1258
+ 'totalPages': number;
1259
+ }
1260
+ export interface PageAdminPlayerPunishmentResponse {
1261
+ 'content': Array<AdminPlayerPunishmentResponse>;
1262
+ 'pageable': Pageable;
1263
+ 'pageNumber': number;
1264
+ 'offset': number;
1265
+ 'size': number;
1266
+ 'empty': boolean;
1267
+ 'numberOfElements': number;
1268
+ 'totalSize': number;
1269
+ 'totalPages': number;
1270
+ }
1271
+ export interface PageAdminPlayerReport {
1272
+ 'content': Array<AdminPlayerReport>;
1273
+ 'pageable': Pageable;
1274
+ 'pageNumber': number;
1275
+ 'offset': number;
1276
+ 'size': number;
1277
+ 'empty': boolean;
1278
+ 'numberOfElements': number;
1279
+ 'totalSize': number;
1280
+ 'totalPages': number;
1281
+ }
1282
+ export interface PageAdminPlayerSession {
1283
+ 'content': Array<AdminPlayerSession>;
1284
+ 'pageable': Pageable;
1285
+ 'pageNumber': number;
1286
+ 'offset': number;
1287
+ 'size': number;
1288
+ 'empty': boolean;
1289
+ 'numberOfElements': number;
1290
+ 'totalSize': number;
1291
+ 'totalPages': number;
1292
+ }
1293
+ export interface PageAdminPlayerSummary {
1294
+ 'content': Array<AdminPlayerSummary>;
1295
+ 'pageable': Pageable;
1296
+ 'pageNumber': number;
1297
+ 'offset': number;
1298
+ 'size': number;
1299
+ 'empty': boolean;
1300
+ 'numberOfElements': number;
1301
+ 'totalSize': number;
1302
+ 'totalPages': number;
1303
+ }
1304
+ export interface PageAdminPunishmentListItem {
1305
+ 'content': Array<AdminPunishmentListItem>;
1306
+ 'pageable': Pageable;
1307
+ 'pageNumber': number;
1308
+ 'offset': number;
1309
+ 'size': number;
1310
+ 'empty': boolean;
1311
+ 'numberOfElements': number;
1312
+ 'totalSize': number;
1313
+ 'totalPages': number;
1314
+ }
1315
+ export interface PagePunishmentGetPunishmentResponse {
1316
+ 'content': Array<PunishmentGetPunishmentResponse>;
1317
+ 'pageable': Pageable;
1318
+ 'pageNumber': number;
1319
+ 'offset': number;
1320
+ 'size': number;
1321
+ 'empty': boolean;
1322
+ 'numberOfElements': number;
1323
+ 'totalSize': number;
1324
+ 'totalPages': number;
1325
+ }
1326
+ export interface Pageable {
1327
+ 'orderBy': Array<SortOrder>;
1328
+ 'number': number;
1329
+ 'size': number;
1330
+ 'mode': PageableMode;
1331
+ 'sort': Sort;
1332
+ }
1333
+ export declare const PageableMode: {
1334
+ readonly CursorNext: "CURSOR_NEXT";
1335
+ readonly CursorPrevious: "CURSOR_PREVIOUS";
1336
+ readonly Offset: "OFFSET";
1337
+ };
1338
+ export type PageableMode = typeof PageableMode[keyof typeof PageableMode];
1339
+ /**
1340
+ * Player information including join history, tracking data, and trust factor
646
1341
  */
647
1342
  export interface PlayerGetPlayerInformation {
648
1343
  /**
@@ -654,14 +1349,123 @@ export interface PlayerGetPlayerInformation {
654
1349
  */
655
1350
  'firstLogin': string;
656
1351
  /**
657
- * Raw punishment score calculated as: SUM((base_weight × severity/10)). Used for tracking overall punishment severity.
1352
+ * Trust factor (0-100, higher = more trusted). Composite signal from account age, punishment history, alts, connections, propagation, and admin affirmations. Informational only — does NOT auto-escalate punishments.
1353
+ */
1354
+ 'trustFactor': number;
1355
+ /**
1356
+ * **DEPRECATED.** The punishment-score formula was removed in 3.7.0 when trust factor replaced it. This field always serializes as 0.0 and is retained only for clients pinned to ≤ 3.6.0. Use {@link #trustFactor} instead.
1357
+ * @deprecated
658
1358
  */
659
1359
  'punishmentPointsRaw': number;
660
1360
  /**
661
- * Punishment score as a percentage (0-100). When >100% before applying a new punishment, the new punishment should be made permanent.
1361
+ * **DEPRECATED.** See {@link #punishmentPointsRaw}. Always 0.0 use trustFactor.
1362
+ * @deprecated
662
1363
  */
663
1364
  'punishmentPointsPercent': number;
664
1365
  }
1366
+ /**
1367
+ * Close the active player session for a (playerUuid, serverSessionId) pair. No-op if no active session is found.
1368
+ */
1369
+ export interface PlayerSessionEndRequest {
1370
+ /**
1371
+ * Player Minecraft UUID
1372
+ */
1373
+ 'playerUuid': string;
1374
+ /**
1375
+ * Server session id the player was on
1376
+ */
1377
+ 'serverSessionId': string;
1378
+ }
1379
+ /**
1380
+ * Unified player-join request. Runs the full authorization check (VPN, bypass, punishments) and conditionally opens a player_session for the allowed players.
1381
+ */
1382
+ export interface PlayerSessionStartRequest {
1383
+ /**
1384
+ * Player Minecraft UUID
1385
+ */
1386
+ 'playerUuid': string;
1387
+ /**
1388
+ * Server session id this player is on (from /v1/servers register)
1389
+ */
1390
+ 'serverSessionId': string;
1391
+ /**
1392
+ * IPv4 address the player is connecting from
1393
+ */
1394
+ 'ip': string;
1395
+ /**
1396
+ * When true, bypass any cached VPN-check result and re-run all detection services. Useful when debugging a specific connection. Defaults to false.
1397
+ */
1398
+ 'forceRecheck'?: boolean | null;
1399
+ }
1400
+ /**
1401
+ * Result of POST /v1/player-session/start. Always populated; session fields are null when the player was not allowed in.
1402
+ */
1403
+ export interface PlayerSessionStartResponse {
1404
+ /**
1405
+ * Session row id. Null when the join was not allowed.
1406
+ */
1407
+ 'sessionId'?: string | null;
1408
+ /**
1409
+ * When the session was opened (ISO-8601). For re-attached sessions this is the original start time, not now. Null when the join was not allowed.
1410
+ */
1411
+ 'startedAt'?: string | null;
1412
+ /**
1413
+ * Player Minecraft UUID
1414
+ */
1415
+ 'playerUuid': string;
1416
+ /**
1417
+ * Server session id the join applies to
1418
+ */
1419
+ 'serverSessionId': string;
1420
+ /**
1421
+ * Final allow/deny verdict plus formatted kick message if denied.
1422
+ */
1423
+ 'connectionResult': ConnectionResult;
1424
+ /**
1425
+ * Player\'s connecting IP, echoed from the request
1426
+ */
1427
+ 'ipAddress': string;
1428
+ /**
1429
+ * City reported by the first VPN provider that returned one. Null when no provider has city data (private IPs, localhost, sparse providers).
1430
+ */
1431
+ 'city'?: string | null;
1432
+ /**
1433
+ * Country code reported by the first VPN provider that returned one (ISO 3166-1 alpha-2 or alpha-3 depending on provider).
1434
+ */
1435
+ 'country'?: string | null;
1436
+ /**
1437
+ * Confidence score (0.0–100.0) representing what fraction of VPN detection services flagged this IP as suspicious.
1438
+ */
1439
+ 'percentPositive': number;
1440
+ /**
1441
+ * Total VPN detection services successfully queried on this IP
1442
+ */
1443
+ 'numberOfChecks': number;
1444
+ /**
1445
+ * Whether this IP has an active administrative VPN bypass
1446
+ */
1447
+ 'isBypassed': boolean;
1448
+ /**
1449
+ * Bypass expiration timestamp; null if not bypassed or bypass is permanent.
1450
+ */
1451
+ 'bypassedUntil'?: string | null;
1452
+ /**
1453
+ * Per-provider VPN check results, useful for the admin UI / debugging.
1454
+ */
1455
+ 'checkResults'?: Array<AdminConnectionCheckResult>;
1456
+ /**
1457
+ * Player info (first-join flag, first login, punishment score). Null only in edge cases where the player record could not be loaded.
1458
+ */
1459
+ 'playerInformation'?: PlayerGetPlayerInformation | null;
1460
+ /**
1461
+ * Active (non-expired, non-revoked) punishments on this player, including any that were just propagated by the join check.
1462
+ */
1463
+ 'activePunishments': Array<PunishmentGetPunishmentResponse>;
1464
+ /**
1465
+ * Aggregate session stats. Useful for game-server-side welcome messages (\"Welcome back — you\'ve played 250 hours\") or for the chat plugin to know if the player is a returning user.
1466
+ */
1467
+ 'sessionStats': AdminPlayerSessionStats;
1468
+ }
665
1469
  /**
666
1470
  * Punishment information including reason, type, creator, and expiration
667
1471
  */
@@ -734,11 +1538,22 @@ export interface PunishmentSeveritiesResponseSeverityInfo {
734
1538
  */
735
1539
  'durationSeconds': number;
736
1540
  }
1541
+ /**
1542
+ * 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.
1543
+ */
1544
+ export declare const PunishmentSource: {
1545
+ readonly Direct: "DIRECT";
1546
+ readonly Propagated: "PROPAGATED";
1547
+ };
1548
+ export type PunishmentSource = typeof PunishmentSource[keyof typeof PunishmentSource];
737
1549
  export declare const PunishmentTargetType: {
738
1550
  readonly Player: "PLAYER";
739
1551
  readonly Connection: "CONNECTION";
740
1552
  };
741
1553
  export type PunishmentTargetType = typeof PunishmentTargetType[keyof typeof PunishmentTargetType];
1554
+ /**
1555
+ * Type of punishment
1556
+ */
742
1557
  export declare const PunishmentType: {
743
1558
  readonly Ban: "BAN";
744
1559
  readonly Mute: "MUTE";
@@ -757,6 +1572,17 @@ export declare const Region: {
757
1572
  readonly Au: "AU";
758
1573
  };
759
1574
  export type Region = typeof Region[keyof typeof Region];
1575
+ /**
1576
+ * Category of misconduct. Coarse on purpose — staff refine in triage.
1577
+ */
1578
+ export declare const ReportCategory: {
1579
+ readonly Cheating: "CHEATING";
1580
+ readonly Harassment: "HARASSMENT";
1581
+ readonly ChatAbuse: "CHAT_ABUSE";
1582
+ readonly Griefing: "GRIEFING";
1583
+ readonly Other: "OTHER";
1584
+ };
1585
+ export type ReportCategory = typeof ReportCategory[keyof typeof ReportCategory];
760
1586
  /**
761
1587
  * Search kind — PLAYER for UUID/username searches, IP for IP address searches
762
1588
  */
@@ -781,6 +1607,128 @@ export interface ServerSessionDTO {
781
1607
  'endedAt'?: string | null;
782
1608
  'online': boolean;
783
1609
  }
1610
+ export interface SliceAdminAltAccount {
1611
+ 'content': Array<AdminAltAccount>;
1612
+ 'pageable': Pageable;
1613
+ 'pageNumber': number;
1614
+ 'offset': number;
1615
+ 'size': number;
1616
+ 'empty': boolean;
1617
+ 'numberOfElements': number;
1618
+ }
1619
+ export interface SliceAdminAltExemption {
1620
+ 'content': Array<AdminAltExemption>;
1621
+ 'pageable': Pageable;
1622
+ 'pageNumber': number;
1623
+ 'offset': number;
1624
+ 'size': number;
1625
+ 'empty': boolean;
1626
+ 'numberOfElements': number;
1627
+ }
1628
+ export interface SliceAdminAsyncJob {
1629
+ 'content': Array<AdminAsyncJob>;
1630
+ 'pageable': Pageable;
1631
+ 'pageNumber': number;
1632
+ 'offset': number;
1633
+ 'size': number;
1634
+ 'empty': boolean;
1635
+ 'numberOfElements': number;
1636
+ }
1637
+ export interface SliceAdminAuditLogEntry {
1638
+ 'content': Array<AdminAuditLogEntry>;
1639
+ 'pageable': Pageable;
1640
+ 'pageNumber': number;
1641
+ 'offset': number;
1642
+ 'size': number;
1643
+ 'empty': boolean;
1644
+ 'numberOfElements': number;
1645
+ }
1646
+ export interface SliceAdminDashboardConnectionResponse {
1647
+ 'content': Array<AdminDashboardConnectionResponse>;
1648
+ 'pageable': Pageable;
1649
+ 'pageNumber': number;
1650
+ 'offset': number;
1651
+ 'size': number;
1652
+ 'empty': boolean;
1653
+ 'numberOfElements': number;
1654
+ }
1655
+ export interface SliceAdminPlayerNote {
1656
+ 'content': Array<AdminPlayerNote>;
1657
+ 'pageable': Pageable;
1658
+ 'pageNumber': number;
1659
+ 'offset': number;
1660
+ 'size': number;
1661
+ 'empty': boolean;
1662
+ 'numberOfElements': number;
1663
+ }
1664
+ export interface SliceAdminPlayerPunishmentResponse {
1665
+ 'content': Array<AdminPlayerPunishmentResponse>;
1666
+ 'pageable': Pageable;
1667
+ 'pageNumber': number;
1668
+ 'offset': number;
1669
+ 'size': number;
1670
+ 'empty': boolean;
1671
+ 'numberOfElements': number;
1672
+ }
1673
+ export interface SliceAdminPlayerReport {
1674
+ 'content': Array<AdminPlayerReport>;
1675
+ 'pageable': Pageable;
1676
+ 'pageNumber': number;
1677
+ 'offset': number;
1678
+ 'size': number;
1679
+ 'empty': boolean;
1680
+ 'numberOfElements': number;
1681
+ }
1682
+ export interface SliceAdminPlayerSession {
1683
+ 'content': Array<AdminPlayerSession>;
1684
+ 'pageable': Pageable;
1685
+ 'pageNumber': number;
1686
+ 'offset': number;
1687
+ 'size': number;
1688
+ 'empty': boolean;
1689
+ 'numberOfElements': number;
1690
+ }
1691
+ export interface SliceAdminPlayerSummary {
1692
+ 'content': Array<AdminPlayerSummary>;
1693
+ 'pageable': Pageable;
1694
+ 'pageNumber': number;
1695
+ 'offset': number;
1696
+ 'size': number;
1697
+ 'empty': boolean;
1698
+ 'numberOfElements': number;
1699
+ }
1700
+ export interface SliceAdminPunishmentListItem {
1701
+ 'content': Array<AdminPunishmentListItem>;
1702
+ 'pageable': Pageable;
1703
+ 'pageNumber': number;
1704
+ 'offset': number;
1705
+ 'size': number;
1706
+ 'empty': boolean;
1707
+ 'numberOfElements': number;
1708
+ }
1709
+ export interface SlicePunishmentGetPunishmentResponse {
1710
+ 'content': Array<PunishmentGetPunishmentResponse>;
1711
+ 'pageable': Pageable;
1712
+ 'pageNumber': number;
1713
+ 'offset': number;
1714
+ 'size': number;
1715
+ 'empty': boolean;
1716
+ 'numberOfElements': number;
1717
+ }
1718
+ export interface Sort {
1719
+ 'orderBy': Array<SortOrder>;
1720
+ }
1721
+ export interface SortOrder {
1722
+ 'ignoreCase': boolean;
1723
+ 'direction': SortOrderDirection;
1724
+ 'property': string;
1725
+ 'ascending': boolean;
1726
+ }
1727
+ export declare const SortOrderDirection: {
1728
+ readonly Asc: "ASC";
1729
+ readonly Desc: "DESC";
1730
+ };
1731
+ export type SortOrderDirection = typeof SortOrderDirection[keyof typeof SortOrderDirection];
784
1732
  export interface TokenRequest {
785
1733
  'grant_type'?: string | null;
786
1734
  'client_id'?: string | null;
@@ -808,19 +1756,135 @@ export interface UserProfileResponse {
808
1756
  'discordRoles': Array<string>;
809
1757
  }
810
1758
  /**
811
- * AdminClientCredentialsApi - axios parameter creator
1759
+ * AdminAuditLogApi - axios parameter creator
812
1760
  */
813
- export declare const AdminClientCredentialsApiAxiosParamCreator: (configuration?: Configuration) => {
1761
+ export declare const AdminAuditLogApiAxiosParamCreator: (configuration?: Configuration) => {
814
1762
  /**
815
- * Temporarily disables a client credential, preventing authentication. Can be re-enabled later.
816
- * @summary Disable client credentials
817
- * @param {number} id Client credential ID
1763
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1764
+ * @summary Search the admin audit log
1765
+ * @param {Pageable} pageable
1766
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1767
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1768
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1769
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
818
1770
  * @param {*} [options] Override http request option.
819
1771
  * @throws {RequiredError}
820
1772
  */
821
- disableClient: (id: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1773
+ search: (pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
822
1774
  /**
823
- * Re-enables a previously disabled client credential, allowing authentication.
1775
+ * 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.
1776
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1777
+ * @param {CursoredPageable} pageable
1778
+ * @param {string | null} [actor]
1779
+ * @param {string | null} [action]
1780
+ * @param {string | null} [targetType]
1781
+ * @param {string | null} [targetId]
1782
+ * @param {*} [options] Override http request option.
1783
+ * @throws {RequiredError}
1784
+ */
1785
+ searchCursor: (pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1786
+ };
1787
+ /**
1788
+ * AdminAuditLogApi - functional programming interface
1789
+ */
1790
+ export declare const AdminAuditLogApiFp: (configuration?: Configuration) => {
1791
+ /**
1792
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1793
+ * @summary Search the admin audit log
1794
+ * @param {Pageable} pageable
1795
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1796
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1797
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1798
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1799
+ * @param {*} [options] Override http request option.
1800
+ * @throws {RequiredError}
1801
+ */
1802
+ search(pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAuditLogEntry>>;
1803
+ /**
1804
+ * 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.
1805
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1806
+ * @param {CursoredPageable} pageable
1807
+ * @param {string | null} [actor]
1808
+ * @param {string | null} [action]
1809
+ * @param {string | null} [targetType]
1810
+ * @param {string | null} [targetId]
1811
+ * @param {*} [options] Override http request option.
1812
+ * @throws {RequiredError}
1813
+ */
1814
+ searchCursor(pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CursoredPageAdminAuditLogEntry>>;
1815
+ };
1816
+ /**
1817
+ * AdminAuditLogApi - factory interface
1818
+ */
1819
+ export declare const AdminAuditLogApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1820
+ /**
1821
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1822
+ * @summary Search the admin audit log
1823
+ * @param {Pageable} pageable
1824
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1825
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1826
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1827
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1828
+ * @param {*} [options] Override http request option.
1829
+ * @throws {RequiredError}
1830
+ */
1831
+ search(pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAuditLogEntry>;
1832
+ /**
1833
+ * 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.
1834
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1835
+ * @param {CursoredPageable} pageable
1836
+ * @param {string | null} [actor]
1837
+ * @param {string | null} [action]
1838
+ * @param {string | null} [targetType]
1839
+ * @param {string | null} [targetId]
1840
+ * @param {*} [options] Override http request option.
1841
+ * @throws {RequiredError}
1842
+ */
1843
+ searchCursor(pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<CursoredPageAdminAuditLogEntry>;
1844
+ };
1845
+ /**
1846
+ * AdminAuditLogApi - object-oriented interface
1847
+ */
1848
+ export declare class AdminAuditLogApi extends BaseAPI {
1849
+ /**
1850
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1851
+ * @summary Search the admin audit log
1852
+ * @param {Pageable} pageable
1853
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1854
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1855
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1856
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1857
+ * @param {*} [options] Override http request option.
1858
+ * @throws {RequiredError}
1859
+ */
1860
+ search(pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAuditLogEntry, any, {}>>;
1861
+ /**
1862
+ * 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.
1863
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1864
+ * @param {CursoredPageable} pageable
1865
+ * @param {string | null} [actor]
1866
+ * @param {string | null} [action]
1867
+ * @param {string | null} [targetType]
1868
+ * @param {string | null} [targetId]
1869
+ * @param {*} [options] Override http request option.
1870
+ * @throws {RequiredError}
1871
+ */
1872
+ searchCursor(pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CursoredPageAdminAuditLogEntry, any, {}>>;
1873
+ }
1874
+ /**
1875
+ * AdminClientCredentialsApi - axios parameter creator
1876
+ */
1877
+ export declare const AdminClientCredentialsApiAxiosParamCreator: (configuration?: Configuration) => {
1878
+ /**
1879
+ * Temporarily disables a client credential, preventing authentication. Can be re-enabled later.
1880
+ * @summary Disable client credentials
1881
+ * @param {number} id Client credential ID
1882
+ * @param {*} [options] Override http request option.
1883
+ * @throws {RequiredError}
1884
+ */
1885
+ disableClient: (id: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1886
+ /**
1887
+ * Re-enables a previously disabled client credential, allowing authentication.
824
1888
  * @summary Enable client credentials
825
1889
  * @param {number} id Client credential ID
826
1890
  * @param {*} [options] Override http request option.
@@ -1056,8 +2120,8 @@ export declare class AdminClientCredentialsApi extends BaseAPI {
1056
2120
  */
1057
2121
  export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Configuration) => {
1058
2122
  /**
1059
- * 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.
1060
- * @summary Backfill missing location data
2123
+ * 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.
2124
+ * @summary Start a location backfill job
1061
2125
  * @param {*} [options] Override http request option.
1062
2126
  * @throws {RequiredError}
1063
2127
  */
@@ -1070,32 +2134,49 @@ export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Conf
1070
2134
  * @throws {RequiredError}
1071
2135
  */
1072
2136
  createBypass: (createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2137
+ /**
2138
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2139
+ * @summary Get connection detail
2140
+ * @param {number} id
2141
+ * @param {*} [options] Override http request option.
2142
+ * @throws {RequiredError}
2143
+ */
2144
+ getConnection: (id: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2145
+ /**
2146
+ * 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.
2147
+ * @summary List players who have used this connection
2148
+ * @param {number} id
2149
+ * @param {Pageable} pageable
2150
+ * @param {*} [options] Override http request option.
2151
+ * @throws {RequiredError}
2152
+ */
2153
+ getConnectionPlayers: (id: number, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1073
2154
  /**
1074
2155
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1075
2156
  * @summary List all connections (paginated)
1076
- * @param {string | null} [ipAddress] Filter by IP address
1077
- * @param {string | null} [uuid] Filter by player UUID
1078
- * @param {boolean | null} [isVpn] Filter by VPN status
1079
- * @param {number | null} [page] Page number (1-indexed)
1080
- * @param {number | null} [limit] Page size
2157
+ * @param {Pageable} pageable
2158
+ * @param {number | null} [createdAfter]
2159
+ * @param {number | null} [createdBefore]
2160
+ * @param {string | null} [ipAddress]
2161
+ * @param {string | null} [uuid]
2162
+ * @param {boolean | null} [isVpn]
1081
2163
  * @param {*} [options] Override http request option.
1082
2164
  * @throws {RequiredError}
1083
2165
  */
1084
- listAllConnections: (ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2166
+ listAllConnections: (pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1085
2167
  /**
1086
2168
  * 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).
1087
2169
  * @summary List recent connections
1088
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
1089
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
1090
- * @param {string | null} [ipAddress] Filter by IP address
1091
- * @param {string | null} [uuid] Filter by player UUID
1092
- * @param {boolean | null} [isVpn] Filter by VPN status (true&#x3D;VPN, false&#x3D;not VPN)
1093
- * @param {number | null} [page] Page number for pagination
1094
- * @param {number | null} [limit] Maximum number of records to return
2170
+ * @param {Pageable} pageable
2171
+ * @param {number | null} [createdAfter]
2172
+ * @param {number | null} [createdBefore]
2173
+ * @param {string | null} [ipAddress]
2174
+ * @param {string | null} [uuid]
2175
+ * @param {boolean | null} [isVpn]
1095
2176
  * @param {*} [options] Override http request option.
1096
2177
  * @throws {RequiredError}
1097
2178
  */
1098
- listConnections: (createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2179
+ listConnections: (pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1099
2180
  /**
1100
2181
  * 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.
1101
2182
  * @summary Refresh a single VPN check
@@ -1111,12 +2192,12 @@ export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Conf
1111
2192
  */
1112
2193
  export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1113
2194
  /**
1114
- * 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.
1115
- * @summary Backfill missing location data
2195
+ * 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.
2196
+ * @summary Start a location backfill job
1116
2197
  * @param {*} [options] Override http request option.
1117
2198
  * @throws {RequiredError}
1118
2199
  */
1119
- backfillLocation(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminBackfillLocationResponse>>;
2200
+ backfillLocation(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJobStartResponse>>;
1120
2201
  /**
1121
2202
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1122
2203
  * @summary Create connection bypass
@@ -1125,32 +2206,49 @@ export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1125
2206
  * @throws {RequiredError}
1126
2207
  */
1127
2208
  createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminConnectionBypassResponse>>;
2209
+ /**
2210
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2211
+ * @summary Get connection detail
2212
+ * @param {number} id
2213
+ * @param {*} [options] Override http request option.
2214
+ * @throws {RequiredError}
2215
+ */
2216
+ getConnection(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminDashboardConnectionResponse>>;
2217
+ /**
2218
+ * 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.
2219
+ * @summary List players who have used this connection
2220
+ * @param {number} id
2221
+ * @param {Pageable} pageable
2222
+ * @param {*} [options] Override http request option.
2223
+ * @throws {RequiredError}
2224
+ */
2225
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerSummary>>;
1128
2226
  /**
1129
2227
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1130
2228
  * @summary List all connections (paginated)
1131
- * @param {string | null} [ipAddress] Filter by IP address
1132
- * @param {string | null} [uuid] Filter by player UUID
1133
- * @param {boolean | null} [isVpn] Filter by VPN status
1134
- * @param {number | null} [page] Page number (1-indexed)
1135
- * @param {number | null} [limit] Page size
2229
+ * @param {Pageable} pageable
2230
+ * @param {number | null} [createdAfter]
2231
+ * @param {number | null} [createdBefore]
2232
+ * @param {string | null} [ipAddress]
2233
+ * @param {string | null} [uuid]
2234
+ * @param {boolean | null} [isVpn]
1136
2235
  * @param {*} [options] Override http request option.
1137
2236
  * @throws {RequiredError}
1138
2237
  */
1139
- listAllConnections(ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPagedConnectionResponse>>;
2238
+ listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminDashboardConnectionResponse>>;
1140
2239
  /**
1141
2240
  * 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).
1142
2241
  * @summary List recent connections
1143
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
1144
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
1145
- * @param {string | null} [ipAddress] Filter by IP address
1146
- * @param {string | null} [uuid] Filter by player UUID
1147
- * @param {boolean | null} [isVpn] Filter by VPN status (true&#x3D;VPN, false&#x3D;not VPN)
1148
- * @param {number | null} [page] Page number for pagination
1149
- * @param {number | null} [limit] Maximum number of records to return
2242
+ * @param {Pageable} pageable
2243
+ * @param {number | null} [createdAfter]
2244
+ * @param {number | null} [createdBefore]
2245
+ * @param {string | null} [ipAddress]
2246
+ * @param {string | null} [uuid]
2247
+ * @param {boolean | null} [isVpn]
1150
2248
  * @param {*} [options] Override http request option.
1151
2249
  * @throws {RequiredError}
1152
2250
  */
1153
- listConnections(createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardConnectionResponse>>>;
2251
+ listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardConnectionResponse>>>;
1154
2252
  /**
1155
2253
  * 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.
1156
2254
  * @summary Refresh a single VPN check
@@ -1166,12 +2264,12 @@ export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1166
2264
  */
1167
2265
  export declare const AdminConnectionsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1168
2266
  /**
1169
- * 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.
1170
- * @summary Backfill missing location data
2267
+ * 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.
2268
+ * @summary Start a location backfill job
1171
2269
  * @param {*} [options] Override http request option.
1172
2270
  * @throws {RequiredError}
1173
2271
  */
1174
- backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminBackfillLocationResponse>;
2272
+ backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse>;
1175
2273
  /**
1176
2274
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1177
2275
  * @summary Create connection bypass
@@ -1180,236 +2278,950 @@ export declare const AdminConnectionsApiFactory: (configuration?: Configuration,
1180
2278
  * @throws {RequiredError}
1181
2279
  */
1182
2280
  createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionBypassResponse>;
2281
+ /**
2282
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2283
+ * @summary Get connection detail
2284
+ * @param {number} id
2285
+ * @param {*} [options] Override http request option.
2286
+ * @throws {RequiredError}
2287
+ */
2288
+ getConnection(id: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardConnectionResponse>;
2289
+ /**
2290
+ * 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.
2291
+ * @summary List players who have used this connection
2292
+ * @param {number} id
2293
+ * @param {Pageable} pageable
2294
+ * @param {*} [options] Override http request option.
2295
+ * @throws {RequiredError}
2296
+ */
2297
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSummary>;
2298
+ /**
2299
+ * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
2300
+ * @summary List all connections (paginated)
2301
+ * @param {Pageable} pageable
2302
+ * @param {number | null} [createdAfter]
2303
+ * @param {number | null} [createdBefore]
2304
+ * @param {string | null} [ipAddress]
2305
+ * @param {string | null} [uuid]
2306
+ * @param {boolean | null} [isVpn]
2307
+ * @param {*} [options] Override http request option.
2308
+ * @throws {RequiredError}
2309
+ */
2310
+ listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminDashboardConnectionResponse>;
2311
+ /**
2312
+ * 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).
2313
+ * @summary List recent connections
2314
+ * @param {Pageable} pageable
2315
+ * @param {number | null} [createdAfter]
2316
+ * @param {number | null} [createdBefore]
2317
+ * @param {string | null} [ipAddress]
2318
+ * @param {string | null} [uuid]
2319
+ * @param {boolean | null} [isVpn]
2320
+ * @param {*} [options] Override http request option.
2321
+ * @throws {RequiredError}
2322
+ */
2323
+ listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardConnectionResponse>>;
2324
+ /**
2325
+ * 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.
2326
+ * @summary Refresh a single VPN check
2327
+ * @param {number} connectionId
2328
+ * @param {string} service
2329
+ * @param {*} [options] Override http request option.
2330
+ * @throws {RequiredError}
2331
+ */
2332
+ recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionCheckResult>;
2333
+ };
2334
+ /**
2335
+ * AdminConnectionsApi - object-oriented interface
2336
+ */
2337
+ export declare class AdminConnectionsApi extends BaseAPI {
2338
+ /**
2339
+ * 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.
2340
+ * @summary Start a location backfill job
2341
+ * @param {*} [options] Override http request option.
2342
+ * @throws {RequiredError}
2343
+ */
2344
+ backfillLocation(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAsyncJobStartResponse, any, {}>>;
2345
+ /**
2346
+ * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
2347
+ * @summary Create connection bypass
2348
+ * @param {CreateBypassRequest} createBypassRequest
2349
+ * @param {*} [options] Override http request option.
2350
+ * @throws {RequiredError}
2351
+ */
2352
+ createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminConnectionBypassResponse, any, {}>>;
2353
+ /**
2354
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2355
+ * @summary Get connection detail
2356
+ * @param {number} id
2357
+ * @param {*} [options] Override http request option.
2358
+ * @throws {RequiredError}
2359
+ */
2360
+ getConnection(id: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminDashboardConnectionResponse, any, {}>>;
2361
+ /**
2362
+ * 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.
2363
+ * @summary List players who have used this connection
2364
+ * @param {number} id
2365
+ * @param {Pageable} pageable
2366
+ * @param {*} [options] Override http request option.
2367
+ * @throws {RequiredError}
2368
+ */
2369
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerSummary, any, {}>>;
1183
2370
  /**
1184
2371
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1185
2372
  * @summary List all connections (paginated)
1186
- * @param {string | null} [ipAddress] Filter by IP address
1187
- * @param {string | null} [uuid] Filter by player UUID
1188
- * @param {boolean | null} [isVpn] Filter by VPN status
1189
- * @param {number | null} [page] Page number (1-indexed)
1190
- * @param {number | null} [limit] Page size
2373
+ * @param {Pageable} pageable
2374
+ * @param {number | null} [createdAfter]
2375
+ * @param {number | null} [createdBefore]
2376
+ * @param {string | null} [ipAddress]
2377
+ * @param {string | null} [uuid]
2378
+ * @param {boolean | null} [isVpn]
2379
+ * @param {*} [options] Override http request option.
2380
+ * @throws {RequiredError}
2381
+ */
2382
+ listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminDashboardConnectionResponse, any, {}>>;
2383
+ /**
2384
+ * 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).
2385
+ * @summary List recent connections
2386
+ * @param {Pageable} pageable
2387
+ * @param {number | null} [createdAfter]
2388
+ * @param {number | null} [createdBefore]
2389
+ * @param {string | null} [ipAddress]
2390
+ * @param {string | null} [uuid]
2391
+ * @param {boolean | null} [isVpn]
2392
+ * @param {*} [options] Override http request option.
2393
+ * @throws {RequiredError}
2394
+ */
2395
+ listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminDashboardConnectionResponse[], any, {}>>;
2396
+ /**
2397
+ * 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.
2398
+ * @summary Refresh a single VPN check
2399
+ * @param {number} connectionId
2400
+ * @param {string} service
2401
+ * @param {*} [options] Override http request option.
2402
+ * @throws {RequiredError}
2403
+ */
2404
+ recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminConnectionCheckResult, any, {}>>;
2405
+ }
2406
+ /**
2407
+ * AdminDashboardApi - axios parameter creator
2408
+ */
2409
+ export declare const AdminDashboardApiAxiosParamCreator: (configuration?: Configuration) => {
2410
+ /**
2411
+ * Returns aggregate counts for clients, connections, and players in the system.
2412
+ * @summary Get dashboard statistics
2413
+ * @param {*} [options] Override http request option.
2414
+ * @throws {RequiredError}
2415
+ */
2416
+ dashboardStats: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2417
+ };
2418
+ /**
2419
+ * AdminDashboardApi - functional programming interface
2420
+ */
2421
+ export declare const AdminDashboardApiFp: (configuration?: Configuration) => {
2422
+ /**
2423
+ * Returns aggregate counts for clients, connections, and players in the system.
2424
+ * @summary Get dashboard statistics
2425
+ * @param {*} [options] Override http request option.
2426
+ * @throws {RequiredError}
2427
+ */
2428
+ dashboardStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetDashboardStats>>;
2429
+ };
2430
+ /**
2431
+ * AdminDashboardApi - factory interface
2432
+ */
2433
+ export declare const AdminDashboardApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
2434
+ /**
2435
+ * Returns aggregate counts for clients, connections, and players in the system.
2436
+ * @summary Get dashboard statistics
2437
+ * @param {*} [options] Override http request option.
2438
+ * @throws {RequiredError}
2439
+ */
2440
+ dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats>;
2441
+ };
2442
+ /**
2443
+ * AdminDashboardApi - object-oriented interface
2444
+ */
2445
+ export declare class AdminDashboardApi extends BaseAPI {
2446
+ /**
2447
+ * Returns aggregate counts for clients, connections, and players in the system.
2448
+ * @summary Get dashboard statistics
2449
+ * @param {*} [options] Override http request option.
2450
+ * @throws {RequiredError}
2451
+ */
2452
+ dashboardStats(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminGetDashboardStats, any, {}>>;
2453
+ }
2454
+ /**
2455
+ * AdminJobsApi - axios parameter creator
2456
+ */
2457
+ export declare const AdminJobsApiAxiosParamCreator: (configuration?: Configuration) => {
2458
+ /**
2459
+ * 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.
2460
+ * @summary Request cancellation of an async job
2461
+ * @param {string} id Job id
2462
+ * @param {*} [options] Override http request option.
2463
+ * @throws {RequiredError}
2464
+ */
2465
+ cancel: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2466
+ /**
2467
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2468
+ * @summary Get one async job
2469
+ * @param {string} id Job id
2470
+ * @param {*} [options] Override http request option.
2471
+ * @throws {RequiredError}
2472
+ */
2473
+ get: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2474
+ /**
2475
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2476
+ * @summary List async jobs
2477
+ * @param {Pageable} pageable
2478
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2479
+ * @param {*} [options] Override http request option.
2480
+ * @throws {RequiredError}
2481
+ */
2482
+ list: (pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2483
+ };
2484
+ /**
2485
+ * AdminJobsApi - functional programming interface
2486
+ */
2487
+ export declare const AdminJobsApiFp: (configuration?: Configuration) => {
2488
+ /**
2489
+ * 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.
2490
+ * @summary Request cancellation of an async job
2491
+ * @param {string} id Job id
2492
+ * @param {*} [options] Override http request option.
2493
+ * @throws {RequiredError}
2494
+ */
2495
+ cancel(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2496
+ /**
2497
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2498
+ * @summary Get one async job
2499
+ * @param {string} id Job id
2500
+ * @param {*} [options] Override http request option.
2501
+ * @throws {RequiredError}
2502
+ */
2503
+ get(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJob>>;
2504
+ /**
2505
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2506
+ * @summary List async jobs
2507
+ * @param {Pageable} pageable
2508
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2509
+ * @param {*} [options] Override http request option.
2510
+ * @throws {RequiredError}
2511
+ */
2512
+ list(pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAsyncJob>>;
2513
+ };
2514
+ /**
2515
+ * AdminJobsApi - factory interface
2516
+ */
2517
+ export declare const AdminJobsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
2518
+ /**
2519
+ * 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.
2520
+ * @summary Request cancellation of an async job
2521
+ * @param {string} id Job id
2522
+ * @param {*} [options] Override http request option.
2523
+ * @throws {RequiredError}
2524
+ */
2525
+ cancel(id: string, options?: RawAxiosRequestConfig): AxiosPromise<void>;
2526
+ /**
2527
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2528
+ * @summary Get one async job
2529
+ * @param {string} id Job id
2530
+ * @param {*} [options] Override http request option.
2531
+ * @throws {RequiredError}
2532
+ */
2533
+ get(id: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJob>;
2534
+ /**
2535
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2536
+ * @summary List async jobs
2537
+ * @param {Pageable} pageable
2538
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2539
+ * @param {*} [options] Override http request option.
2540
+ * @throws {RequiredError}
2541
+ */
2542
+ list(pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAsyncJob>;
2543
+ };
2544
+ /**
2545
+ * AdminJobsApi - object-oriented interface
2546
+ */
2547
+ export declare class AdminJobsApi extends BaseAPI {
2548
+ /**
2549
+ * 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.
2550
+ * @summary Request cancellation of an async job
2551
+ * @param {string} id Job id
2552
+ * @param {*} [options] Override http request option.
2553
+ * @throws {RequiredError}
2554
+ */
2555
+ cancel(id: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
2556
+ /**
2557
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2558
+ * @summary Get one async job
2559
+ * @param {string} id Job id
2560
+ * @param {*} [options] Override http request option.
2561
+ * @throws {RequiredError}
2562
+ */
2563
+ get(id: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAsyncJob, any, {}>>;
2564
+ /**
2565
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2566
+ * @summary List async jobs
2567
+ * @param {Pageable} pageable
2568
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2569
+ * @param {*} [options] Override http request option.
2570
+ * @throws {RequiredError}
2571
+ */
2572
+ list(pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAsyncJob, any, {}>>;
2573
+ }
2574
+ /**
2575
+ * AdminPlayersApi - axios parameter creator
2576
+ */
2577
+ export declare const AdminPlayersApiAxiosParamCreator: (configuration?: Configuration) => {
2578
+ /**
2579
+ * 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.
2580
+ * @summary Add an alt exemption
2581
+ * @param {string} uuid Player Minecraft UUID
2582
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2583
+ * @param {*} [options] Override http request option.
2584
+ * @throws {RequiredError}
2585
+ */
2586
+ addAltExemption: (uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2587
+ /**
2588
+ * 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.
2589
+ * @summary Bulk-revoke PROPAGATED links by source
2590
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2591
+ * @param {*} [options] Override http request option.
2592
+ * @throws {RequiredError}
2593
+ */
2594
+ bulkRevokePropagated: (adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2595
+ /**
2596
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2597
+ * @summary Create a staff note on a player
2598
+ * @param {string} uuid Player Minecraft UUID
2599
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2600
+ * @param {*} [options] Override http request option.
2601
+ * @throws {RequiredError}
2602
+ */
2603
+ createPlayerNote: (uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2604
+ /**
2605
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2606
+ * @summary Soft-delete a staff note
2607
+ * @param {string} uuid Player Minecraft UUID (routing only)
2608
+ * @param {number} noteId Note id
2609
+ * @param {*} [options] Override http request option.
2610
+ * @throws {RequiredError}
2611
+ */
2612
+ deletePlayerNote: (uuid: string, noteId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2613
+ /**
2614
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2615
+ * @summary Get player detail
2616
+ * @param {string} uuid Player Minecraft UUID
2617
+ * @param {*} [options] Override http request option.
2618
+ * @throws {RequiredError}
2619
+ */
2620
+ getPlayer: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2621
+ /**
2622
+ * 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.
2623
+ * @summary List a player\'s alt accounts
2624
+ * @param {string} uuid Player Minecraft UUID
2625
+ * @param {Pageable} pageable
2626
+ * @param {*} [options] Override http request option.
2627
+ * @throws {RequiredError}
2628
+ */
2629
+ getPlayerAlts: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2630
+ /**
2631
+ * 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.
2632
+ * @summary List a player\'s connection history
2633
+ * @param {string} uuid Player Minecraft UUID
2634
+ * @param {Pageable} pageable
2635
+ * @param {*} [options] Override http request option.
2636
+ * @throws {RequiredError}
2637
+ */
2638
+ getPlayerConnections: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2639
+ /**
2640
+ * 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.
2641
+ * @summary List a player\'s full punishment history
2642
+ * @param {string} uuid Player Minecraft UUID
2643
+ * @param {Pageable} pageable
2644
+ * @param {*} [options] Override http request option.
2645
+ * @throws {RequiredError}
2646
+ */
2647
+ getPlayerPunishments: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2648
+ /**
2649
+ * 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.
2650
+ * @summary Get a player\'s aggregate session stats
2651
+ * @param {string} uuid Player Minecraft UUID
2652
+ * @param {*} [options] Override http request option.
2653
+ * @throws {RequiredError}
2654
+ */
2655
+ getSessionStats: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2656
+ /**
2657
+ * 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.
2658
+ * @summary List a player\'s alt exemptions
2659
+ * @param {string} uuid Player Minecraft UUID
2660
+ * @param {Pageable} pageable
2661
+ * @param {*} [options] Override http request option.
2662
+ * @throws {RequiredError}
2663
+ */
2664
+ listAltExemptions: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2665
+ /**
2666
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2667
+ * @summary List staff notes on a player
2668
+ * @param {string} uuid Player Minecraft UUID
2669
+ * @param {Pageable} pageable
2670
+ * @param {*} [options] Override http request option.
2671
+ * @throws {RequiredError}
2672
+ */
2673
+ listPlayerNotes: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2674
+ /**
2675
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2676
+ * @summary List players
2677
+ * @param {Pageable} pageable
2678
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2679
+ * @param {*} [options] Override http request option.
2680
+ * @throws {RequiredError}
2681
+ */
2682
+ listPlayers: (pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2683
+ /**
2684
+ * 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.
2685
+ * @summary List a player\'s session history
2686
+ * @param {string} uuid Player Minecraft UUID
2687
+ * @param {Pageable} pageable
2688
+ * @param {*} [options] Override http request option.
2689
+ * @throws {RequiredError}
2690
+ */
2691
+ listSessions: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2692
+ /**
2693
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2694
+ * @summary Remove an alt exemption
2695
+ * @param {string} uuid Player Minecraft UUID
2696
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2697
+ * @param {*} [options] Override http request option.
2698
+ * @throws {RequiredError}
2699
+ */
2700
+ removeAltExemption: (uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2701
+ /**
2702
+ * 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.
2703
+ * @summary Revoke a propagated punishment link
2704
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2705
+ * @param {number} playerPunishmentId player_punishment row id
2706
+ * @param {*} [options] Override http request option.
2707
+ * @throws {RequiredError}
2708
+ */
2709
+ revokePropagatedLink: (uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2710
+ /**
2711
+ * 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.
2712
+ * @summary Toggle aggressive-mode immunity
2713
+ * @param {string} uuid Player Minecraft UUID
2714
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2715
+ * @param {*} [options] Override http request option.
2716
+ * @throws {RequiredError}
2717
+ */
2718
+ setAggressiveModeImmunity: (uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2719
+ /**
2720
+ * 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.
2721
+ * @summary Trust factor breakdown for a player
2722
+ * @param {string} uuid Player Minecraft UUID
2723
+ * @param {*} [options] Override http request option.
2724
+ * @throws {RequiredError}
2725
+ */
2726
+ trustFactorBreakdown: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2727
+ /**
2728
+ * 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).
2729
+ * @summary Trust factor history for a player
2730
+ * @param {string} uuid Player Minecraft UUID
2731
+ * @param {number} [days] Window in days (default 30, max 365)
2732
+ * @param {*} [options] Override http request option.
2733
+ * @throws {RequiredError}
2734
+ */
2735
+ trustFactorHistory: (uuid: string, days?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2736
+ };
2737
+ /**
2738
+ * AdminPlayersApi - functional programming interface
2739
+ */
2740
+ export declare const AdminPlayersApiFp: (configuration?: Configuration) => {
2741
+ /**
2742
+ * 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.
2743
+ * @summary Add an alt exemption
2744
+ * @param {string} uuid Player Minecraft UUID
2745
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2746
+ * @param {*} [options] Override http request option.
2747
+ * @throws {RequiredError}
2748
+ */
2749
+ addAltExemption(uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2750
+ /**
2751
+ * 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.
2752
+ * @summary Bulk-revoke PROPAGATED links by source
2753
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2754
+ * @param {*} [options] Override http request option.
2755
+ * @throws {RequiredError}
2756
+ */
2757
+ bulkRevokePropagated(adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminBulkRevokeResponse>>;
2758
+ /**
2759
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2760
+ * @summary Create a staff note on a player
2761
+ * @param {string} uuid Player Minecraft UUID
2762
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2763
+ * @param {*} [options] Override http request option.
2764
+ * @throws {RequiredError}
2765
+ */
2766
+ createPlayerNote(uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerNote>>;
2767
+ /**
2768
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2769
+ * @summary Soft-delete a staff note
2770
+ * @param {string} uuid Player Minecraft UUID (routing only)
2771
+ * @param {number} noteId Note id
2772
+ * @param {*} [options] Override http request option.
2773
+ * @throws {RequiredError}
2774
+ */
2775
+ deletePlayerNote(uuid: string, noteId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2776
+ /**
2777
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2778
+ * @summary Get player detail
2779
+ * @param {string} uuid Player Minecraft UUID
2780
+ * @param {*} [options] Override http request option.
2781
+ * @throws {RequiredError}
2782
+ */
2783
+ getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerDetailResponse>>;
2784
+ /**
2785
+ * 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.
2786
+ * @summary List a player\'s alt accounts
2787
+ * @param {string} uuid Player Minecraft UUID
2788
+ * @param {Pageable} pageable
2789
+ * @param {*} [options] Override http request option.
2790
+ * @throws {RequiredError}
2791
+ */
2792
+ getPlayerAlts(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAltAccount>>;
2793
+ /**
2794
+ * 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.
2795
+ * @summary List a player\'s connection history
2796
+ * @param {string} uuid Player Minecraft UUID
2797
+ * @param {Pageable} pageable
2798
+ * @param {*} [options] Override http request option.
2799
+ * @throws {RequiredError}
2800
+ */
2801
+ getPlayerConnections(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminDashboardConnectionResponse>>;
2802
+ /**
2803
+ * 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.
2804
+ * @summary List a player\'s full punishment history
2805
+ * @param {string} uuid Player Minecraft UUID
2806
+ * @param {Pageable} pageable
2807
+ * @param {*} [options] Override http request option.
2808
+ * @throws {RequiredError}
2809
+ */
2810
+ getPlayerPunishments(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerPunishmentResponse>>;
2811
+ /**
2812
+ * 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.
2813
+ * @summary Get a player\'s aggregate session stats
2814
+ * @param {string} uuid Player Minecraft UUID
2815
+ * @param {*} [options] Override http request option.
2816
+ * @throws {RequiredError}
2817
+ */
2818
+ getSessionStats(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerSessionStats>>;
2819
+ /**
2820
+ * 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.
2821
+ * @summary List a player\'s alt exemptions
2822
+ * @param {string} uuid Player Minecraft UUID
2823
+ * @param {Pageable} pageable
2824
+ * @param {*} [options] Override http request option.
2825
+ * @throws {RequiredError}
2826
+ */
2827
+ listAltExemptions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAltExemption>>;
2828
+ /**
2829
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2830
+ * @summary List staff notes on a player
2831
+ * @param {string} uuid Player Minecraft UUID
2832
+ * @param {Pageable} pageable
2833
+ * @param {*} [options] Override http request option.
2834
+ * @throws {RequiredError}
2835
+ */
2836
+ listPlayerNotes(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerNote>>;
2837
+ /**
2838
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2839
+ * @summary List players
2840
+ * @param {Pageable} pageable
2841
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2842
+ * @param {*} [options] Override http request option.
2843
+ * @throws {RequiredError}
2844
+ */
2845
+ listPlayers(pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerSummary>>;
2846
+ /**
2847
+ * 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.
2848
+ * @summary List a player\'s session history
2849
+ * @param {string} uuid Player Minecraft UUID
2850
+ * @param {Pageable} pageable
2851
+ * @param {*} [options] Override http request option.
2852
+ * @throws {RequiredError}
2853
+ */
2854
+ listSessions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerSession>>;
2855
+ /**
2856
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2857
+ * @summary Remove an alt exemption
2858
+ * @param {string} uuid Player Minecraft UUID
2859
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2860
+ * @param {*} [options] Override http request option.
2861
+ * @throws {RequiredError}
2862
+ */
2863
+ removeAltExemption(uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2864
+ /**
2865
+ * 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.
2866
+ * @summary Revoke a propagated punishment link
2867
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2868
+ * @param {number} playerPunishmentId player_punishment row id
2869
+ * @param {*} [options] Override http request option.
2870
+ * @throws {RequiredError}
2871
+ */
2872
+ revokePropagatedLink(uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2873
+ /**
2874
+ * 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.
2875
+ * @summary Toggle aggressive-mode immunity
2876
+ * @param {string} uuid Player Minecraft UUID
2877
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2878
+ * @param {*} [options] Override http request option.
2879
+ * @throws {RequiredError}
2880
+ */
2881
+ setAggressiveModeImmunity(uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerDetailResponse>>;
2882
+ /**
2883
+ * 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.
2884
+ * @summary Trust factor breakdown for a player
2885
+ * @param {string} uuid Player Minecraft UUID
2886
+ * @param {*} [options] Override http request option.
2887
+ * @throws {RequiredError}
2888
+ */
2889
+ trustFactorBreakdown(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminTrustFactorBreakdown>>;
2890
+ /**
2891
+ * 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).
2892
+ * @summary Trust factor history for a player
2893
+ * @param {string} uuid Player Minecraft UUID
2894
+ * @param {number} [days] Window in days (default 30, max 365)
2895
+ * @param {*} [options] Override http request option.
2896
+ * @throws {RequiredError}
2897
+ */
2898
+ trustFactorHistory(uuid: string, days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminTrustFactorHistoryEntry>>;
2899
+ };
2900
+ /**
2901
+ * AdminPlayersApi - factory interface
2902
+ */
2903
+ export declare const AdminPlayersApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
2904
+ /**
2905
+ * 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.
2906
+ * @summary Add an alt exemption
2907
+ * @param {string} uuid Player Minecraft UUID
2908
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2909
+ * @param {*} [options] Override http request option.
2910
+ * @throws {RequiredError}
2911
+ */
2912
+ addAltExemption(uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
2913
+ /**
2914
+ * 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.
2915
+ * @summary Bulk-revoke PROPAGATED links by source
2916
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2917
+ * @param {*} [options] Override http request option.
2918
+ * @throws {RequiredError}
2919
+ */
2920
+ bulkRevokePropagated(adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminBulkRevokeResponse>;
2921
+ /**
2922
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2923
+ * @summary Create a staff note on a player
2924
+ * @param {string} uuid Player Minecraft UUID
2925
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2926
+ * @param {*} [options] Override http request option.
2927
+ * @throws {RequiredError}
2928
+ */
2929
+ createPlayerNote(uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerNote>;
2930
+ /**
2931
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2932
+ * @summary Soft-delete a staff note
2933
+ * @param {string} uuid Player Minecraft UUID (routing only)
2934
+ * @param {number} noteId Note id
2935
+ * @param {*} [options] Override http request option.
2936
+ * @throws {RequiredError}
2937
+ */
2938
+ deletePlayerNote(uuid: string, noteId: number, options?: RawAxiosRequestConfig): AxiosPromise<void>;
2939
+ /**
2940
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2941
+ * @summary Get player detail
2942
+ * @param {string} uuid Player Minecraft UUID
2943
+ * @param {*} [options] Override http request option.
2944
+ * @throws {RequiredError}
2945
+ */
2946
+ getPlayer(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerDetailResponse>;
2947
+ /**
2948
+ * 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.
2949
+ * @summary List a player\'s alt accounts
2950
+ * @param {string} uuid Player Minecraft UUID
2951
+ * @param {Pageable} pageable
2952
+ * @param {*} [options] Override http request option.
2953
+ * @throws {RequiredError}
2954
+ */
2955
+ getPlayerAlts(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAltAccount>;
2956
+ /**
2957
+ * 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.
2958
+ * @summary List a player\'s connection history
2959
+ * @param {string} uuid Player Minecraft UUID
2960
+ * @param {Pageable} pageable
2961
+ * @param {*} [options] Override http request option.
2962
+ * @throws {RequiredError}
2963
+ */
2964
+ getPlayerConnections(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminDashboardConnectionResponse>;
2965
+ /**
2966
+ * 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.
2967
+ * @summary List a player\'s full punishment history
2968
+ * @param {string} uuid Player Minecraft UUID
2969
+ * @param {Pageable} pageable
2970
+ * @param {*} [options] Override http request option.
2971
+ * @throws {RequiredError}
2972
+ */
2973
+ getPlayerPunishments(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerPunishmentResponse>;
2974
+ /**
2975
+ * 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.
2976
+ * @summary Get a player\'s aggregate session stats
2977
+ * @param {string} uuid Player Minecraft UUID
2978
+ * @param {*} [options] Override http request option.
2979
+ * @throws {RequiredError}
2980
+ */
2981
+ getSessionStats(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerSessionStats>;
2982
+ /**
2983
+ * 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.
2984
+ * @summary List a player\'s alt exemptions
2985
+ * @param {string} uuid Player Minecraft UUID
2986
+ * @param {Pageable} pageable
2987
+ * @param {*} [options] Override http request option.
2988
+ * @throws {RequiredError}
2989
+ */
2990
+ listAltExemptions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAltExemption>;
2991
+ /**
2992
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2993
+ * @summary List staff notes on a player
2994
+ * @param {string} uuid Player Minecraft UUID
2995
+ * @param {Pageable} pageable
2996
+ * @param {*} [options] Override http request option.
2997
+ * @throws {RequiredError}
2998
+ */
2999
+ listPlayerNotes(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerNote>;
3000
+ /**
3001
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3002
+ * @summary List players
3003
+ * @param {Pageable} pageable
3004
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3005
+ * @param {*} [options] Override http request option.
3006
+ * @throws {RequiredError}
3007
+ */
3008
+ listPlayers(pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSummary>;
3009
+ /**
3010
+ * 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.
3011
+ * @summary List a player\'s session history
3012
+ * @param {string} uuid Player Minecraft UUID
3013
+ * @param {Pageable} pageable
3014
+ * @param {*} [options] Override http request option.
3015
+ * @throws {RequiredError}
3016
+ */
3017
+ listSessions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSession>;
3018
+ /**
3019
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3020
+ * @summary Remove an alt exemption
3021
+ * @param {string} uuid Player Minecraft UUID
3022
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3023
+ * @param {*} [options] Override http request option.
3024
+ * @throws {RequiredError}
3025
+ */
3026
+ removeAltExemption(uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3027
+ /**
3028
+ * 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.
3029
+ * @summary Revoke a propagated punishment link
3030
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3031
+ * @param {number} playerPunishmentId player_punishment row id
3032
+ * @param {*} [options] Override http request option.
3033
+ * @throws {RequiredError}
3034
+ */
3035
+ revokePropagatedLink(uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3036
+ /**
3037
+ * 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.
3038
+ * @summary Toggle aggressive-mode immunity
3039
+ * @param {string} uuid Player Minecraft UUID
3040
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
1191
3041
  * @param {*} [options] Override http request option.
1192
3042
  * @throws {RequiredError}
1193
3043
  */
1194
- listAllConnections(ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): AxiosPromise<AdminPagedConnectionResponse>;
3044
+ setAggressiveModeImmunity(uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerDetailResponse>;
1195
3045
  /**
1196
- * 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).
1197
- * @summary List recent connections
1198
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
1199
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
1200
- * @param {string | null} [ipAddress] Filter by IP address
1201
- * @param {string | null} [uuid] Filter by player UUID
1202
- * @param {boolean | null} [isVpn] Filter by VPN status (true&#x3D;VPN, false&#x3D;not VPN)
1203
- * @param {number | null} [page] Page number for pagination
1204
- * @param {number | null} [limit] Maximum number of records to return
3046
+ * 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.
3047
+ * @summary Trust factor breakdown for a player
3048
+ * @param {string} uuid Player Minecraft UUID
1205
3049
  * @param {*} [options] Override http request option.
1206
3050
  * @throws {RequiredError}
1207
3051
  */
1208
- listConnections(createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardConnectionResponse>>;
3052
+ trustFactorBreakdown(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminTrustFactorBreakdown>;
1209
3053
  /**
1210
- * 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.
1211
- * @summary Refresh a single VPN check
1212
- * @param {number} connectionId
1213
- * @param {string} service
3054
+ * 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).
3055
+ * @summary Trust factor history for a player
3056
+ * @param {string} uuid Player Minecraft UUID
3057
+ * @param {number} [days] Window in days (default 30, max 365)
1214
3058
  * @param {*} [options] Override http request option.
1215
3059
  * @throws {RequiredError}
1216
3060
  */
1217
- recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionCheckResult>;
3061
+ trustFactorHistory(uuid: string, days?: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminTrustFactorHistoryEntry>;
1218
3062
  };
1219
3063
  /**
1220
- * AdminConnectionsApi - object-oriented interface
3064
+ * AdminPlayersApi - object-oriented interface
1221
3065
  */
1222
- export declare class AdminConnectionsApi extends BaseAPI {
3066
+ export declare class AdminPlayersApi extends BaseAPI {
1223
3067
  /**
1224
- * 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.
1225
- * @summary Backfill missing location data
3068
+ * 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.
3069
+ * @summary Add an alt exemption
3070
+ * @param {string} uuid Player Minecraft UUID
3071
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
1226
3072
  * @param {*} [options] Override http request option.
1227
3073
  * @throws {RequiredError}
1228
3074
  */
1229
- backfillLocation(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminBackfillLocationResponse, any, {}>>;
3075
+ addAltExemption(uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1230
3076
  /**
1231
- * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1232
- * @summary Create connection bypass
1233
- * @param {CreateBypassRequest} createBypassRequest
3077
+ * 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.
3078
+ * @summary Bulk-revoke PROPAGATED links by source
3079
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
1234
3080
  * @param {*} [options] Override http request option.
1235
3081
  * @throws {RequiredError}
1236
3082
  */
1237
- createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminConnectionBypassResponse, any, {}>>;
3083
+ bulkRevokePropagated(adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminBulkRevokeResponse, any, {}>>;
1238
3084
  /**
1239
- * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1240
- * @summary List all connections (paginated)
1241
- * @param {string | null} [ipAddress] Filter by IP address
1242
- * @param {string | null} [uuid] Filter by player UUID
1243
- * @param {boolean | null} [isVpn] Filter by VPN status
1244
- * @param {number | null} [page] Page number (1-indexed)
1245
- * @param {number | null} [limit] Page size
3085
+ * Appends a free-form note (1–4000 chars). Notes are not editable to revise, post a new one and soft-delete the old.
3086
+ * @summary Create a staff note on a player
3087
+ * @param {string} uuid Player Minecraft UUID
3088
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
1246
3089
  * @param {*} [options] Override http request option.
1247
3090
  * @throws {RequiredError}
1248
3091
  */
1249
- listAllConnections(ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPagedConnectionResponse, any, {}>>;
3092
+ createPlayerNote(uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerNote, any, {}>>;
1250
3093
  /**
1251
- * 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).
1252
- * @summary List recent connections
1253
- * @param {number | null} [createdAfter] Filter connections after this epoch timestamp in milliseconds
1254
- * @param {number | null} [createdBefore] Filter connections before this epoch timestamp in milliseconds
1255
- * @param {string | null} [ipAddress] Filter by IP address
1256
- * @param {string | null} [uuid] Filter by player UUID
1257
- * @param {boolean | null} [isVpn] Filter by VPN status (true&#x3D;VPN, false&#x3D;not VPN)
1258
- * @param {number | null} [page] Page number for pagination
1259
- * @param {number | null} [limit] Maximum number of records to return
3094
+ * Marks the note as deleted but keeps the row for audit. Idempotent 404 if already deleted or unknown id.
3095
+ * @summary Soft-delete a staff note
3096
+ * @param {string} uuid Player Minecraft UUID (routing only)
3097
+ * @param {number} noteId Note id
1260
3098
  * @param {*} [options] Override http request option.
1261
3099
  * @throws {RequiredError}
1262
3100
  */
1263
- listConnections(createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminDashboardConnectionResponse[], any, {}>>;
3101
+ deletePlayerNote(uuid: string, noteId: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1264
3102
  /**
1265
- * 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.
1266
- * @summary Refresh a single VPN check
1267
- * @param {number} connectionId
1268
- * @param {string} service
3103
+ * Returns full detail for a single player including all known usernames and punishment scoring.
3104
+ * @summary Get player detail
3105
+ * @param {string} uuid Player Minecraft UUID
1269
3106
  * @param {*} [options] Override http request option.
1270
3107
  * @throws {RequiredError}
1271
3108
  */
1272
- recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminConnectionCheckResult, any, {}>>;
1273
- }
1274
- /**
1275
- * AdminDashboardApi - axios parameter creator
1276
- */
1277
- export declare const AdminDashboardApiAxiosParamCreator: (configuration?: Configuration) => {
3109
+ getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerDetailResponse, any, {}>>;
1278
3110
  /**
1279
- * Returns aggregate counts for clients, connections, and players in the system.
1280
- * @summary Get dashboard statistics
3111
+ * 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.
3112
+ * @summary List a player\'s alt accounts
3113
+ * @param {string} uuid Player Minecraft UUID
3114
+ * @param {Pageable} pageable
1281
3115
  * @param {*} [options] Override http request option.
1282
3116
  * @throws {RequiredError}
1283
3117
  */
1284
- dashboardStats: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1285
- };
1286
- /**
1287
- * AdminDashboardApi - functional programming interface
1288
- */
1289
- export declare const AdminDashboardApiFp: (configuration?: Configuration) => {
3118
+ getPlayerAlts(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAltAccount, any, {}>>;
1290
3119
  /**
1291
- * Returns aggregate counts for clients, connections, and players in the system.
1292
- * @summary Get dashboard statistics
3120
+ * 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.
3121
+ * @summary List a player\'s connection history
3122
+ * @param {string} uuid Player Minecraft UUID
3123
+ * @param {Pageable} pageable
1293
3124
  * @param {*} [options] Override http request option.
1294
3125
  * @throws {RequiredError}
1295
3126
  */
1296
- dashboardStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetDashboardStats>>;
1297
- };
1298
- /**
1299
- * AdminDashboardApi - factory interface
1300
- */
1301
- export declare const AdminDashboardApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
3127
+ getPlayerConnections(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminDashboardConnectionResponse, any, {}>>;
1302
3128
  /**
1303
- * Returns aggregate counts for clients, connections, and players in the system.
1304
- * @summary Get dashboard statistics
3129
+ * 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.
3130
+ * @summary List a player\'s full punishment history
3131
+ * @param {string} uuid Player Minecraft UUID
3132
+ * @param {Pageable} pageable
1305
3133
  * @param {*} [options] Override http request option.
1306
3134
  * @throws {RequiredError}
1307
3135
  */
1308
- dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats>;
1309
- };
1310
- /**
1311
- * AdminDashboardApi - object-oriented interface
1312
- */
1313
- export declare class AdminDashboardApi extends BaseAPI {
3136
+ getPlayerPunishments(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerPunishmentResponse, any, {}>>;
1314
3137
  /**
1315
- * Returns aggregate counts for clients, connections, and players in the system.
1316
- * @summary Get dashboard statistics
3138
+ * 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.
3139
+ * @summary Get a player\'s aggregate session stats
3140
+ * @param {string} uuid Player Minecraft UUID
1317
3141
  * @param {*} [options] Override http request option.
1318
3142
  * @throws {RequiredError}
1319
3143
  */
1320
- dashboardStats(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminGetDashboardStats, any, {}>>;
1321
- }
1322
- /**
1323
- * AdminPlayersApi - axios parameter creator
1324
- */
1325
- export declare const AdminPlayersApiAxiosParamCreator: (configuration?: Configuration) => {
3144
+ getSessionStats(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerSessionStats, any, {}>>;
1326
3145
  /**
1327
- * Returns full detail for a single player including all known usernames and punishment scoring.
1328
- * @summary Get player detail
3146
+ * 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.
3147
+ * @summary List a player\'s alt exemptions
1329
3148
  * @param {string} uuid Player Minecraft UUID
3149
+ * @param {Pageable} pageable
1330
3150
  * @param {*} [options] Override http request option.
1331
3151
  * @throws {RequiredError}
1332
3152
  */
1333
- getPlayer: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3153
+ listAltExemptions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAltExemption, any, {}>>;
3154
+ /**
3155
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3156
+ * @summary List staff notes on a player
3157
+ * @param {string} uuid Player Minecraft UUID
3158
+ * @param {Pageable} pageable
3159
+ * @param {*} [options] Override http request option.
3160
+ * @throws {RequiredError}
3161
+ */
3162
+ listPlayerNotes(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerNote, any, {}>>;
1334
3163
  /**
1335
3164
  * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1336
3165
  * @summary List players
1337
- * @param {number} page Page number (1-indexed)
1338
- * @param {number} limit Page size
3166
+ * @param {Pageable} pageable
1339
3167
  * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1340
3168
  * @param {*} [options] Override http request option.
1341
3169
  * @throws {RequiredError}
1342
3170
  */
1343
- listPlayers: (page: number, limit: number, search?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1344
- };
1345
- /**
1346
- * AdminPlayersApi - functional programming interface
1347
- */
1348
- export declare const AdminPlayersApiFp: (configuration?: Configuration) => {
3171
+ listPlayers(pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerSummary, any, {}>>;
1349
3172
  /**
1350
- * Returns full detail for a single player including all known usernames and punishment scoring.
1351
- * @summary Get player detail
3173
+ * 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.
3174
+ * @summary List a player\'s session history
1352
3175
  * @param {string} uuid Player Minecraft UUID
3176
+ * @param {Pageable} pageable
1353
3177
  * @param {*} [options] Override http request option.
1354
3178
  * @throws {RequiredError}
1355
3179
  */
1356
- getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerDetailResponse>>;
3180
+ listSessions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerSession, any, {}>>;
1357
3181
  /**
1358
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1359
- * @summary List players
1360
- * @param {number} page Page number (1-indexed)
1361
- * @param {number} limit Page size
1362
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3182
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3183
+ * @summary Remove an alt exemption
3184
+ * @param {string} uuid Player Minecraft UUID
3185
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
1363
3186
  * @param {*} [options] Override http request option.
1364
3187
  * @throws {RequiredError}
1365
3188
  */
1366
- listPlayers(page: number, limit: number, search?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPagedPlayerResponse>>;
1367
- };
1368
- /**
1369
- * AdminPlayersApi - factory interface
1370
- */
1371
- export declare const AdminPlayersApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
3189
+ removeAltExemption(uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1372
3190
  /**
1373
- * Returns full detail for a single player including all known usernames and punishment scoring.
1374
- * @summary Get player detail
1375
- * @param {string} uuid Player Minecraft UUID
3191
+ * 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.
3192
+ * @summary Revoke a propagated punishment link
3193
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3194
+ * @param {number} playerPunishmentId player_punishment row id
1376
3195
  * @param {*} [options] Override http request option.
1377
3196
  * @throws {RequiredError}
1378
3197
  */
1379
- getPlayer(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerDetailResponse>;
3198
+ revokePropagatedLink(uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1380
3199
  /**
1381
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1382
- * @summary List players
1383
- * @param {number} page Page number (1-indexed)
1384
- * @param {number} limit Page size
1385
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3200
+ * 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.
3201
+ * @summary Toggle aggressive-mode immunity
3202
+ * @param {string} uuid Player Minecraft UUID
3203
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
1386
3204
  * @param {*} [options] Override http request option.
1387
3205
  * @throws {RequiredError}
1388
3206
  */
1389
- listPlayers(page: number, limit: number, search?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<AdminPagedPlayerResponse>;
1390
- };
1391
- /**
1392
- * AdminPlayersApi - object-oriented interface
1393
- */
1394
- export declare class AdminPlayersApi extends BaseAPI {
3207
+ setAggressiveModeImmunity(uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerDetailResponse, any, {}>>;
1395
3208
  /**
1396
- * Returns full detail for a single player including all known usernames and punishment scoring.
1397
- * @summary Get player detail
3209
+ * 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.
3210
+ * @summary Trust factor breakdown for a player
1398
3211
  * @param {string} uuid Player Minecraft UUID
1399
3212
  * @param {*} [options] Override http request option.
1400
3213
  * @throws {RequiredError}
1401
3214
  */
1402
- getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerDetailResponse, any, {}>>;
3215
+ trustFactorBreakdown(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminTrustFactorBreakdown, any, {}>>;
1403
3216
  /**
1404
- * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1405
- * @summary List players
1406
- * @param {number} page Page number (1-indexed)
1407
- * @param {number} limit Page size
1408
- * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3217
+ * 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).
3218
+ * @summary Trust factor history for a player
3219
+ * @param {string} uuid Player Minecraft UUID
3220
+ * @param {number} [days] Window in days (default 30, max 365)
1409
3221
  * @param {*} [options] Override http request option.
1410
3222
  * @throws {RequiredError}
1411
3223
  */
1412
- listPlayers(page: number, limit: number, search?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPagedPlayerResponse, any, {}>>;
3224
+ trustFactorHistory(uuid: string, days?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminTrustFactorHistoryEntry, any, {}>>;
1413
3225
  }
1414
3226
  /**
1415
3227
  * AdminPunishmentsApi - axios parameter creator
@@ -1431,21 +3243,29 @@ export declare const AdminPunishmentsApiAxiosParamCreator: (configuration?: Conf
1431
3243
  * @throws {RequiredError}
1432
3244
  */
1433
3245
  createDraft: (adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3246
+ /**
3247
+ * 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.
3248
+ * @summary Edit a punishment
3249
+ * @param {number} id Punishment id
3250
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3251
+ * @param {*} [options] Override http request option.
3252
+ * @throws {RequiredError}
3253
+ */
3254
+ editPunishment: (id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1434
3255
  /**
1435
3256
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1436
3257
  * @summary List punishments
1437
- * @param {number} page Page number (1-indexed)
1438
- * @param {number} limit Page size
1439
- * @param {string | null} [uuid] Filter by player UUID
1440
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1441
- * @param {string | null} [ipAddress] Filter by IP address
1442
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1443
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1444
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
3258
+ * @param {Pageable} pageable
3259
+ * @param {string | null} [uuid]
3260
+ * @param {string | null} [username]
3261
+ * @param {string | null} [ipAddress]
3262
+ * @param {Array<PunishmentType> | null} [type]
3263
+ * @param {number | null} [issuedAfter]
3264
+ * @param {number | null} [issuedBefore]
1445
3265
  * @param {*} [options] Override http request option.
1446
3266
  * @throws {RequiredError}
1447
3267
  */
1448
- getPunishments: (page: number, limit: number, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3268
+ getPunishments: (pageable: Pageable, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1449
3269
  /**
1450
3270
  * Search for players by UUID or username, or look up all players associated with an IP address.
1451
3271
  * @summary Search punishment targets
@@ -1475,21 +3295,29 @@ export declare const AdminPunishmentsApiFp: (configuration?: Configuration) => {
1475
3295
  * @throws {RequiredError}
1476
3296
  */
1477
3297
  createDraft(adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPunishmentDraftResponse>>;
3298
+ /**
3299
+ * 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.
3300
+ * @summary Edit a punishment
3301
+ * @param {number} id Punishment id
3302
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3303
+ * @param {*} [options] Override http request option.
3304
+ * @throws {RequiredError}
3305
+ */
3306
+ editPunishment(id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
1478
3307
  /**
1479
3308
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1480
3309
  * @summary List punishments
1481
- * @param {number} page Page number (1-indexed)
1482
- * @param {number} limit Page size
1483
- * @param {string | null} [uuid] Filter by player UUID
1484
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1485
- * @param {string | null} [ipAddress] Filter by IP address
1486
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1487
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1488
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
3310
+ * @param {Pageable} pageable
3311
+ * @param {string | null} [uuid]
3312
+ * @param {string | null} [username]
3313
+ * @param {string | null} [ipAddress]
3314
+ * @param {Array<PunishmentType> | null} [type]
3315
+ * @param {number | null} [issuedAfter]
3316
+ * @param {number | null} [issuedBefore]
1489
3317
  * @param {*} [options] Override http request option.
1490
3318
  * @throws {RequiredError}
1491
3319
  */
1492
- getPunishments(page: number, limit: number, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPagedPunishmentResponse>>;
3320
+ getPunishments(pageable: Pageable, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPunishmentListItem>>;
1493
3321
  /**
1494
3322
  * Search for players by UUID or username, or look up all players associated with an IP address.
1495
3323
  * @summary Search punishment targets
@@ -1519,21 +3347,29 @@ export declare const AdminPunishmentsApiFactory: (configuration?: Configuration,
1519
3347
  * @throws {RequiredError}
1520
3348
  */
1521
3349
  createDraft(adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPunishmentDraftResponse>;
3350
+ /**
3351
+ * 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.
3352
+ * @summary Edit a punishment
3353
+ * @param {number} id Punishment id
3354
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3355
+ * @param {*} [options] Override http request option.
3356
+ * @throws {RequiredError}
3357
+ */
3358
+ editPunishment(id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
1522
3359
  /**
1523
3360
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1524
3361
  * @summary List punishments
1525
- * @param {number} page Page number (1-indexed)
1526
- * @param {number} limit Page size
1527
- * @param {string | null} [uuid] Filter by player UUID
1528
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1529
- * @param {string | null} [ipAddress] Filter by IP address
1530
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1531
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1532
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
3362
+ * @param {Pageable} pageable
3363
+ * @param {string | null} [uuid]
3364
+ * @param {string | null} [username]
3365
+ * @param {string | null} [ipAddress]
3366
+ * @param {Array<PunishmentType> | null} [type]
3367
+ * @param {number | null} [issuedAfter]
3368
+ * @param {number | null} [issuedBefore]
1533
3369
  * @param {*} [options] Override http request option.
1534
3370
  * @throws {RequiredError}
1535
3371
  */
1536
- getPunishments(page: number, limit: number, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig): AxiosPromise<AdminPagedPunishmentResponse>;
3372
+ getPunishments(pageable: Pageable, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPunishmentListItem>;
1537
3373
  /**
1538
3374
  * Search for players by UUID or username, or look up all players associated with an IP address.
1539
3375
  * @summary Search punishment targets
@@ -1563,21 +3399,29 @@ export declare class AdminPunishmentsApi extends BaseAPI {
1563
3399
  * @throws {RequiredError}
1564
3400
  */
1565
3401
  createDraft(adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPunishmentDraftResponse, any, {}>>;
3402
+ /**
3403
+ * 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.
3404
+ * @summary Edit a punishment
3405
+ * @param {number} id Punishment id
3406
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3407
+ * @param {*} [options] Override http request option.
3408
+ * @throws {RequiredError}
3409
+ */
3410
+ editPunishment(id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1566
3411
  /**
1567
3412
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1568
3413
  * @summary List punishments
1569
- * @param {number} page Page number (1-indexed)
1570
- * @param {number} limit Page size
1571
- * @param {string | null} [uuid] Filter by player UUID
1572
- * @param {string | null} [username] Filter by player username (case-insensitive substring match)
1573
- * @param {string | null} [ipAddress] Filter by IP address
1574
- * @param {Array<PunishmentType> | null} [type] Filter by punishment type. Repeatable.
1575
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (ms)
1576
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (ms)
3414
+ * @param {Pageable} pageable
3415
+ * @param {string | null} [uuid]
3416
+ * @param {string | null} [username]
3417
+ * @param {string | null} [ipAddress]
3418
+ * @param {Array<PunishmentType> | null} [type]
3419
+ * @param {number | null} [issuedAfter]
3420
+ * @param {number | null} [issuedBefore]
1577
3421
  * @param {*} [options] Override http request option.
1578
3422
  * @throws {RequiredError}
1579
3423
  */
1580
- getPunishments(page: number, limit: number, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPagedPunishmentResponse, any, {}>>;
3424
+ getPunishments(pageable: Pageable, uuid?: string | null, username?: string | null, ipAddress?: string | null, type?: Array<PunishmentType> | null, issuedAfter?: number | null, issuedBefore?: number | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPunishmentListItem, any, {}>>;
1581
3425
  /**
1582
3426
  * Search for players by UUID or username, or look up all players associated with an IP address.
1583
3427
  * @summary Search punishment targets
@@ -1587,6 +3431,102 @@ export declare class AdminPunishmentsApi extends BaseAPI {
1587
3431
  */
1588
3432
  searchTargets(q: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPunishmentSearchResponse, any, {}>>;
1589
3433
  }
3434
+ /**
3435
+ * AdminReportsApi - axios parameter creator
3436
+ */
3437
+ export declare const AdminReportsApiAxiosParamCreator: (configuration?: Configuration) => {
3438
+ /**
3439
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3440
+ * @summary List reports
3441
+ * @param {Pageable} pageable
3442
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3443
+ * @param {boolean} [openOnly]
3444
+ * @param {*} [options] Override http request option.
3445
+ * @throws {RequiredError}
3446
+ */
3447
+ list1: (pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3448
+ /**
3449
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3450
+ * @summary Resolve a report
3451
+ * @param {number} id Report id
3452
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3453
+ * @param {*} [options] Override http request option.
3454
+ * @throws {RequiredError}
3455
+ */
3456
+ resolve: (id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3457
+ };
3458
+ /**
3459
+ * AdminReportsApi - functional programming interface
3460
+ */
3461
+ export declare const AdminReportsApiFp: (configuration?: Configuration) => {
3462
+ /**
3463
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3464
+ * @summary List reports
3465
+ * @param {Pageable} pageable
3466
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3467
+ * @param {boolean} [openOnly]
3468
+ * @param {*} [options] Override http request option.
3469
+ * @throws {RequiredError}
3470
+ */
3471
+ list1(pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerReport>>;
3472
+ /**
3473
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3474
+ * @summary Resolve a report
3475
+ * @param {number} id Report id
3476
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3477
+ * @param {*} [options] Override http request option.
3478
+ * @throws {RequiredError}
3479
+ */
3480
+ resolve(id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
3481
+ };
3482
+ /**
3483
+ * AdminReportsApi - factory interface
3484
+ */
3485
+ export declare const AdminReportsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
3486
+ /**
3487
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3488
+ * @summary List reports
3489
+ * @param {Pageable} pageable
3490
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3491
+ * @param {boolean} [openOnly]
3492
+ * @param {*} [options] Override http request option.
3493
+ * @throws {RequiredError}
3494
+ */
3495
+ list1(pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerReport>;
3496
+ /**
3497
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3498
+ * @summary Resolve a report
3499
+ * @param {number} id Report id
3500
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3501
+ * @param {*} [options] Override http request option.
3502
+ * @throws {RequiredError}
3503
+ */
3504
+ resolve(id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3505
+ };
3506
+ /**
3507
+ * AdminReportsApi - object-oriented interface
3508
+ */
3509
+ export declare class AdminReportsApi extends BaseAPI {
3510
+ /**
3511
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3512
+ * @summary List reports
3513
+ * @param {Pageable} pageable
3514
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3515
+ * @param {boolean} [openOnly]
3516
+ * @param {*} [options] Override http request option.
3517
+ * @throws {RequiredError}
3518
+ */
3519
+ list1(pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerReport, any, {}>>;
3520
+ /**
3521
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3522
+ * @summary Resolve a report
3523
+ * @param {number} id Report id
3524
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3525
+ * @param {*} [options] Override http request option.
3526
+ * @throws {RequiredError}
3527
+ */
3528
+ resolve(id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
3529
+ }
1590
3530
  /**
1591
3531
  * AuthenticationApi - axios parameter creator
1592
3532
  */
@@ -1746,13 +3686,13 @@ export declare const ChatApiAxiosParamCreator: (configuration?: Configuration) =
1746
3686
  /**
1747
3687
  * 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.
1748
3688
  * @summary Get chat history
1749
- * @param {number} limit Maximum number of messages to return (1–100)
1750
3689
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1751
3690
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
3691
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1752
3692
  * @param {*} [options] Override http request option.
1753
3693
  * @throws {RequiredError}
1754
3694
  */
1755
- history: (limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3695
+ history: (sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1756
3696
  /**
1757
3697
  * 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.
1758
3698
  * @summary Ingest a chat message
@@ -1769,13 +3709,13 @@ export declare const ChatApiFp: (configuration?: Configuration) => {
1769
3709
  /**
1770
3710
  * 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.
1771
3711
  * @summary Get chat history
1772
- * @param {number} limit Maximum number of messages to return (1–100)
1773
3712
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1774
3713
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
3714
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1775
3715
  * @param {*} [options] Override http request option.
1776
3716
  * @throws {RequiredError}
1777
3717
  */
1778
- history(limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ChatMessageDTO>>>;
3718
+ history(sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ChatMessageDTO>>>;
1779
3719
  /**
1780
3720
  * 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.
1781
3721
  * @summary Ingest a chat message
@@ -1792,13 +3732,13 @@ export declare const ChatApiFactory: (configuration?: Configuration, basePath?:
1792
3732
  /**
1793
3733
  * 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.
1794
3734
  * @summary Get chat history
1795
- * @param {number} limit Maximum number of messages to return (1–100)
1796
3735
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1797
3736
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
3737
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1798
3738
  * @param {*} [options] Override http request option.
1799
3739
  * @throws {RequiredError}
1800
3740
  */
1801
- history(limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<ChatMessageDTO>>;
3741
+ history(sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<ChatMessageDTO>>;
1802
3742
  /**
1803
3743
  * 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.
1804
3744
  * @summary Ingest a chat message
@@ -1815,13 +3755,13 @@ export declare class ChatApi extends BaseAPI {
1815
3755
  /**
1816
3756
  * 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.
1817
3757
  * @summary Get chat history
1818
- * @param {number} limit Maximum number of messages to return (1–100)
1819
3758
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1820
3759
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
3760
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1821
3761
  * @param {*} [options] Override http request option.
1822
3762
  * @throws {RequiredError}
1823
3763
  */
1824
- history(limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ChatMessageDTO[], any, {}>>;
3764
+ history(sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ChatMessageDTO[], any, {}>>;
1825
3765
  /**
1826
3766
  * 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.
1827
3767
  * @summary Ingest a chat message
@@ -1836,60 +3776,64 @@ export declare class ChatApi extends BaseAPI {
1836
3776
  */
1837
3777
  export declare const ConnectionApiAxiosParamCreator: (configuration?: Configuration) => {
1838
3778
  /**
1839
- * 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.
1840
- * @summary Check Connection and Detect VPN/Proxy
3779
+ * **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.
3780
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1841
3781
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
1842
- * @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
3782
+ * @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
1843
3783
  * @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.
1844
3784
  * @param {*} [options] Override http request option.
3785
+ * @deprecated
1845
3786
  * @throws {RequiredError}
1846
3787
  */
1847
- getConnectionDetails: (ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3788
+ getConnectionDetails: (ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1848
3789
  };
1849
3790
  /**
1850
3791
  * ConnectionApi - functional programming interface
1851
3792
  */
1852
3793
  export declare const ConnectionApiFp: (configuration?: Configuration) => {
1853
3794
  /**
1854
- * 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.
1855
- * @summary Check Connection and Detect VPN/Proxy
3795
+ * **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.
3796
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1856
3797
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
1857
- * @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
3798
+ * @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
1858
3799
  * @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.
1859
3800
  * @param {*} [options] Override http request option.
3801
+ * @deprecated
1860
3802
  * @throws {RequiredError}
1861
3803
  */
1862
- getConnectionDetails(ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ConnectionGetConnectionDetailsResponse>>;
3804
+ getConnectionDetails(ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ConnectionGetConnectionDetailsResponse>>;
1863
3805
  };
1864
3806
  /**
1865
3807
  * ConnectionApi - factory interface
1866
3808
  */
1867
3809
  export declare const ConnectionApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1868
3810
  /**
1869
- * 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.
1870
- * @summary Check Connection and Detect VPN/Proxy
3811
+ * **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.
3812
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1871
3813
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
1872
- * @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
3814
+ * @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
1873
3815
  * @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.
1874
3816
  * @param {*} [options] Override http request option.
3817
+ * @deprecated
1875
3818
  * @throws {RequiredError}
1876
3819
  */
1877
- getConnectionDetails(ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<ConnectionGetConnectionDetailsResponse>;
3820
+ getConnectionDetails(ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<ConnectionGetConnectionDetailsResponse>;
1878
3821
  };
1879
3822
  /**
1880
3823
  * ConnectionApi - object-oriented interface
1881
3824
  */
1882
3825
  export declare class ConnectionApi extends BaseAPI {
1883
3826
  /**
1884
- * 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.
1885
- * @summary Check Connection and Detect VPN/Proxy
3827
+ * **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.
3828
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1886
3829
  * @param {string} ip IPv4 address to analyze for VPN/proxy detection and geolocation
1887
- * @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
3830
+ * @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
1888
3831
  * @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.
1889
3832
  * @param {*} [options] Override http request option.
3833
+ * @deprecated
1890
3834
  * @throws {RequiredError}
1891
3835
  */
1892
- getConnectionDetails(ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ConnectionGetConnectionDetailsResponse, any, {}>>;
3836
+ getConnectionDetails(ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ConnectionGetConnectionDetailsResponse, any, {}>>;
1893
3837
  }
1894
3838
  /**
1895
3839
  * PlayerApi - axios parameter creator
@@ -1975,6 +3919,90 @@ export declare class PlayerApi extends BaseAPI {
1975
3919
  */
1976
3920
  getUsernames(uuids: Array<string>, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1977
3921
  }
3922
+ /**
3923
+ * PlayerSessionsApi - axios parameter creator
3924
+ */
3925
+ export declare const PlayerSessionsApiAxiosParamCreator: (configuration?: Configuration) => {
3926
+ /**
3927
+ * 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.
3928
+ * @summary Close the active player session
3929
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
3930
+ * @param {*} [options] Override http request option.
3931
+ * @throws {RequiredError}
3932
+ */
3933
+ end: (playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3934
+ /**
3935
+ * 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.
3936
+ * @summary Player join — unified authorization + session-open
3937
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
3938
+ * @param {*} [options] Override http request option.
3939
+ * @throws {RequiredError}
3940
+ */
3941
+ start: (playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3942
+ };
3943
+ /**
3944
+ * PlayerSessionsApi - functional programming interface
3945
+ */
3946
+ export declare const PlayerSessionsApiFp: (configuration?: Configuration) => {
3947
+ /**
3948
+ * 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.
3949
+ * @summary Close the active player session
3950
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
3951
+ * @param {*} [options] Override http request option.
3952
+ * @throws {RequiredError}
3953
+ */
3954
+ end(playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
3955
+ /**
3956
+ * 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.
3957
+ * @summary Player join — unified authorization + session-open
3958
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
3959
+ * @param {*} [options] Override http request option.
3960
+ * @throws {RequiredError}
3961
+ */
3962
+ start(playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PlayerSessionStartResponse>>;
3963
+ };
3964
+ /**
3965
+ * PlayerSessionsApi - factory interface
3966
+ */
3967
+ export declare const PlayerSessionsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
3968
+ /**
3969
+ * 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.
3970
+ * @summary Close the active player session
3971
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
3972
+ * @param {*} [options] Override http request option.
3973
+ * @throws {RequiredError}
3974
+ */
3975
+ end(playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3976
+ /**
3977
+ * 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.
3978
+ * @summary Player join — unified authorization + session-open
3979
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
3980
+ * @param {*} [options] Override http request option.
3981
+ * @throws {RequiredError}
3982
+ */
3983
+ start(playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig): AxiosPromise<PlayerSessionStartResponse>;
3984
+ };
3985
+ /**
3986
+ * PlayerSessionsApi - object-oriented interface
3987
+ */
3988
+ export declare class PlayerSessionsApi extends BaseAPI {
3989
+ /**
3990
+ * 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.
3991
+ * @summary Close the active player session
3992
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
3993
+ * @param {*} [options] Override http request option.
3994
+ * @throws {RequiredError}
3995
+ */
3996
+ end(playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
3997
+ /**
3998
+ * 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.
3999
+ * @summary Player join — unified authorization + session-open
4000
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4001
+ * @param {*} [options] Override http request option.
4002
+ * @throws {RequiredError}
4003
+ */
4004
+ start(playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PlayerSessionStartResponse, any, {}>>;
4005
+ }
1978
4006
  /**
1979
4007
  * PunishmentApi - axios parameter creator
1980
4008
  */
@@ -2008,19 +4036,18 @@ export declare const PunishmentApiAxiosParamCreator: (configuration?: Configurat
2008
4036
  /**
2009
4037
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2010
4038
  * @summary List recent punishments
2011
- * @param {number} limit Maximum number of records to return
2012
- * @param {number} page Page number for pagination
2013
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2014
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2015
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2016
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2017
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2018
- * @param {string | null} [uuid] Filter by player UUID
2019
- * @param {string | null} [ipAddress] Filter by IP address
4039
+ * @param {Pageable} pageable
4040
+ * @param {number | null} [issuedAfter]
4041
+ * @param {number | null} [issuedBefore]
4042
+ * @param {number | null} [expiresAfter]
4043
+ * @param {number | null} [expiresBefore]
4044
+ * @param {Array<PunishmentType> | null} [type]
4045
+ * @param {string | null} [uuid]
4046
+ * @param {string | null} [ipAddress]
2020
4047
  * @param {*} [options] Override http request option.
2021
4048
  * @throws {RequiredError}
2022
4049
  */
2023
- getRecentPunishments: (limit: number, page: number, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
4050
+ getRecentPunishments: (pageable: Pageable, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2024
4051
  };
2025
4052
  /**
2026
4053
  * PunishmentApi - functional programming interface
@@ -2055,19 +4082,18 @@ export declare const PunishmentApiFp: (configuration?: Configuration) => {
2055
4082
  /**
2056
4083
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2057
4084
  * @summary List recent punishments
2058
- * @param {number} limit Maximum number of records to return
2059
- * @param {number} page Page number for pagination
2060
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2061
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2062
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2063
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2064
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2065
- * @param {string | null} [uuid] Filter by player UUID
2066
- * @param {string | null} [ipAddress] Filter by IP address
4085
+ * @param {Pageable} pageable
4086
+ * @param {number | null} [issuedAfter]
4087
+ * @param {number | null} [issuedBefore]
4088
+ * @param {number | null} [expiresAfter]
4089
+ * @param {number | null} [expiresBefore]
4090
+ * @param {Array<PunishmentType> | null} [type]
4091
+ * @param {string | null} [uuid]
4092
+ * @param {string | null} [ipAddress]
2067
4093
  * @param {*} [options] Override http request option.
2068
4094
  * @throws {RequiredError}
2069
4095
  */
2070
- getRecentPunishments(limit: number, page: number, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<PunishmentGetPunishmentResponse>>>;
4096
+ getRecentPunishments(pageable: Pageable, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PagePunishmentGetPunishmentResponse>>;
2071
4097
  };
2072
4098
  /**
2073
4099
  * PunishmentApi - factory interface
@@ -2102,19 +4128,18 @@ export declare const PunishmentApiFactory: (configuration?: Configuration, baseP
2102
4128
  /**
2103
4129
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2104
4130
  * @summary List recent punishments
2105
- * @param {number} limit Maximum number of records to return
2106
- * @param {number} page Page number for pagination
2107
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2108
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2109
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2110
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2111
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2112
- * @param {string | null} [uuid] Filter by player UUID
2113
- * @param {string | null} [ipAddress] Filter by IP address
4131
+ * @param {Pageable} pageable
4132
+ * @param {number | null} [issuedAfter]
4133
+ * @param {number | null} [issuedBefore]
4134
+ * @param {number | null} [expiresAfter]
4135
+ * @param {number | null} [expiresBefore]
4136
+ * @param {Array<PunishmentType> | null} [type]
4137
+ * @param {string | null} [uuid]
4138
+ * @param {string | null} [ipAddress]
2114
4139
  * @param {*} [options] Override http request option.
2115
4140
  * @throws {RequiredError}
2116
4141
  */
2117
- getRecentPunishments(limit: number, page: number, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<PunishmentGetPunishmentResponse>>;
4142
+ getRecentPunishments(pageable: Pageable, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<PagePunishmentGetPunishmentResponse>;
2118
4143
  };
2119
4144
  /**
2120
4145
  * PunishmentApi - object-oriented interface
@@ -2149,19 +4174,70 @@ export declare class PunishmentApi extends BaseAPI {
2149
4174
  /**
2150
4175
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2151
4176
  * @summary List recent punishments
2152
- * @param {number} limit Maximum number of records to return
2153
- * @param {number} page Page number for pagination
2154
- * @param {number | null} [issuedAfter] Filter punishments issued after this epoch timestamp (milliseconds)
2155
- * @param {number | null} [issuedBefore] Filter punishments issued before this epoch timestamp (milliseconds)
2156
- * @param {number | null} [expiresAfter] Filter punishments expiring after this epoch timestamp (milliseconds)
2157
- * @param {number | null} [expiresBefore] Filter punishments expiring before this epoch timestamp (milliseconds)
2158
- * @param {Array<PunishmentType> | null} [type] Filter by punishment types
2159
- * @param {string | null} [uuid] Filter by player UUID
2160
- * @param {string | null} [ipAddress] Filter by IP address
4177
+ * @param {Pageable} pageable
4178
+ * @param {number | null} [issuedAfter]
4179
+ * @param {number | null} [issuedBefore]
4180
+ * @param {number | null} [expiresAfter]
4181
+ * @param {number | null} [expiresBefore]
4182
+ * @param {Array<PunishmentType> | null} [type]
4183
+ * @param {string | null} [uuid]
4184
+ * @param {string | null} [ipAddress]
4185
+ * @param {*} [options] Override http request option.
4186
+ * @throws {RequiredError}
4187
+ */
4188
+ getRecentPunishments(pageable: Pageable, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PagePunishmentGetPunishmentResponse, any, {}>>;
4189
+ }
4190
+ /**
4191
+ * ReportApi - axios parameter creator
4192
+ */
4193
+ export declare const ReportApiAxiosParamCreator: (configuration?: Configuration) => {
4194
+ /**
4195
+ * 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.
4196
+ * @summary Submit a peer report
4197
+ * @param {CreateReportRequest} createReportRequest
4198
+ * @param {*} [options] Override http request option.
4199
+ * @throws {RequiredError}
4200
+ */
4201
+ submit: (createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
4202
+ };
4203
+ /**
4204
+ * ReportApi - functional programming interface
4205
+ */
4206
+ export declare const ReportApiFp: (configuration?: Configuration) => {
4207
+ /**
4208
+ * 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.
4209
+ * @summary Submit a peer report
4210
+ * @param {CreateReportRequest} createReportRequest
4211
+ * @param {*} [options] Override http request option.
4212
+ * @throws {RequiredError}
4213
+ */
4214
+ submit(createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateReportResponse>>;
4215
+ };
4216
+ /**
4217
+ * ReportApi - factory interface
4218
+ */
4219
+ export declare const ReportApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
4220
+ /**
4221
+ * 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.
4222
+ * @summary Submit a peer report
4223
+ * @param {CreateReportRequest} createReportRequest
4224
+ * @param {*} [options] Override http request option.
4225
+ * @throws {RequiredError}
4226
+ */
4227
+ submit(createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig): AxiosPromise<CreateReportResponse>;
4228
+ };
4229
+ /**
4230
+ * ReportApi - object-oriented interface
4231
+ */
4232
+ export declare class ReportApi extends BaseAPI {
4233
+ /**
4234
+ * 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.
4235
+ * @summary Submit a peer report
4236
+ * @param {CreateReportRequest} createReportRequest
2161
4237
  * @param {*} [options] Override http request option.
2162
4238
  * @throws {RequiredError}
2163
4239
  */
2164
- getRecentPunishments(limit: number, page: number, issuedAfter?: number | null, issuedBefore?: number | null, expiresAfter?: number | null, expiresBefore?: number | null, type?: Array<PunishmentType> | null, uuid?: string | null, ipAddress?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PunishmentGetPunishmentResponse[], any, {}>>;
4240
+ submit(createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateReportResponse, any, {}>>;
2165
4241
  }
2166
4242
  /**
2167
4243
  * ServerSessionsApi - axios parameter creator