@rebornteam/reborn-api 3.2.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/.openapi-generator/FILES +70 -4
  2. package/README.md +103 -8
  3. package/api.ts +4362 -455
  4. package/base.ts +1 -1
  5. package/common.ts +1 -1
  6. package/configuration.ts +1 -1
  7. package/dist/api.d.ts +2735 -394
  8. package/dist/api.js +3171 -444
  9. package/dist/base.d.ts +1 -1
  10. package/dist/base.js +1 -1
  11. package/dist/common.d.ts +1 -1
  12. package/dist/common.js +1 -1
  13. package/dist/configuration.d.ts +1 -1
  14. package/dist/configuration.js +1 -1
  15. package/dist/esm/api.d.ts +2735 -394
  16. package/dist/esm/api.js +3146 -439
  17. package/dist/esm/base.d.ts +1 -1
  18. package/dist/esm/base.js +1 -1
  19. package/dist/esm/common.d.ts +1 -1
  20. package/dist/esm/common.js +1 -1
  21. package/dist/esm/configuration.d.ts +1 -1
  22. package/dist/esm/configuration.js +1 -1
  23. package/dist/esm/index.d.ts +1 -1
  24. package/dist/esm/index.js +1 -1
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +1 -1
  27. package/docs/AdminAltAccount.md +27 -0
  28. package/docs/AdminAltExemption.md +31 -0
  29. package/docs/AdminAltGraph.md +27 -0
  30. package/docs/AdminAltGraphEdge.md +25 -0
  31. package/docs/AdminAltGraphNode.md +29 -0
  32. package/docs/AdminApplyPunishmentResult.md +4 -4
  33. package/docs/AdminAsyncJob.md +49 -0
  34. package/docs/AdminAsyncJobArtifactMeta.md +23 -0
  35. package/docs/AdminAsyncJobStartResponse.md +21 -0
  36. package/docs/AdminAuditLogApi.md +141 -0
  37. package/docs/AdminAuditLogEntry.md +33 -0
  38. package/docs/AdminBulkRevokeRequest.md +25 -0
  39. package/docs/AdminBulkRevokeResponse.md +21 -0
  40. package/docs/AdminConnectionCheckResult.md +4 -0
  41. package/docs/AdminConnectionsApi.md +154 -39
  42. package/docs/AdminCreateAltExemptionRequest.md +23 -0
  43. package/docs/AdminCreatePlayerNoteRequest.md +21 -0
  44. package/docs/AdminDashboardConnectionResponse.md +4 -2
  45. package/docs/AdminJobsApi.md +230 -0
  46. package/docs/AdminPlayerDetailResponse.md +4 -4
  47. package/docs/AdminPlayerNote.md +31 -0
  48. package/docs/AdminPlayerPunishmentResponse.md +51 -0
  49. package/docs/AdminPlayerReport.md +39 -0
  50. package/docs/AdminPlayerSession.md +31 -0
  51. package/docs/AdminPlayerSessionStats.md +29 -0
  52. package/docs/AdminPlayerSummary.md +2 -4
  53. package/docs/AdminPlayersApi.md +1043 -19
  54. package/docs/AdminPunishmentEvaluation.md +4 -8
  55. package/docs/AdminPunishmentTargets.md +23 -0
  56. package/docs/AdminPunishmentsApi.md +179 -21
  57. package/docs/AdminReportTarget.md +23 -0
  58. package/docs/AdminReportsApi.md +123 -0
  59. package/docs/AdminResolveReportRequest.md +21 -0
  60. package/docs/AdminSetAggressiveModeImmunityRequest.md +21 -0
  61. package/docs/AdminTrustFactorBreakdown.md +61 -0
  62. package/docs/AdminTrustFactorHistoryEntry.md +23 -0
  63. package/docs/AdminTrustFactorImpact.md +23 -0
  64. package/docs/AdminUpdatePunishmentRequest.md +35 -0
  65. package/docs/ChatApi.md +4 -4
  66. package/docs/ConnectionApi.md +4 -4
  67. package/docs/ConnectionGetConnectionDetailsResponse.md +5 -1
  68. package/docs/ConnectionResult.md +1 -1
  69. package/docs/CreateReportRequest.md +27 -0
  70. package/docs/CreateReportResponse.md +23 -0
  71. package/docs/CursoredPageAdminAuditLogEntry.md +38 -0
  72. package/docs/CursoredPageable.md +30 -0
  73. package/docs/JobStatus.md +17 -0
  74. package/docs/PageAdminAltAccount.md +36 -0
  75. package/docs/PageAdminAltExemption.md +36 -0
  76. package/docs/PageAdminAsyncJob.md +36 -0
  77. package/docs/PageAdminAuditLogEntry.md +36 -0
  78. package/docs/PageAdminDashboardConnectionResponse.md +36 -0
  79. package/docs/PageAdminPlayerNote.md +36 -0
  80. package/docs/PageAdminPlayerPunishmentResponse.md +36 -0
  81. package/docs/PageAdminPlayerReport.md +36 -0
  82. package/docs/PageAdminPlayerSession.md +36 -0
  83. package/docs/PageAdminPlayerSummary.md +36 -0
  84. package/docs/PageAdminPunishmentListItem.md +36 -0
  85. package/docs/PagePunishmentGetPunishmentResponse.md +36 -0
  86. package/docs/Pageable.md +28 -0
  87. package/docs/PageableMode.md +12 -0
  88. package/docs/PlayerGetPlayerInformation.md +5 -3
  89. package/docs/PlayerSessionEndRequest.md +23 -0
  90. package/docs/PlayerSessionStartRequest.md +27 -0
  91. package/docs/PlayerSessionStartResponse.md +51 -0
  92. package/docs/PlayerSessionsApi.md +116 -0
  93. package/docs/PunishmentApi.md +22 -24
  94. package/docs/PunishmentSource.md +11 -0
  95. package/docs/PunishmentType.md +1 -0
  96. package/docs/ReportApi.md +64 -0
  97. package/docs/ReportCategory.md +17 -0
  98. package/docs/SliceAdminAltAccount.md +32 -0
  99. package/docs/SliceAdminAltExemption.md +32 -0
  100. package/docs/SliceAdminAsyncJob.md +32 -0
  101. package/docs/SliceAdminAuditLogEntry.md +32 -0
  102. package/docs/SliceAdminDashboardConnectionResponse.md +32 -0
  103. package/docs/SliceAdminPlayerNote.md +32 -0
  104. package/docs/SliceAdminPlayerPunishmentResponse.md +32 -0
  105. package/docs/SliceAdminPlayerReport.md +32 -0
  106. package/docs/SliceAdminPlayerSession.md +32 -0
  107. package/docs/SliceAdminPlayerSummary.md +32 -0
  108. package/docs/SliceAdminPunishmentListItem.md +32 -0
  109. package/docs/SlicePunishmentGetPunishmentResponse.md +32 -0
  110. package/docs/Sort.md +20 -0
  111. package/docs/SortOrder.md +26 -0
  112. package/docs/SortOrderDirection.md +10 -0
  113. package/index.ts +1 -1
  114. package/package.json +1 -1
  115. package/docs/AdminBackfillLocationResponse.md +0 -25
  116. package/docs/AdminPagedConnectionResponse.md +0 -29
  117. package/docs/AdminPagedPlayerResponse.md +0 -29
  118. package/docs/AdminPagedPunishmentResponse.md +0 -29
package/dist/api.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.5.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -13,6 +13,119 @@ 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
+ }
66
+ /**
67
+ * Alt-graph rooted at a player, walked out to the requested hop depth.
68
+ */
69
+ export interface AdminAltGraph {
70
+ /**
71
+ * UUID of the focal player. Always appears in nodes at depth=0.
72
+ */
73
+ 'rootUuid': string;
74
+ /**
75
+ * Maximum hop depth walked. Capped server-side at MAX_PROPAGATION_DEPTH.
76
+ */
77
+ 'depth': number;
78
+ /**
79
+ * Every player reachable from the root within {@code depth} hops, including the root at depth=0.
80
+ */
81
+ 'nodes': Array<AdminAltGraphNode>;
82
+ /**
83
+ * Undirected edges between any two players in nodes that share at least one non-promiscuous connection.
84
+ */
85
+ 'edges': Array<AdminAltGraphEdge>;
86
+ }
87
+ /**
88
+ * Undirected edge in an alt-graph traversal.
89
+ */
90
+ export interface AdminAltGraphEdge {
91
+ /**
92
+ * One endpoint of the edge
93
+ */
94
+ 'fromUuid': string;
95
+ /**
96
+ * Other endpoint of the edge. The pair is emitted only once — the SQL ensures fromUuid < toUuid lexicographically.
97
+ */
98
+ 'toUuid': string;
99
+ /**
100
+ * Number of distinct non-promiscuous connections these two players share. Drives edge thickness.
101
+ */
102
+ 'sharedConnectionCount': number;
103
+ }
104
+ /**
105
+ * One player node in an alt-graph traversal.
106
+ */
107
+ export interface AdminAltGraphNode {
108
+ /**
109
+ * Player Minecraft UUID
110
+ */
111
+ 'uuid': string;
112
+ /**
113
+ * Most recently seen username, null if never resolved
114
+ */
115
+ 'username'?: string | null;
116
+ /**
117
+ * Hop count from the focal player (0 = the focal player herself).
118
+ */
119
+ 'depth': number;
120
+ /**
121
+ * Trust factor (0-100). Drives the node colour in the graph.
122
+ */
123
+ 'trustFactor': number;
124
+ /**
125
+ * Whether this player currently has at least one active (non-revoked, non-expired) player_punishment row. Drives a red outline ring on the node.
126
+ */
127
+ 'hasActivePunishment': boolean;
128
+ }
16
129
  /**
17
130
  * Request to apply a punishment to one or more targets
18
131
  */
@@ -72,15 +185,15 @@ export interface AdminApplyPunishmentResult {
72
185
  */
73
186
  'type': PunishmentType;
74
187
  /**
75
- * Severity level applied
188
+ * Severity level applied (1-4)
76
189
  */
77
190
  'severity': number;
78
191
  /**
79
- * Updated punishment score after applying
192
+ * 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
193
  */
81
- 'newScore': number;
194
+ 'newTrustFactor'?: number | null;
82
195
  /**
83
- * Whether the punishment was made permanent
196
+ * Whether the punishment was made permanent. Mirrors the request\'s forcePermanent flag — auto-escalation has been removed.
84
197
  */
85
198
  'isPermanent': boolean;
86
199
  /**
@@ -89,21 +202,150 @@ export interface AdminApplyPunishmentResult {
89
202
  'expiresAt'?: string | null;
90
203
  }
91
204
  /**
92
- * Result of a location backfill run rechecks every connection_check row missing both city and country, repopulating them from the VPN providers.
205
+ * One row of admin_joba long-running admin operation.
206
+ */
207
+ export interface AdminAsyncJob {
208
+ /**
209
+ * Job id
210
+ */
211
+ 'id': string;
212
+ /**
213
+ * Stable identifier of what kind of work this is (e.g. LOCATION_BACKFILL)
214
+ */
215
+ 'jobType': string;
216
+ /**
217
+ * Current lifecycle state.
218
+ */
219
+ 'status': JobStatus;
220
+ /**
221
+ * Number of units processed so far
222
+ */
223
+ 'progressCurrent': number;
224
+ /**
225
+ * Total units, when known up front. Null when total is undetermined.
226
+ */
227
+ 'progressTotal'?: number | null;
228
+ /**
229
+ * Optional human-readable status line (e.g. \"Re-checking IpHub\").
230
+ */
231
+ 'progressMessage'?: string | null;
232
+ /**
233
+ * Error message when status = FAILED. Null otherwise.
234
+ */
235
+ 'errorMessage'?: string | null;
236
+ /**
237
+ * Type-specific JSON result, populated when status = COMPLETED. Schema varies by jobType — consult the docs for each type.
238
+ */
239
+ 'resultPayload'?: object | null;
240
+ /**
241
+ * Admin who submitted the job (Discord username for SSO admins).
242
+ */
243
+ 'startedBy': string;
244
+ /**
245
+ * When the job was submitted (ISO-8601).
246
+ */
247
+ 'startedAt': string;
248
+ /**
249
+ * Timestamp of the most recent progress update. The reaper marks jobs FAILED when this falls behind by 5 min.
250
+ */
251
+ 'lastProgressAt': string;
252
+ /**
253
+ * When the job entered a terminal state. Null while running.
254
+ */
255
+ 'finishedAt'?: string | null;
256
+ /**
257
+ * True if an admin has requested cancellation. The host instance picks this up at its next progress tick.
258
+ */
259
+ 'cancelRequested': boolean;
260
+ /**
261
+ * 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.
262
+ */
263
+ 'hostInstance': string;
264
+ /**
265
+ * Pointer to a CSV artifact emitted by this job, when one exists. Present only after the job marks COMPLETED and the artifact has been persisted. Download the CSV bytes via GET /admin/job/{id}/artifact.csv.
266
+ */
267
+ 'artifact'?: AdminAsyncJobArtifactMeta | null;
268
+ }
269
+ /**
270
+ * Pointer to a job\'s CSV artifact. Present only when the job emitted one.
271
+ */
272
+ export interface AdminAsyncJobArtifactMeta {
273
+ /**
274
+ * Number of data rows in the artifact (excluding the header).
275
+ */
276
+ 'rowCount': number;
277
+ /**
278
+ * When the artifact was finalized (typically a few seconds after the job marked COMPLETED).
279
+ */
280
+ 'createdAt': string;
281
+ }
282
+ /**
283
+ * 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.
284
+ */
285
+ export interface AdminAsyncJobStartResponse {
286
+ /**
287
+ * Server-assigned job id
288
+ */
289
+ 'jobId': string;
290
+ }
291
+ /**
292
+ * 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).
293
+ */
294
+ export interface AdminAuditLogEntry {
295
+ /**
296
+ * Sequential id (ordering matches createdAt)
297
+ */
298
+ 'id': number;
299
+ /**
300
+ * Discord username of the moderator who performed the action
301
+ */
302
+ 'actorUsername': string;
303
+ /**
304
+ * 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.
305
+ */
306
+ 'action': string;
307
+ /**
308
+ * Type of entity acted upon (PLAYER, PUNISHMENT, PLAYER_PUNISHMENT, etc.)
309
+ */
310
+ 'targetType': string;
311
+ /**
312
+ * Identifier of the target (stringified id or UUID, depending on targetType)
313
+ */
314
+ 'targetId': string;
315
+ /**
316
+ * Action-specific JSON payload. Shape depends on the action.
317
+ */
318
+ 'payload'?: string | null;
319
+ /**
320
+ * When the action occurred (ISO-8601)
321
+ */
322
+ 'createdAt': string;
323
+ }
324
+ /**
325
+ * 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
326
  */
94
- export interface AdminBackfillLocationResponse {
327
+ export interface AdminBulkRevokeRequest {
328
+ /**
329
+ * Revoke links whose source_player_id matches. Mutually exclusive with sourceConnectionId.
330
+ */
331
+ 'sourcePlayerId'?: number | null;
95
332
  /**
96
- * Total checks attempted
333
+ * Revoke links whose source_connection_id matches. Mutually exclusive with sourcePlayerId.
97
334
  */
98
- 'processed': number;
335
+ 'sourceConnectionId'?: number | null;
99
336
  /**
100
- * Checks where the provider returned at least a city or country
337
+ * Optional reason for the audit log
101
338
  */
102
- 'succeeded': number;
339
+ 'reason'?: string | null;
340
+ }
341
+ /**
342
+ * Result of a bulk-revoke operation
343
+ */
344
+ export interface AdminBulkRevokeResponse {
103
345
  /**
104
- * Checks that errored or returned no location data
346
+ * Number of player_punishment rows soft-deleted by the operation
105
347
  */
106
- 'failed': number;
348
+ 'revoked': number;
107
349
  }
108
350
  /**
109
351
  * Client credential response
@@ -187,6 +429,36 @@ export interface AdminConnectionCheckResult {
187
429
  * Country code reported by this service, if available
188
430
  */
189
431
  'country'?: string | null;
432
+ /**
433
+ * Latitude reported by this service, if available
434
+ */
435
+ 'latitude'?: number | null;
436
+ /**
437
+ * Longitude reported by this service, if available
438
+ */
439
+ 'longitude'?: number | null;
440
+ }
441
+ /**
442
+ * 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.
443
+ */
444
+ export interface AdminCreateAltExemptionRequest {
445
+ /**
446
+ * UUID of the player to mark as a known-legitimate associate
447
+ */
448
+ 'altPlayerUuid': string;
449
+ /**
450
+ * Optional human-readable reason (e.g. \'roommates, verified via support ticket #1234\')
451
+ */
452
+ 'reason'?: string | null;
453
+ }
454
+ /**
455
+ * Create a staff note on a player
456
+ */
457
+ export interface AdminCreatePlayerNoteRequest {
458
+ /**
459
+ * Note body (1–4000 chars)
460
+ */
461
+ 'body': string;
190
462
  }
191
463
  /**
192
464
  * Request to evaluate the impact of a punishment across one or more targets before applying
@@ -220,7 +492,14 @@ export interface AdminCreatePunishmentDraftRequest {
220
492
  export interface AdminDashboardConnectionResponse {
221
493
  'id': number;
222
494
  'ipAddress': string;
223
- 'location'?: string | null;
495
+ /**
496
+ * City reported by the first VPN provider that returned one for this IP.
497
+ */
498
+ 'city'?: string | null;
499
+ /**
500
+ * Country code (ISO 3166-1 alpha-2 or alpha-3 depending on provider) from the first provider that returned one.
501
+ */
502
+ 'country'?: string | null;
224
503
  'isVpn': boolean;
225
504
  'isBypassed': boolean;
226
505
  'bypassExpiresAt'?: string | null;
@@ -252,120 +531,188 @@ export interface AdminIpSearchResult {
252
531
  'players': Array<AdminPlayerSearchResult>;
253
532
  }
254
533
  /**
255
- * Paginated connection list response
534
+ * Full player detail including punishment history and all known usernames
256
535
  */
257
- export interface AdminPagedConnectionResponse {
536
+ export interface AdminPlayerDetailResponse {
258
537
  /**
259
- * Connections on the current page
538
+ * Internal player ID
260
539
  */
261
- 'data': Array<AdminDashboardConnectionResponse>;
540
+ 'id': number;
262
541
  /**
263
- * Total number of connections matching the filters
542
+ * Player Minecraft UUID
264
543
  */
265
- 'total': number;
544
+ 'uuid': string;
266
545
  /**
267
- * Current page (1-indexed)
546
+ * Most recently seen username
268
547
  */
269
- 'page': number;
548
+ 'username'?: string | null;
270
549
  /**
271
- * Page size
550
+ * Whether this player still has first-join status
272
551
  */
273
- 'limit': number;
552
+ 'firstJoin': boolean;
274
553
  /**
275
- * Total number of pages
554
+ * Timestamp of first connection (ISO-8601)
276
555
  */
277
- 'totalPages': number;
556
+ 'firstLogin': string;
557
+ /**
558
+ * Timestamp of most recent connection (ISO-8601)
559
+ */
560
+ 'lastUsedAt'?: string | null;
561
+ /**
562
+ * Trust factor (0-100, higher = more trusted). Informational only — does NOT auto-escalate punishments. See compute_trust_factor in the database for the formula.
563
+ */
564
+ 'trustFactor': number;
565
+ /**
566
+ * All usernames this player has used, newest first
567
+ */
568
+ 'usernameHistory': Array<AdminUsernameHistoryEntry>;
569
+ /**
570
+ * True when this player is exempt from aggressive-mode propagation. Toggling on also bulk-revokes existing propagated links. Defaults to false.
571
+ */
572
+ 'aggressiveModeImmunity': boolean;
278
573
  }
279
574
  /**
280
- * Paginated player list response
575
+ * Free-form staff note about a player
281
576
  */
282
- export interface AdminPagedPlayerResponse {
577
+ export interface AdminPlayerNote {
578
+ /**
579
+ * Note id
580
+ */
581
+ 'id': number;
283
582
  /**
284
- * Players on the current page
583
+ * Username (Discord username for SSO admins) of the staff member who wrote the note
285
584
  */
286
- 'data': Array<AdminPlayerSummary>;
585
+ 'author': string;
287
586
  /**
288
- * Total number of players matching the search filter
587
+ * The note body (1–4000 characters)
289
588
  */
290
- 'total': number;
589
+ 'body': string;
291
590
  /**
292
- * Current page (1-indexed)
591
+ * When the note was created (ISO-8601)
293
592
  */
294
- 'page': number;
593
+ 'createdAt': string;
295
594
  /**
296
- * Page size
595
+ * When the note was soft-deleted. Null on active notes. Deleted notes are still returned by default; the UI styles them as struck-through.
297
596
  */
298
- 'limit': number;
597
+ 'deletedAt'?: string | null;
299
598
  /**
300
- * Total number of pages
599
+ * Staff member who soft-deleted the note. Null on active notes.
301
600
  */
302
- 'totalPages': number;
601
+ 'deletedBy'?: string | null;
303
602
  }
304
603
  /**
305
- * Paginated punishment list response
604
+ * 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
605
  */
307
- export interface AdminPagedPunishmentResponse {
606
+ export interface AdminPlayerPunishmentResponse {
308
607
  /**
309
- * Punishments on the current page
608
+ * player_punishment row id (the link id, NOT the punishment id)
310
609
  */
311
- 'data': Array<AdminPunishmentListItem>;
610
+ 'id': number;
312
611
  /**
313
- * Total number of punishments matching the filters
612
+ * Source punishment id this link points to
314
613
  */
315
- 'total': number;
614
+ 'punishmentId': number;
316
615
  /**
317
- * Current page (1-indexed)
616
+ * UUID of the player this link is attached to
318
617
  */
319
- 'page': number;
618
+ 'playerUuid': string;
320
619
  /**
321
- * Page size
620
+ * Punishment type
322
621
  */
323
- 'limit': number;
622
+ 'type': PunishmentType;
324
623
  /**
325
- * Total number of pages
624
+ * Severity (1-4)
326
625
  */
327
- 'totalPages': number;
626
+ 'severity': number;
627
+ /**
628
+ * Reason from the source punishment record
629
+ */
630
+ 'reason': string;
631
+ /**
632
+ * Internal admin notes from the source punishment (may be null)
633
+ */
634
+ 'notes'?: string | null;
635
+ /**
636
+ * Original issuer of the punishment
637
+ */
638
+ 'createdBy': string;
639
+ /**
640
+ * When the source punishment was created (ISO-8601)
641
+ */
642
+ 'createdAt': string;
643
+ /**
644
+ * Source punishment expiration (null = permanent)
645
+ */
646
+ 'expiresAt'?: string | null;
647
+ /**
648
+ * 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.
649
+ */
650
+ 'source': PunishmentSource;
651
+ /**
652
+ * 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.
653
+ */
654
+ 'transferNote'?: string | null;
655
+ /**
656
+ * 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.
657
+ */
658
+ 'sourcePlayerId'?: number | null;
659
+ /**
660
+ * 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.
661
+ */
662
+ 'sourceConnectionId'?: number | null;
663
+ /**
664
+ * When this link was revoked by a staff member. Null while active.
665
+ */
666
+ 'revokedAt'?: string | null;
667
+ /**
668
+ * Staff member who revoked this link.
669
+ */
670
+ 'revokedBy'?: string | null;
328
671
  }
329
672
  /**
330
- * Full player detail including punishment history and all known usernames
673
+ * One peer report. May target one or more players.
331
674
  */
332
- export interface AdminPlayerDetailResponse {
675
+ export interface AdminPlayerReport {
333
676
  /**
334
- * Internal player ID
677
+ * Report id
335
678
  */
336
679
  'id': number;
337
680
  /**
338
- * Player Minecraft UUID
681
+ * Reporter\'s UUID
339
682
  */
340
- 'uuid': string;
683
+ 'reporterUuid': string;
341
684
  /**
342
- * Most recently seen username
685
+ * Reporter\'s username at the time of the report (last-known if changed)
343
686
  */
344
- 'username'?: string | null;
687
+ 'reporterUsername'?: string | null;
345
688
  /**
346
- * Whether this player still has first-join status
689
+ * All players this report flags. At least one entry.
347
690
  */
348
- 'firstJoin': boolean;
691
+ 'reportedTargets': Array<AdminReportTarget>;
349
692
  /**
350
- * Timestamp of first connection (ISO-8601)
693
+ * Category
351
694
  */
352
- 'firstLogin': string;
695
+ 'category': string;
353
696
  /**
354
- * Timestamp of most recent connection (ISO-8601)
697
+ * Reason text
355
698
  */
356
- 'lastUsedAt'?: string | null;
699
+ 'reason': string;
357
700
  /**
358
- * Raw punishment score
701
+ * When created (ISO-8601)
359
702
  */
360
- 'punishmentPointsRaw': number;
703
+ 'createdAt': string;
361
704
  /**
362
- * Punishment score as a percentage
705
+ * When resolved by staff. Null = open.
363
706
  */
364
- 'punishmentPointsPercent': number;
707
+ 'resolvedAt'?: string | null;
365
708
  /**
366
- * All usernames this player has used, newest first
709
+ * Staff member who resolved it
367
710
  */
368
- 'usernameHistory': Array<AdminUsernameHistoryEntry>;
711
+ 'resolvedBy'?: string | null;
712
+ /**
713
+ * Staff\'s resolution note
714
+ */
715
+ 'resolutionNote'?: string | null;
369
716
  }
370
717
  /**
371
718
  * Lightweight player reference used in search results and punishment evaluations
@@ -381,21 +728,75 @@ export interface AdminPlayerSearchResult {
381
728
  'username'?: string | null;
382
729
  }
383
730
  /**
384
- * Summary of a player record, used in list views
731
+ * 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.
385
732
  */
386
- export interface AdminPlayerSummary {
733
+ export interface AdminPlayerSession {
387
734
  /**
388
- * Internal player ID
735
+ * Session id (UUID)
389
736
  */
390
- 'id': number;
737
+ 'id': string;
391
738
  /**
392
739
  * Player Minecraft UUID
393
740
  */
394
- 'uuid': string;
741
+ 'playerUuid': string;
395
742
  /**
396
- * Most recently seen username, null if never recorded
743
+ * Game server session id this session is associated with. Nullable when the server record has been deleted.
397
744
  */
398
- 'username'?: string | null;
745
+ 'serverSessionId'?: string | null;
746
+ /**
747
+ * When the player joined (ISO-8601)
748
+ */
749
+ 'startedAt': string;
750
+ /**
751
+ * When the player disconnected (ISO-8601). Null while the session is still active.
752
+ */
753
+ 'endedAt'?: string | null;
754
+ /**
755
+ * Closed session duration in seconds (ended_at − started_at). Null while active.
756
+ */
757
+ 'durationSeconds'?: number | null;
758
+ }
759
+ /**
760
+ * Aggregate session statistics for one player. Computed on demand from player_session.
761
+ */
762
+ export interface AdminPlayerSessionStats {
763
+ /**
764
+ * Sum of duration_seconds across all closed sessions
765
+ */
766
+ 'totalSecondsPlayed': number;
767
+ /**
768
+ * Total number of session rows for this player (active + closed)
769
+ */
770
+ 'sessionCount': number;
771
+ /**
772
+ * Distinct calendar days (UTC) on which this player had at least one session
773
+ */
774
+ 'distinctDaysActive': number;
775
+ /**
776
+ * Most recent session start time (ISO-8601). Null if the player has never connected.
777
+ */
778
+ 'lastStartedAt'?: string | null;
779
+ /**
780
+ * True when the player has at least one currently-active (ended_at IS NULL) session.
781
+ */
782
+ 'currentlyOnline': boolean;
783
+ }
784
+ /**
785
+ * Summary of a player record, used in list views
786
+ */
787
+ export interface AdminPlayerSummary {
788
+ /**
789
+ * Internal player ID
790
+ */
791
+ 'id': number;
792
+ /**
793
+ * Player Minecraft UUID
794
+ */
795
+ 'uuid': string;
796
+ /**
797
+ * Most recently seen username, null if never recorded
798
+ */
799
+ 'username'?: string | null;
399
800
  /**
400
801
  * Whether this player still has first-join status
401
802
  */
@@ -409,13 +810,9 @@ export interface AdminPlayerSummary {
409
810
  */
410
811
  'lastUsedAt'?: string | null;
411
812
  /**
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.
813
+ * 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
814
  */
418
- 'punishmentPointsPercent': number;
815
+ 'trustFactor': number;
419
816
  }
420
817
  /**
421
818
  * Batch punishment draft — one evaluation per target
@@ -439,19 +836,11 @@ export interface AdminPunishmentEvaluation {
439
836
  */
440
837
  'affectedPlayers': Array<AdminPlayerSearchResult>;
441
838
  /**
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
839
+ * Trust factor preview for the targeted player. Present only when the target is a player; absent for any other target shape.
451
840
  */
452
- 'newScore': number;
841
+ 'trustFactorImpact'?: AdminTrustFactorImpact | null;
453
842
  /**
454
- * Whether this punishment would be permanent based on the current score threshold
843
+ * Whether this punishment will be permanent. Mirrors the request\'s forcePermanent flag — auto-escalation has been removed.
455
844
  */
456
845
  'willBePermanent': boolean;
457
846
  /**
@@ -467,7 +856,7 @@ export interface AdminPunishmentEvaluation {
467
856
  */
468
857
  'isConnectionTarget': boolean;
469
858
  /**
470
- * The effective punishment type that will be applied may differ from the requested type if escalated to BAN at threshold
859
+ * The punishment type that will be applied. Equal to the requested type auto-escalation has been removed.
471
860
  */
472
861
  'effectiveType': PunishmentType;
473
862
  }
@@ -515,6 +904,202 @@ export interface AdminPunishmentTarget {
515
904
  */
516
905
  'ipAddress'?: string | null;
517
906
  }
907
+ /**
908
+ * Active DIRECT participants currently attached to a punishment.
909
+ */
910
+ export interface AdminPunishmentTargets {
911
+ /**
912
+ * UUIDs of players with an active DIRECT player_punishment link to this punishment.
913
+ */
914
+ 'playerUuids': Array<string>;
915
+ /**
916
+ * IPs of connections with a live connection_punishment row for this punishment.
917
+ */
918
+ 'ipAddresses': Array<string>;
919
+ }
920
+ /**
921
+ * One reported player attached to a report.
922
+ */
923
+ export interface AdminReportTarget {
924
+ /**
925
+ * Target player\'s UUID
926
+ */
927
+ 'uuid': string;
928
+ /**
929
+ * Target player\'s last-known username
930
+ */
931
+ 'username'?: string | null;
932
+ }
933
+ /**
934
+ * Resolve a player report. Sets resolved_at = NOW() and stores the staff note.
935
+ */
936
+ export interface AdminResolveReportRequest {
937
+ /**
938
+ * Free-form resolution note from staff (e.g. \"Watched 10 min footage, no cheating evident.\")
939
+ */
940
+ 'resolutionNote'?: string | null;
941
+ }
942
+ /**
943
+ * Set whether a player is exempt from aggressive-mode punishment propagation. Toggling on also revokes all currently-active propagated links for the player.
944
+ */
945
+ export interface AdminSetAggressiveModeImmunityRequest {
946
+ /**
947
+ * True to mark the player immune (no future propagation; existing propagated links bulk-revoked). False to re-enable propagation.
948
+ */
949
+ 'immune': boolean;
950
+ }
951
+ /**
952
+ * 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.
953
+ */
954
+ export interface AdminTrustFactorBreakdown {
955
+ /**
956
+ * Starting score before any signals applied. Constant 75.
957
+ */
958
+ 'baseTrust': number;
959
+ /**
960
+ * Bonus from account age (+1 per 30 days, capped at +15)
961
+ */
962
+ 'ageBonus': number;
963
+ /**
964
+ * Bonus from clean history. +10 if no active punishments; otherwise +1 per 60 days since the most recent one. Capped at +10.
965
+ */
966
+ 'cleanHistoryBonus': number;
967
+ /**
968
+ * Bonus from connection stability. Stair-step on distinct-connection count: ≤1=+5, ≤3=+3, ≤8=+1, else 0.
969
+ */
970
+ 'stabilityBonus': number;
971
+ /**
972
+ * Bonus from admin affirmation. alt-exemptions × 2 + active player-bypass × 4, capped at +10.
973
+ */
974
+ 'adminAffirmationBonus': number;
975
+ /**
976
+ * Penalty from active punishments. Type-weighted, severity-scaled, time-decayed (BAN half-life 730d, MUTE 180d, WARNING 60d). Capped at -40.
977
+ */
978
+ 'punishmentPenalty': number;
979
+ /**
980
+ * Penalty from alts. dirty-alts × 4 + clean-alts × 0.5, after promiscuity/alt caps, excluding alt-exempted players. Capped at -20.
981
+ */
982
+ 'altPenalty': number;
983
+ /**
984
+ * Penalty from VPN exposure. Fraction of the player\'s connections flagged > 50% positive × 15.
985
+ */
986
+ 'vpnPenalty': number;
987
+ /**
988
+ * Penalty from active PROPAGATED punishment links × 3. Capped at -15.
989
+ */
990
+ 'propagationPenalty': number;
991
+ /**
992
+ * Sum of base + bonuses - penalties BEFORE clamping to 0..100. Useful for debugging \"why is my -50 raw sum clamped to 0?\" cases.
993
+ */
994
+ 'rawSum': number;
995
+ /**
996
+ * The clamped final trust factor (0–100). Identical to what compute_trust_factor() returns.
997
+ */
998
+ 'finalScore': number;
999
+ /**
1000
+ * Days since the player\'s account was created.
1001
+ */
1002
+ 'accountAgeDays': number;
1003
+ /**
1004
+ * Days since the most recent active punishment landed. Null when the player has none — the clean_history bonus is at its cap.
1005
+ */
1006
+ 'daysSinceLastPunishment'?: number | null;
1007
+ /**
1008
+ * Distinct connections this player has used. Drives the stability bonus.
1009
+ */
1010
+ 'numConnections': number;
1011
+ /**
1012
+ * Alt-exemption rows attributed to this player (admin-asserted legitimate associates).
1013
+ */
1014
+ 'numAltExemptions': number;
1015
+ /**
1016
+ * Whether this player currently has an active player_bypass row.
1017
+ */
1018
+ 'hasPlayerBypass': boolean;
1019
+ /**
1020
+ * Count of active (non-revoked, non-expired) player_punishment rows on this player. Includes both DIRECT and PROPAGATED.
1021
+ */
1022
+ 'numActivePunishments': number;
1023
+ /**
1024
+ * Alts with active punishments (drives the bigger per-alt penalty multiplier).
1025
+ */
1026
+ 'numDirtyAlts': number;
1027
+ /**
1028
+ * Alts WITHOUT active punishments (drives the smaller per-alt penalty multiplier).
1029
+ */
1030
+ 'numCleanAlts': number;
1031
+ /**
1032
+ * Fraction of this player\'s connections flagged > 50% VPN-positive. Range 0..1.
1033
+ */
1034
+ 'vpnConnectionRatio': number;
1035
+ /**
1036
+ * Active PROPAGATED player_punishment links on this player (i.e. aggressive-mode propagation).
1037
+ */
1038
+ 'numPropagatedLinks': number;
1039
+ }
1040
+ /**
1041
+ * One trust factor snapshot for a player on a given day.
1042
+ */
1043
+ export interface AdminTrustFactorHistoryEntry {
1044
+ /**
1045
+ * UTC date the snapshot was taken
1046
+ */
1047
+ 'snapshotDate': string;
1048
+ /**
1049
+ * Trust factor (0–100, higher = more trusted) on that day
1050
+ */
1051
+ 'trustFactor': number;
1052
+ }
1053
+ /**
1054
+ * Trust factor impact preview for a player-targeted punishment.
1055
+ */
1056
+ export interface AdminTrustFactorImpact {
1057
+ /**
1058
+ * Trust factor right now (0-100, higher = more trusted). Computed by compute_trust_factor in the database.
1059
+ */
1060
+ 'currentTrustFactor': number;
1061
+ /**
1062
+ * 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.
1063
+ */
1064
+ 'projectedTrustFactor': number;
1065
+ }
1066
+ /**
1067
+ * Partial update for a punishment. All fields are optional; omitted fields stay untouched.
1068
+ */
1069
+ export interface AdminUpdatePunishmentRequest {
1070
+ /**
1071
+ * Replace the visible reason. Min 3, max 500 characters.
1072
+ */
1073
+ 'reason'?: string | null;
1074
+ /**
1075
+ * Replace the internal admin notes. Null leaves them untouched; empty string clears them.
1076
+ */
1077
+ 'notes'?: string | null;
1078
+ /**
1079
+ * 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.
1080
+ */
1081
+ 'expiresAt'?: string | null;
1082
+ /**
1083
+ * When true, clears expiresAt (makes the punishment permanent). Takes precedence over expiresAt.
1084
+ */
1085
+ 'forcePermanent'?: boolean | null;
1086
+ /**
1087
+ * Replace the punishment type (BAN/MUTE/KICK/WARNING). Affects trust factor retroactively.
1088
+ */
1089
+ 'type'?: PunishmentType | null;
1090
+ /**
1091
+ * Replace the severity (1–4). Affects trust factor retroactively.
1092
+ */
1093
+ 'severity'?: number | null;
1094
+ /**
1095
+ * Targets to ADD. Each entry has either a player UUID or an IP. UUID → new DIRECT player_punishment row. IP → new connection_punishment row.
1096
+ */
1097
+ 'addTargets'?: Array<AdminPunishmentTarget> | null;
1098
+ /**
1099
+ * Targets to REMOVE. UUID → soft-revoke the DIRECT player_punishment link. IP → delete the connection_punishment row outright. PROPAGATED links are not affected by this endpoint.
1100
+ */
1101
+ 'removeTargets'?: Array<AdminPunishmentTarget> | null;
1102
+ }
518
1103
  /**
519
1104
  * A single entry in a player\'s username history
520
1105
  */
@@ -568,9 +1153,18 @@ export interface ConnectionGetConnectionDetailsResponse {
568
1153
  */
569
1154
  'ipAddress': string;
570
1155
  /**
571
- * Approximate geographic location of the IP address. Returns \'Local, N/A\' for localhost or private IPs.
1156
+ * 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.
1157
+ */
1158
+ 'city'?: string | null;
1159
+ /**
1160
+ * Country code reported by the first VPN provider that returned one (ISO 3166-1 alpha-2 or alpha-3 depending on provider).
572
1161
  */
573
- 'approximateLocation': string;
1162
+ 'country'?: string | null;
1163
+ /**
1164
+ * **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.
1165
+ * @deprecated
1166
+ */
1167
+ 'approximateLocation'?: string | null;
574
1168
  /**
575
1169
  * 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
1170
  */
@@ -605,7 +1199,7 @@ export interface ConnectionGetConnectionDetailsResponse {
605
1199
  'connectionResult'?: ConnectionResult | null;
606
1200
  }
607
1201
  /**
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.
1202
+ * Final allow/deny verdict plus formatted kick message if denied.
609
1203
  */
610
1204
  export interface ConnectionResult {
611
1205
  'code': ConnectionResultResultCode;
@@ -635,6 +1229,60 @@ export interface CreateBypassRequest {
635
1229
  */
636
1230
  'expiresAtEpoch': number;
637
1231
  }
1232
+ /**
1233
+ * 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.
1234
+ */
1235
+ export interface CreateReportRequest {
1236
+ /**
1237
+ * Reporter\'s UUID (the player who ran /report)
1238
+ */
1239
+ 'reporterUuid': string;
1240
+ /**
1241
+ * One or more reported player UUIDs. Duplicates within the list are de-duped server-side. The reporter MUST NOT appear in this list.
1242
+ */
1243
+ 'reportedUuids': Array<string>;
1244
+ /**
1245
+ * Category of misconduct. Coarse on purpose — staff refine in triage.
1246
+ */
1247
+ 'category': ReportCategory;
1248
+ /**
1249
+ * Free-form description from the reporter (1–500 chars)
1250
+ */
1251
+ 'reason': string;
1252
+ }
1253
+ /**
1254
+ * Acknowledgement that a peer report was accepted by the API.
1255
+ */
1256
+ export interface CreateReportResponse {
1257
+ /**
1258
+ * Server-assigned report id
1259
+ */
1260
+ 'reportId': number;
1261
+ /**
1262
+ * 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.
1263
+ */
1264
+ 'deduplicated': boolean;
1265
+ }
1266
+ export interface CursoredPageAdminAuditLogEntry {
1267
+ 'content': Array<AdminAuditLogEntry>;
1268
+ 'pageable': Pageable;
1269
+ 'pageNumber': number;
1270
+ 'offset': number;
1271
+ 'size': number;
1272
+ 'empty': boolean;
1273
+ 'numberOfElements': number;
1274
+ 'totalSize': number;
1275
+ 'totalPages': number;
1276
+ 'cursors': Array<object>;
1277
+ }
1278
+ export interface CursoredPageable {
1279
+ 'orderBy': Array<SortOrder>;
1280
+ 'number': number;
1281
+ 'size': number;
1282
+ 'mode': PageableMode;
1283
+ 'sort': Sort;
1284
+ 'backward': boolean;
1285
+ }
638
1286
  export declare const GameType: {
639
1287
  readonly Rotj: "ROTJ";
640
1288
  readonly Legacy: "LEGACY";
@@ -642,7 +1290,163 @@ export declare const GameType: {
642
1290
  };
643
1291
  export type GameType = typeof GameType[keyof typeof GameType];
644
1292
  /**
645
- * Player information including join history, tracking data, and punishment scoring
1293
+ * Current lifecycle state.
1294
+ */
1295
+ export declare const JobStatus: {
1296
+ readonly Queued: "QUEUED";
1297
+ readonly Running: "RUNNING";
1298
+ readonly Completed: "COMPLETED";
1299
+ readonly Failed: "FAILED";
1300
+ readonly Cancelled: "CANCELLED";
1301
+ };
1302
+ export type JobStatus = typeof JobStatus[keyof typeof JobStatus];
1303
+ export interface PageAdminAltAccount {
1304
+ 'content': Array<AdminAltAccount>;
1305
+ 'pageable': Pageable;
1306
+ 'pageNumber': number;
1307
+ 'offset': number;
1308
+ 'size': number;
1309
+ 'empty': boolean;
1310
+ 'numberOfElements': number;
1311
+ 'totalSize': number;
1312
+ 'totalPages': number;
1313
+ }
1314
+ export interface PageAdminAltExemption {
1315
+ 'content': Array<AdminAltExemption>;
1316
+ 'pageable': Pageable;
1317
+ 'pageNumber': number;
1318
+ 'offset': number;
1319
+ 'size': number;
1320
+ 'empty': boolean;
1321
+ 'numberOfElements': number;
1322
+ 'totalSize': number;
1323
+ 'totalPages': number;
1324
+ }
1325
+ export interface PageAdminAsyncJob {
1326
+ 'content': Array<AdminAsyncJob>;
1327
+ 'pageable': Pageable;
1328
+ 'pageNumber': number;
1329
+ 'offset': number;
1330
+ 'size': number;
1331
+ 'empty': boolean;
1332
+ 'numberOfElements': number;
1333
+ 'totalSize': number;
1334
+ 'totalPages': number;
1335
+ }
1336
+ export interface PageAdminAuditLogEntry {
1337
+ 'content': Array<AdminAuditLogEntry>;
1338
+ 'pageable': Pageable;
1339
+ 'pageNumber': number;
1340
+ 'offset': number;
1341
+ 'size': number;
1342
+ 'empty': boolean;
1343
+ 'numberOfElements': number;
1344
+ 'totalSize': number;
1345
+ 'totalPages': number;
1346
+ }
1347
+ export interface PageAdminDashboardConnectionResponse {
1348
+ 'content': Array<AdminDashboardConnectionResponse>;
1349
+ 'pageable': Pageable;
1350
+ 'pageNumber': number;
1351
+ 'offset': number;
1352
+ 'size': number;
1353
+ 'empty': boolean;
1354
+ 'numberOfElements': number;
1355
+ 'totalSize': number;
1356
+ 'totalPages': number;
1357
+ }
1358
+ export interface PageAdminPlayerNote {
1359
+ 'content': Array<AdminPlayerNote>;
1360
+ 'pageable': Pageable;
1361
+ 'pageNumber': number;
1362
+ 'offset': number;
1363
+ 'size': number;
1364
+ 'empty': boolean;
1365
+ 'numberOfElements': number;
1366
+ 'totalSize': number;
1367
+ 'totalPages': number;
1368
+ }
1369
+ export interface PageAdminPlayerPunishmentResponse {
1370
+ 'content': Array<AdminPlayerPunishmentResponse>;
1371
+ 'pageable': Pageable;
1372
+ 'pageNumber': number;
1373
+ 'offset': number;
1374
+ 'size': number;
1375
+ 'empty': boolean;
1376
+ 'numberOfElements': number;
1377
+ 'totalSize': number;
1378
+ 'totalPages': number;
1379
+ }
1380
+ export interface PageAdminPlayerReport {
1381
+ 'content': Array<AdminPlayerReport>;
1382
+ 'pageable': Pageable;
1383
+ 'pageNumber': number;
1384
+ 'offset': number;
1385
+ 'size': number;
1386
+ 'empty': boolean;
1387
+ 'numberOfElements': number;
1388
+ 'totalSize': number;
1389
+ 'totalPages': number;
1390
+ }
1391
+ export interface PageAdminPlayerSession {
1392
+ 'content': Array<AdminPlayerSession>;
1393
+ 'pageable': Pageable;
1394
+ 'pageNumber': number;
1395
+ 'offset': number;
1396
+ 'size': number;
1397
+ 'empty': boolean;
1398
+ 'numberOfElements': number;
1399
+ 'totalSize': number;
1400
+ 'totalPages': number;
1401
+ }
1402
+ export interface PageAdminPlayerSummary {
1403
+ 'content': Array<AdminPlayerSummary>;
1404
+ 'pageable': Pageable;
1405
+ 'pageNumber': number;
1406
+ 'offset': number;
1407
+ 'size': number;
1408
+ 'empty': boolean;
1409
+ 'numberOfElements': number;
1410
+ 'totalSize': number;
1411
+ 'totalPages': number;
1412
+ }
1413
+ export interface PageAdminPunishmentListItem {
1414
+ 'content': Array<AdminPunishmentListItem>;
1415
+ 'pageable': Pageable;
1416
+ 'pageNumber': number;
1417
+ 'offset': number;
1418
+ 'size': number;
1419
+ 'empty': boolean;
1420
+ 'numberOfElements': number;
1421
+ 'totalSize': number;
1422
+ 'totalPages': number;
1423
+ }
1424
+ export interface PagePunishmentGetPunishmentResponse {
1425
+ 'content': Array<PunishmentGetPunishmentResponse>;
1426
+ 'pageable': Pageable;
1427
+ 'pageNumber': number;
1428
+ 'offset': number;
1429
+ 'size': number;
1430
+ 'empty': boolean;
1431
+ 'numberOfElements': number;
1432
+ 'totalSize': number;
1433
+ 'totalPages': number;
1434
+ }
1435
+ export interface Pageable {
1436
+ 'orderBy': Array<SortOrder>;
1437
+ 'number': number;
1438
+ 'size': number;
1439
+ 'mode': PageableMode;
1440
+ 'sort': Sort;
1441
+ }
1442
+ export declare const PageableMode: {
1443
+ readonly CursorNext: "CURSOR_NEXT";
1444
+ readonly CursorPrevious: "CURSOR_PREVIOUS";
1445
+ readonly Offset: "OFFSET";
1446
+ };
1447
+ export type PageableMode = typeof PageableMode[keyof typeof PageableMode];
1448
+ /**
1449
+ * Player information including join history, tracking data, and trust factor
646
1450
  */
647
1451
  export interface PlayerGetPlayerInformation {
648
1452
  /**
@@ -654,73 +1458,182 @@ export interface PlayerGetPlayerInformation {
654
1458
  */
655
1459
  'firstLogin': string;
656
1460
  /**
657
- * Raw punishment score calculated as: SUM((base_weight × severity/10)). Used for tracking overall punishment severity.
1461
+ * 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.
1462
+ */
1463
+ 'trustFactor': number;
1464
+ /**
1465
+ * **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.
1466
+ * @deprecated
658
1467
  */
659
1468
  'punishmentPointsRaw': number;
660
1469
  /**
661
- * Punishment score as a percentage (0-100). When >100% before applying a new punishment, the new punishment should be made permanent.
1470
+ * **DEPRECATED.** See {@link #punishmentPointsRaw}. Always 0.0 use trustFactor.
1471
+ * @deprecated
662
1472
  */
663
1473
  'punishmentPointsPercent': number;
664
1474
  }
665
1475
  /**
666
- * Punishment information including reason, type, creator, and expiration
1476
+ * Close the active player session for a (playerUuid, serverSessionId) pair. No-op if no active session is found.
667
1477
  */
668
- export interface PunishmentGetPunishmentResponse {
669
- /**
670
- * Unique identifier for the punishment
671
- */
672
- 'id': number;
673
- /**
674
- * Reason for the punishment, shown to the punished player
675
- */
676
- 'reason': string;
1478
+ export interface PlayerSessionEndRequest {
677
1479
  /**
678
- * Internal administrator notes — not shown to the punished player
1480
+ * Player Minecraft UUID
679
1481
  */
680
- 'notes'?: string | null;
1482
+ 'playerUuid': string;
681
1483
  /**
682
- * Type of punishment
1484
+ * Server session id the player was on
683
1485
  */
684
- 'type': PunishmentType;
1486
+ 'serverSessionId': string;
1487
+ }
1488
+ /**
1489
+ * Unified player-join request. Runs the full authorization check (VPN, bypass, punishments) and conditionally opens a player_session for the allowed players.
1490
+ */
1491
+ export interface PlayerSessionStartRequest {
685
1492
  /**
686
- * Severity level (1=Minor, 2=Moderate, 3=Severe, 4=Critical)
1493
+ * Player Minecraft UUID
687
1494
  */
688
- 'severity': number;
1495
+ 'playerUuid': string;
689
1496
  /**
690
- * Username or identifier of the person who created this punishment
1497
+ * Server session id this player is on (from /v1/servers register)
691
1498
  */
692
- 'createdBy': string;
1499
+ 'serverSessionId': string;
693
1500
  /**
694
- * Timestamp when the punishment expires (ISO-8601 format). Null for permanent punishments.
1501
+ * IPv4 address the player is connecting from
695
1502
  */
696
- 'expiresAt'?: string | null;
1503
+ 'ip': string;
697
1504
  /**
698
- * Timestamp when the punishment was created (ISO-8601 format)
1505
+ * When true, bypass any cached VPN-check result and re-run all detection services. Useful when debugging a specific connection. Defaults to false.
699
1506
  */
700
- 'createdAt': string;
1507
+ 'forceRecheck'?: boolean | null;
701
1508
  }
702
1509
  /**
703
- * Response containing punishment severity durations for each type
1510
+ * Result of POST /v1/player-session/start. Always populated; session fields are null when the player was not allowed in.
704
1511
  */
705
- export interface PunishmentSeveritiesResponse {
1512
+ export interface PlayerSessionStartResponse {
706
1513
  /**
707
- * List of punishment types with their severity durations
1514
+ * Session row id. Null when the join was not allowed.
708
1515
  */
709
- 'punishmentTypes': Array<PunishmentSeveritiesResponsePunishmentTypeInfo>;
710
- }
711
- /**
712
- * Punishment type with severity information
713
- */
714
- export interface PunishmentSeveritiesResponsePunishmentTypeInfo {
1516
+ 'sessionId'?: string | null;
715
1517
  /**
716
- * Type of punishment
1518
+ * 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.
717
1519
  */
718
- 'type': PunishmentType;
1520
+ 'startedAt'?: string | null;
719
1521
  /**
720
- * List of severity levels with durations
1522
+ * Player Minecraft UUID
721
1523
  */
722
- 'severities': Array<PunishmentSeveritiesResponseSeverityInfo>;
723
- }
1524
+ 'playerUuid': string;
1525
+ /**
1526
+ * Server session id the join applies to
1527
+ */
1528
+ 'serverSessionId': string;
1529
+ /**
1530
+ * Final allow/deny verdict plus formatted kick message if denied.
1531
+ */
1532
+ 'connectionResult': ConnectionResult;
1533
+ /**
1534
+ * Player\'s connecting IP, echoed from the request
1535
+ */
1536
+ 'ipAddress': string;
1537
+ /**
1538
+ * City reported by the first VPN provider that returned one. Null when no provider has city data (private IPs, localhost, sparse providers).
1539
+ */
1540
+ 'city'?: string | null;
1541
+ /**
1542
+ * Country code reported by the first VPN provider that returned one (ISO 3166-1 alpha-2 or alpha-3 depending on provider).
1543
+ */
1544
+ 'country'?: string | null;
1545
+ /**
1546
+ * Confidence score (0.0–100.0) representing what fraction of VPN detection services flagged this IP as suspicious.
1547
+ */
1548
+ 'percentPositive': number;
1549
+ /**
1550
+ * Total VPN detection services successfully queried on this IP
1551
+ */
1552
+ 'numberOfChecks': number;
1553
+ /**
1554
+ * Whether this IP has an active administrative VPN bypass
1555
+ */
1556
+ 'isBypassed': boolean;
1557
+ /**
1558
+ * Bypass expiration timestamp; null if not bypassed or bypass is permanent.
1559
+ */
1560
+ 'bypassedUntil'?: string | null;
1561
+ /**
1562
+ * Per-provider VPN check results, useful for the admin UI / debugging.
1563
+ */
1564
+ 'checkResults'?: Array<AdminConnectionCheckResult>;
1565
+ /**
1566
+ * Player info (first-join flag, first login, punishment score). Null only in edge cases where the player record could not be loaded.
1567
+ */
1568
+ 'playerInformation'?: PlayerGetPlayerInformation | null;
1569
+ /**
1570
+ * Active (non-expired, non-revoked) punishments on this player, including any that were just propagated by the join check.
1571
+ */
1572
+ 'activePunishments': Array<PunishmentGetPunishmentResponse>;
1573
+ /**
1574
+ * 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.
1575
+ */
1576
+ 'sessionStats': AdminPlayerSessionStats;
1577
+ }
1578
+ /**
1579
+ * Punishment information including reason, type, creator, and expiration
1580
+ */
1581
+ export interface PunishmentGetPunishmentResponse {
1582
+ /**
1583
+ * Unique identifier for the punishment
1584
+ */
1585
+ 'id': number;
1586
+ /**
1587
+ * Reason for the punishment, shown to the punished player
1588
+ */
1589
+ 'reason': string;
1590
+ /**
1591
+ * Internal administrator notes — not shown to the punished player
1592
+ */
1593
+ 'notes'?: string | null;
1594
+ /**
1595
+ * Type of punishment
1596
+ */
1597
+ 'type': PunishmentType;
1598
+ /**
1599
+ * Severity level (1=Minor, 2=Moderate, 3=Severe, 4=Critical)
1600
+ */
1601
+ 'severity': number;
1602
+ /**
1603
+ * Username or identifier of the person who created this punishment
1604
+ */
1605
+ 'createdBy': string;
1606
+ /**
1607
+ * Timestamp when the punishment expires (ISO-8601 format). Null for permanent punishments.
1608
+ */
1609
+ 'expiresAt'?: string | null;
1610
+ /**
1611
+ * Timestamp when the punishment was created (ISO-8601 format)
1612
+ */
1613
+ 'createdAt': string;
1614
+ }
1615
+ /**
1616
+ * Response containing punishment severity durations for each type
1617
+ */
1618
+ export interface PunishmentSeveritiesResponse {
1619
+ /**
1620
+ * List of punishment types with their severity durations
1621
+ */
1622
+ 'punishmentTypes': Array<PunishmentSeveritiesResponsePunishmentTypeInfo>;
1623
+ }
1624
+ /**
1625
+ * Punishment type with severity information
1626
+ */
1627
+ export interface PunishmentSeveritiesResponsePunishmentTypeInfo {
1628
+ /**
1629
+ * Type of punishment
1630
+ */
1631
+ 'type': PunishmentType;
1632
+ /**
1633
+ * List of severity levels with durations
1634
+ */
1635
+ 'severities': Array<PunishmentSeveritiesResponseSeverityInfo>;
1636
+ }
724
1637
  /**
725
1638
  * Severity level with duration information
726
1639
  */
@@ -734,11 +1647,22 @@ export interface PunishmentSeveritiesResponseSeverityInfo {
734
1647
  */
735
1648
  'durationSeconds': number;
736
1649
  }
1650
+ /**
1651
+ * 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.
1652
+ */
1653
+ export declare const PunishmentSource: {
1654
+ readonly Direct: "DIRECT";
1655
+ readonly Propagated: "PROPAGATED";
1656
+ };
1657
+ export type PunishmentSource = typeof PunishmentSource[keyof typeof PunishmentSource];
737
1658
  export declare const PunishmentTargetType: {
738
1659
  readonly Player: "PLAYER";
739
1660
  readonly Connection: "CONNECTION";
740
1661
  };
741
1662
  export type PunishmentTargetType = typeof PunishmentTargetType[keyof typeof PunishmentTargetType];
1663
+ /**
1664
+ * Type of punishment
1665
+ */
742
1666
  export declare const PunishmentType: {
743
1667
  readonly Ban: "BAN";
744
1668
  readonly Mute: "MUTE";
@@ -757,6 +1681,17 @@ export declare const Region: {
757
1681
  readonly Au: "AU";
758
1682
  };
759
1683
  export type Region = typeof Region[keyof typeof Region];
1684
+ /**
1685
+ * Category of misconduct. Coarse on purpose — staff refine in triage.
1686
+ */
1687
+ export declare const ReportCategory: {
1688
+ readonly Cheating: "CHEATING";
1689
+ readonly Harassment: "HARASSMENT";
1690
+ readonly ChatAbuse: "CHAT_ABUSE";
1691
+ readonly Griefing: "GRIEFING";
1692
+ readonly Other: "OTHER";
1693
+ };
1694
+ export type ReportCategory = typeof ReportCategory[keyof typeof ReportCategory];
760
1695
  /**
761
1696
  * Search kind — PLAYER for UUID/username searches, IP for IP address searches
762
1697
  */
@@ -781,6 +1716,128 @@ export interface ServerSessionDTO {
781
1716
  'endedAt'?: string | null;
782
1717
  'online': boolean;
783
1718
  }
1719
+ export interface SliceAdminAltAccount {
1720
+ 'content': Array<AdminAltAccount>;
1721
+ 'pageable': Pageable;
1722
+ 'pageNumber': number;
1723
+ 'offset': number;
1724
+ 'size': number;
1725
+ 'empty': boolean;
1726
+ 'numberOfElements': number;
1727
+ }
1728
+ export interface SliceAdminAltExemption {
1729
+ 'content': Array<AdminAltExemption>;
1730
+ 'pageable': Pageable;
1731
+ 'pageNumber': number;
1732
+ 'offset': number;
1733
+ 'size': number;
1734
+ 'empty': boolean;
1735
+ 'numberOfElements': number;
1736
+ }
1737
+ export interface SliceAdminAsyncJob {
1738
+ 'content': Array<AdminAsyncJob>;
1739
+ 'pageable': Pageable;
1740
+ 'pageNumber': number;
1741
+ 'offset': number;
1742
+ 'size': number;
1743
+ 'empty': boolean;
1744
+ 'numberOfElements': number;
1745
+ }
1746
+ export interface SliceAdminAuditLogEntry {
1747
+ 'content': Array<AdminAuditLogEntry>;
1748
+ 'pageable': Pageable;
1749
+ 'pageNumber': number;
1750
+ 'offset': number;
1751
+ 'size': number;
1752
+ 'empty': boolean;
1753
+ 'numberOfElements': number;
1754
+ }
1755
+ export interface SliceAdminDashboardConnectionResponse {
1756
+ 'content': Array<AdminDashboardConnectionResponse>;
1757
+ 'pageable': Pageable;
1758
+ 'pageNumber': number;
1759
+ 'offset': number;
1760
+ 'size': number;
1761
+ 'empty': boolean;
1762
+ 'numberOfElements': number;
1763
+ }
1764
+ export interface SliceAdminPlayerNote {
1765
+ 'content': Array<AdminPlayerNote>;
1766
+ 'pageable': Pageable;
1767
+ 'pageNumber': number;
1768
+ 'offset': number;
1769
+ 'size': number;
1770
+ 'empty': boolean;
1771
+ 'numberOfElements': number;
1772
+ }
1773
+ export interface SliceAdminPlayerPunishmentResponse {
1774
+ 'content': Array<AdminPlayerPunishmentResponse>;
1775
+ 'pageable': Pageable;
1776
+ 'pageNumber': number;
1777
+ 'offset': number;
1778
+ 'size': number;
1779
+ 'empty': boolean;
1780
+ 'numberOfElements': number;
1781
+ }
1782
+ export interface SliceAdminPlayerReport {
1783
+ 'content': Array<AdminPlayerReport>;
1784
+ 'pageable': Pageable;
1785
+ 'pageNumber': number;
1786
+ 'offset': number;
1787
+ 'size': number;
1788
+ 'empty': boolean;
1789
+ 'numberOfElements': number;
1790
+ }
1791
+ export interface SliceAdminPlayerSession {
1792
+ 'content': Array<AdminPlayerSession>;
1793
+ 'pageable': Pageable;
1794
+ 'pageNumber': number;
1795
+ 'offset': number;
1796
+ 'size': number;
1797
+ 'empty': boolean;
1798
+ 'numberOfElements': number;
1799
+ }
1800
+ export interface SliceAdminPlayerSummary {
1801
+ 'content': Array<AdminPlayerSummary>;
1802
+ 'pageable': Pageable;
1803
+ 'pageNumber': number;
1804
+ 'offset': number;
1805
+ 'size': number;
1806
+ 'empty': boolean;
1807
+ 'numberOfElements': number;
1808
+ }
1809
+ export interface SliceAdminPunishmentListItem {
1810
+ 'content': Array<AdminPunishmentListItem>;
1811
+ 'pageable': Pageable;
1812
+ 'pageNumber': number;
1813
+ 'offset': number;
1814
+ 'size': number;
1815
+ 'empty': boolean;
1816
+ 'numberOfElements': number;
1817
+ }
1818
+ export interface SlicePunishmentGetPunishmentResponse {
1819
+ 'content': Array<PunishmentGetPunishmentResponse>;
1820
+ 'pageable': Pageable;
1821
+ 'pageNumber': number;
1822
+ 'offset': number;
1823
+ 'size': number;
1824
+ 'empty': boolean;
1825
+ 'numberOfElements': number;
1826
+ }
1827
+ export interface Sort {
1828
+ 'orderBy': Array<SortOrder>;
1829
+ }
1830
+ export interface SortOrder {
1831
+ 'ignoreCase': boolean;
1832
+ 'direction': SortOrderDirection;
1833
+ 'property': string;
1834
+ 'ascending': boolean;
1835
+ }
1836
+ export declare const SortOrderDirection: {
1837
+ readonly Asc: "ASC";
1838
+ readonly Desc: "DESC";
1839
+ };
1840
+ export type SortOrderDirection = typeof SortOrderDirection[keyof typeof SortOrderDirection];
784
1841
  export interface TokenRequest {
785
1842
  'grant_type'?: string | null;
786
1843
  'client_id'?: string | null;
@@ -807,6 +1864,122 @@ export interface UserProfileResponse {
807
1864
  'roles': Array<string>;
808
1865
  'discordRoles': Array<string>;
809
1866
  }
1867
+ /**
1868
+ * AdminAuditLogApi - axios parameter creator
1869
+ */
1870
+ export declare const AdminAuditLogApiAxiosParamCreator: (configuration?: Configuration) => {
1871
+ /**
1872
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1873
+ * @summary Search the admin audit log
1874
+ * @param {Pageable} pageable
1875
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1876
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1877
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1878
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1879
+ * @param {*} [options] Override http request option.
1880
+ * @throws {RequiredError}
1881
+ */
1882
+ search: (pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1883
+ /**
1884
+ * 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.
1885
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1886
+ * @param {CursoredPageable} pageable
1887
+ * @param {string | null} [actor]
1888
+ * @param {string | null} [action]
1889
+ * @param {string | null} [targetType]
1890
+ * @param {string | null} [targetId]
1891
+ * @param {*} [options] Override http request option.
1892
+ * @throws {RequiredError}
1893
+ */
1894
+ searchCursor: (pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1895
+ };
1896
+ /**
1897
+ * AdminAuditLogApi - functional programming interface
1898
+ */
1899
+ export declare const AdminAuditLogApiFp: (configuration?: Configuration) => {
1900
+ /**
1901
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1902
+ * @summary Search the admin audit log
1903
+ * @param {Pageable} pageable
1904
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1905
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1906
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1907
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1908
+ * @param {*} [options] Override http request option.
1909
+ * @throws {RequiredError}
1910
+ */
1911
+ search(pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAuditLogEntry>>;
1912
+ /**
1913
+ * 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.
1914
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1915
+ * @param {CursoredPageable} pageable
1916
+ * @param {string | null} [actor]
1917
+ * @param {string | null} [action]
1918
+ * @param {string | null} [targetType]
1919
+ * @param {string | null} [targetId]
1920
+ * @param {*} [options] Override http request option.
1921
+ * @throws {RequiredError}
1922
+ */
1923
+ searchCursor(pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CursoredPageAdminAuditLogEntry>>;
1924
+ };
1925
+ /**
1926
+ * AdminAuditLogApi - factory interface
1927
+ */
1928
+ export declare const AdminAuditLogApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1929
+ /**
1930
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1931
+ * @summary Search the admin audit log
1932
+ * @param {Pageable} pageable
1933
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1934
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1935
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1936
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1937
+ * @param {*} [options] Override http request option.
1938
+ * @throws {RequiredError}
1939
+ */
1940
+ search(pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAuditLogEntry>;
1941
+ /**
1942
+ * 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.
1943
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1944
+ * @param {CursoredPageable} pageable
1945
+ * @param {string | null} [actor]
1946
+ * @param {string | null} [action]
1947
+ * @param {string | null} [targetType]
1948
+ * @param {string | null} [targetId]
1949
+ * @param {*} [options] Override http request option.
1950
+ * @throws {RequiredError}
1951
+ */
1952
+ searchCursor(pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<CursoredPageAdminAuditLogEntry>;
1953
+ };
1954
+ /**
1955
+ * AdminAuditLogApi - object-oriented interface
1956
+ */
1957
+ export declare class AdminAuditLogApi extends BaseAPI {
1958
+ /**
1959
+ * Paginated audit-log search. All filter parameters are optional; an empty filter set returns the most recent rows across the system. Sorted newest-first.
1960
+ * @summary Search the admin audit log
1961
+ * @param {Pageable} pageable
1962
+ * @param {string | null} [actor] Filter to actions performed by this Discord username (case-sensitive exact match)
1963
+ * @param {string | null} [action] Filter to a specific action verb (e.g. REVOKE_PROPAGATED_LINK, SET_AGGRESSIVE_MODE_IMMUNITY)
1964
+ * @param {string | null} [targetType] Filter to a specific target type (e.g. PLAYER, PUNISHMENT, PLAYER_PUNISHMENT)
1965
+ * @param {string | null} [targetId] Filter to a specific target id (paired with targetType for narrowing)
1966
+ * @param {*} [options] Override http request option.
1967
+ * @throws {RequiredError}
1968
+ */
1969
+ search(pageable: Pageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAuditLogEntry, any, {}>>;
1970
+ /**
1971
+ * 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.
1972
+ * @summary Cursor-paginated audit-log search (infinite scroll)
1973
+ * @param {CursoredPageable} pageable
1974
+ * @param {string | null} [actor]
1975
+ * @param {string | null} [action]
1976
+ * @param {string | null} [targetType]
1977
+ * @param {string | null} [targetId]
1978
+ * @param {*} [options] Override http request option.
1979
+ * @throws {RequiredError}
1980
+ */
1981
+ searchCursor(pageable: CursoredPageable, actor?: string | null, action?: string | null, targetType?: string | null, targetId?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CursoredPageAdminAuditLogEntry, any, {}>>;
1982
+ }
810
1983
  /**
811
1984
  * AdminClientCredentialsApi - axios parameter creator
812
1985
  */
@@ -1056,8 +2229,8 @@ export declare class AdminClientCredentialsApi extends BaseAPI {
1056
2229
  */
1057
2230
  export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Configuration) => {
1058
2231
  /**
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
2232
+ * 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.
2233
+ * @summary Start a location backfill job
1061
2234
  * @param {*} [options] Override http request option.
1062
2235
  * @throws {RequiredError}
1063
2236
  */
@@ -1070,32 +2243,49 @@ export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Conf
1070
2243
  * @throws {RequiredError}
1071
2244
  */
1072
2245
  createBypass: (createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2246
+ /**
2247
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2248
+ * @summary Get connection detail
2249
+ * @param {number} id
2250
+ * @param {*} [options] Override http request option.
2251
+ * @throws {RequiredError}
2252
+ */
2253
+ getConnection: (id: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2254
+ /**
2255
+ * 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.
2256
+ * @summary List players who have used this connection
2257
+ * @param {number} id
2258
+ * @param {Pageable} pageable
2259
+ * @param {*} [options] Override http request option.
2260
+ * @throws {RequiredError}
2261
+ */
2262
+ getConnectionPlayers: (id: number, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1073
2263
  /**
1074
2264
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1075
2265
  * @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
2266
+ * @param {Pageable} pageable
2267
+ * @param {number | null} [createdAfter]
2268
+ * @param {number | null} [createdBefore]
2269
+ * @param {string | null} [ipAddress]
2270
+ * @param {string | null} [uuid]
2271
+ * @param {boolean | null} [isVpn]
1081
2272
  * @param {*} [options] Override http request option.
1082
2273
  * @throws {RequiredError}
1083
2274
  */
1084
- listAllConnections: (ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2275
+ listAllConnections: (pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1085
2276
  /**
1086
2277
  * 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
2278
  * @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
2279
+ * @param {Pageable} pageable
2280
+ * @param {number | null} [createdAfter]
2281
+ * @param {number | null} [createdBefore]
2282
+ * @param {string | null} [ipAddress]
2283
+ * @param {string | null} [uuid]
2284
+ * @param {boolean | null} [isVpn]
1095
2285
  * @param {*} [options] Override http request option.
1096
2286
  * @throws {RequiredError}
1097
2287
  */
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>;
2288
+ listConnections: (pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1099
2289
  /**
1100
2290
  * 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
2291
  * @summary Refresh a single VPN check
@@ -1111,12 +2301,12 @@ export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Conf
1111
2301
  */
1112
2302
  export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1113
2303
  /**
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
2304
+ * 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.
2305
+ * @summary Start a location backfill job
1116
2306
  * @param {*} [options] Override http request option.
1117
2307
  * @throws {RequiredError}
1118
2308
  */
1119
- backfillLocation(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminBackfillLocationResponse>>;
2309
+ backfillLocation(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJobStartResponse>>;
1120
2310
  /**
1121
2311
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1122
2312
  * @summary Create connection bypass
@@ -1125,32 +2315,49 @@ export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1125
2315
  * @throws {RequiredError}
1126
2316
  */
1127
2317
  createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminConnectionBypassResponse>>;
2318
+ /**
2319
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2320
+ * @summary Get connection detail
2321
+ * @param {number} id
2322
+ * @param {*} [options] Override http request option.
2323
+ * @throws {RequiredError}
2324
+ */
2325
+ getConnection(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminDashboardConnectionResponse>>;
2326
+ /**
2327
+ * 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.
2328
+ * @summary List players who have used this connection
2329
+ * @param {number} id
2330
+ * @param {Pageable} pageable
2331
+ * @param {*} [options] Override http request option.
2332
+ * @throws {RequiredError}
2333
+ */
2334
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerSummary>>;
1128
2335
  /**
1129
2336
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1130
2337
  * @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
2338
+ * @param {Pageable} pageable
2339
+ * @param {number | null} [createdAfter]
2340
+ * @param {number | null} [createdBefore]
2341
+ * @param {string | null} [ipAddress]
2342
+ * @param {string | null} [uuid]
2343
+ * @param {boolean | null} [isVpn]
1136
2344
  * @param {*} [options] Override http request option.
1137
2345
  * @throws {RequiredError}
1138
2346
  */
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>>;
2347
+ 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
2348
  /**
1141
2349
  * 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
2350
  * @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
2351
+ * @param {Pageable} pageable
2352
+ * @param {number | null} [createdAfter]
2353
+ * @param {number | null} [createdBefore]
2354
+ * @param {string | null} [ipAddress]
2355
+ * @param {string | null} [uuid]
2356
+ * @param {boolean | null} [isVpn]
1150
2357
  * @param {*} [options] Override http request option.
1151
2358
  * @throws {RequiredError}
1152
2359
  */
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>>>;
2360
+ 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
2361
  /**
1155
2362
  * 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
2363
  * @summary Refresh a single VPN check
@@ -1166,12 +2373,12 @@ export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1166
2373
  */
1167
2374
  export declare const AdminConnectionsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1168
2375
  /**
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
2376
+ * 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.
2377
+ * @summary Start a location backfill job
1171
2378
  * @param {*} [options] Override http request option.
1172
2379
  * @throws {RequiredError}
1173
2380
  */
1174
- backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminBackfillLocationResponse>;
2381
+ backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse>;
1175
2382
  /**
1176
2383
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1177
2384
  * @summary Create connection bypass
@@ -1180,32 +2387,49 @@ export declare const AdminConnectionsApiFactory: (configuration?: Configuration,
1180
2387
  * @throws {RequiredError}
1181
2388
  */
1182
2389
  createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionBypassResponse>;
2390
+ /**
2391
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2392
+ * @summary Get connection detail
2393
+ * @param {number} id
2394
+ * @param {*} [options] Override http request option.
2395
+ * @throws {RequiredError}
2396
+ */
2397
+ getConnection(id: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardConnectionResponse>;
2398
+ /**
2399
+ * 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.
2400
+ * @summary List players who have used this connection
2401
+ * @param {number} id
2402
+ * @param {Pageable} pageable
2403
+ * @param {*} [options] Override http request option.
2404
+ * @throws {RequiredError}
2405
+ */
2406
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSummary>;
1183
2407
  /**
1184
2408
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1185
2409
  * @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
2410
+ * @param {Pageable} pageable
2411
+ * @param {number | null} [createdAfter]
2412
+ * @param {number | null} [createdBefore]
2413
+ * @param {string | null} [ipAddress]
2414
+ * @param {string | null} [uuid]
2415
+ * @param {boolean | null} [isVpn]
1191
2416
  * @param {*} [options] Override http request option.
1192
2417
  * @throws {RequiredError}
1193
2418
  */
1194
- listAllConnections(ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, page?: number | null, limit?: number | null, options?: RawAxiosRequestConfig): AxiosPromise<AdminPagedConnectionResponse>;
2419
+ listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminDashboardConnectionResponse>;
1195
2420
  /**
1196
2421
  * 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
2422
  * @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
2423
+ * @param {Pageable} pageable
2424
+ * @param {number | null} [createdAfter]
2425
+ * @param {number | null} [createdBefore]
2426
+ * @param {string | null} [ipAddress]
2427
+ * @param {string | null} [uuid]
2428
+ * @param {boolean | null} [isVpn]
1205
2429
  * @param {*} [options] Override http request option.
1206
2430
  * @throws {RequiredError}
1207
2431
  */
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>>;
2432
+ listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardConnectionResponse>>;
1209
2433
  /**
1210
2434
  * 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
2435
  * @summary Refresh a single VPN check
@@ -1221,12 +2445,12 @@ export declare const AdminConnectionsApiFactory: (configuration?: Configuration,
1221
2445
  */
1222
2446
  export declare class AdminConnectionsApi extends BaseAPI {
1223
2447
  /**
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
2448
+ * 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.
2449
+ * @summary Start a location backfill job
1226
2450
  * @param {*} [options] Override http request option.
1227
2451
  * @throws {RequiredError}
1228
2452
  */
1229
- backfillLocation(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminBackfillLocationResponse, any, {}>>;
2453
+ backfillLocation(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAsyncJobStartResponse, any, {}>>;
1230
2454
  /**
1231
2455
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1232
2456
  * @summary Create connection bypass
@@ -1235,181 +2459,974 @@ export declare class AdminConnectionsApi extends BaseAPI {
1235
2459
  * @throws {RequiredError}
1236
2460
  */
1237
2461
  createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminConnectionBypassResponse, any, {}>>;
2462
+ /**
2463
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
2464
+ * @summary Get connection detail
2465
+ * @param {number} id
2466
+ * @param {*} [options] Override http request option.
2467
+ * @throws {RequiredError}
2468
+ */
2469
+ getConnection(id: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminDashboardConnectionResponse, any, {}>>;
2470
+ /**
2471
+ * 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.
2472
+ * @summary List players who have used this connection
2473
+ * @param {number} id
2474
+ * @param {Pageable} pageable
2475
+ * @param {*} [options] Override http request option.
2476
+ * @throws {RequiredError}
2477
+ */
2478
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerSummary, any, {}>>;
1238
2479
  /**
1239
2480
  * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
1240
2481
  * @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
2482
+ * @param {Pageable} pageable
2483
+ * @param {number | null} [createdAfter]
2484
+ * @param {number | null} [createdBefore]
2485
+ * @param {string | null} [ipAddress]
2486
+ * @param {string | null} [uuid]
2487
+ * @param {boolean | null} [isVpn]
1246
2488
  * @param {*} [options] Override http request option.
1247
2489
  * @throws {RequiredError}
1248
2490
  */
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, {}>>;
2491
+ 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, {}>>;
1250
2492
  /**
1251
2493
  * 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
2494
  * @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
2495
+ * @param {Pageable} pageable
2496
+ * @param {number | null} [createdAfter]
2497
+ * @param {number | null} [createdBefore]
2498
+ * @param {string | null} [ipAddress]
2499
+ * @param {string | null} [uuid]
2500
+ * @param {boolean | null} [isVpn]
2501
+ * @param {*} [options] Override http request option.
2502
+ * @throws {RequiredError}
2503
+ */
2504
+ 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, {}>>;
2505
+ /**
2506
+ * 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.
2507
+ * @summary Refresh a single VPN check
2508
+ * @param {number} connectionId
2509
+ * @param {string} service
2510
+ * @param {*} [options] Override http request option.
2511
+ * @throws {RequiredError}
2512
+ */
2513
+ recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminConnectionCheckResult, any, {}>>;
2514
+ }
2515
+ /**
2516
+ * AdminDashboardApi - axios parameter creator
2517
+ */
2518
+ export declare const AdminDashboardApiAxiosParamCreator: (configuration?: Configuration) => {
2519
+ /**
2520
+ * Returns aggregate counts for clients, connections, and players in the system.
2521
+ * @summary Get dashboard statistics
2522
+ * @param {*} [options] Override http request option.
2523
+ * @throws {RequiredError}
2524
+ */
2525
+ dashboardStats: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2526
+ };
2527
+ /**
2528
+ * AdminDashboardApi - functional programming interface
2529
+ */
2530
+ export declare const AdminDashboardApiFp: (configuration?: Configuration) => {
2531
+ /**
2532
+ * Returns aggregate counts for clients, connections, and players in the system.
2533
+ * @summary Get dashboard statistics
2534
+ * @param {*} [options] Override http request option.
2535
+ * @throws {RequiredError}
2536
+ */
2537
+ dashboardStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetDashboardStats>>;
2538
+ };
2539
+ /**
2540
+ * AdminDashboardApi - factory interface
2541
+ */
2542
+ export declare const AdminDashboardApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
2543
+ /**
2544
+ * Returns aggregate counts for clients, connections, and players in the system.
2545
+ * @summary Get dashboard statistics
2546
+ * @param {*} [options] Override http request option.
2547
+ * @throws {RequiredError}
2548
+ */
2549
+ dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats>;
2550
+ };
2551
+ /**
2552
+ * AdminDashboardApi - object-oriented interface
2553
+ */
2554
+ export declare class AdminDashboardApi extends BaseAPI {
2555
+ /**
2556
+ * Returns aggregate counts for clients, connections, and players in the system.
2557
+ * @summary Get dashboard statistics
2558
+ * @param {*} [options] Override http request option.
2559
+ * @throws {RequiredError}
2560
+ */
2561
+ dashboardStats(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminGetDashboardStats, any, {}>>;
2562
+ }
2563
+ /**
2564
+ * AdminJobsApi - axios parameter creator
2565
+ */
2566
+ export declare const AdminJobsApiAxiosParamCreator: (configuration?: Configuration) => {
2567
+ /**
2568
+ * 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.
2569
+ * @summary Request cancellation of an async job
2570
+ * @param {string} id Job id
2571
+ * @param {*} [options] Override http request option.
2572
+ * @throws {RequiredError}
2573
+ */
2574
+ cancel: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2575
+ /**
2576
+ * Returns the CSV emitted by the job — typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
2577
+ * @summary Download a job\'s CSV artifact
2578
+ * @param {string} id Job id
2579
+ * @param {*} [options] Override http request option.
2580
+ * @throws {RequiredError}
2581
+ */
2582
+ downloadArtifact: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2583
+ /**
2584
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2585
+ * @summary Get one async job
2586
+ * @param {string} id Job id
2587
+ * @param {*} [options] Override http request option.
2588
+ * @throws {RequiredError}
2589
+ */
2590
+ get: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2591
+ /**
2592
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2593
+ * @summary List async jobs
2594
+ * @param {Pageable} pageable
2595
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2596
+ * @param {*} [options] Override http request option.
2597
+ * @throws {RequiredError}
2598
+ */
2599
+ list: (pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2600
+ };
2601
+ /**
2602
+ * AdminJobsApi - functional programming interface
2603
+ */
2604
+ export declare const AdminJobsApiFp: (configuration?: Configuration) => {
2605
+ /**
2606
+ * 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.
2607
+ * @summary Request cancellation of an async job
2608
+ * @param {string} id Job id
2609
+ * @param {*} [options] Override http request option.
2610
+ * @throws {RequiredError}
2611
+ */
2612
+ cancel(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2613
+ /**
2614
+ * Returns the CSV emitted by the job — typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
2615
+ * @summary Download a job\'s CSV artifact
2616
+ * @param {string} id Job id
2617
+ * @param {*} [options] Override http request option.
2618
+ * @throws {RequiredError}
2619
+ */
2620
+ downloadArtifact(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<string>>;
2621
+ /**
2622
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2623
+ * @summary Get one async job
2624
+ * @param {string} id Job id
2625
+ * @param {*} [options] Override http request option.
2626
+ * @throws {RequiredError}
2627
+ */
2628
+ get(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJob>>;
2629
+ /**
2630
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2631
+ * @summary List async jobs
2632
+ * @param {Pageable} pageable
2633
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2634
+ * @param {*} [options] Override http request option.
2635
+ * @throws {RequiredError}
2636
+ */
2637
+ list(pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAsyncJob>>;
2638
+ };
2639
+ /**
2640
+ * AdminJobsApi - factory interface
2641
+ */
2642
+ export declare const AdminJobsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
2643
+ /**
2644
+ * 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.
2645
+ * @summary Request cancellation of an async job
2646
+ * @param {string} id Job id
2647
+ * @param {*} [options] Override http request option.
2648
+ * @throws {RequiredError}
2649
+ */
2650
+ cancel(id: string, options?: RawAxiosRequestConfig): AxiosPromise<void>;
2651
+ /**
2652
+ * Returns the CSV emitted by the job — typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
2653
+ * @summary Download a job\'s CSV artifact
2654
+ * @param {string} id Job id
2655
+ * @param {*} [options] Override http request option.
2656
+ * @throws {RequiredError}
2657
+ */
2658
+ downloadArtifact(id: string, options?: RawAxiosRequestConfig): AxiosPromise<string>;
2659
+ /**
2660
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2661
+ * @summary Get one async job
2662
+ * @param {string} id Job id
2663
+ * @param {*} [options] Override http request option.
2664
+ * @throws {RequiredError}
2665
+ */
2666
+ get(id: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJob>;
2667
+ /**
2668
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2669
+ * @summary List async jobs
2670
+ * @param {Pageable} pageable
2671
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2672
+ * @param {*} [options] Override http request option.
2673
+ * @throws {RequiredError}
2674
+ */
2675
+ list(pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAsyncJob>;
2676
+ };
2677
+ /**
2678
+ * AdminJobsApi - object-oriented interface
2679
+ */
2680
+ export declare class AdminJobsApi extends BaseAPI {
2681
+ /**
2682
+ * 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.
2683
+ * @summary Request cancellation of an async job
2684
+ * @param {string} id Job id
2685
+ * @param {*} [options] Override http request option.
2686
+ * @throws {RequiredError}
2687
+ */
2688
+ cancel(id: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
2689
+ /**
2690
+ * Returns the CSV emitted by the job — typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
2691
+ * @summary Download a job\'s CSV artifact
2692
+ * @param {string} id Job id
2693
+ * @param {*} [options] Override http request option.
2694
+ * @throws {RequiredError}
2695
+ */
2696
+ downloadArtifact(id: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<string, any, {}>>;
2697
+ /**
2698
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
2699
+ * @summary Get one async job
2700
+ * @param {string} id Job id
2701
+ * @param {*} [options] Override http request option.
2702
+ * @throws {RequiredError}
2703
+ */
2704
+ get(id: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAsyncJob, any, {}>>;
2705
+ /**
2706
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
2707
+ * @summary List async jobs
2708
+ * @param {Pageable} pageable
2709
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
2710
+ * @param {*} [options] Override http request option.
2711
+ * @throws {RequiredError}
2712
+ */
2713
+ list(pageable: Pageable, status?: JobStatus | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAsyncJob, any, {}>>;
2714
+ }
2715
+ /**
2716
+ * AdminPlayersApi - axios parameter creator
2717
+ */
2718
+ export declare const AdminPlayersApiAxiosParamCreator: (configuration?: Configuration) => {
2719
+ /**
2720
+ * 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.
2721
+ * @summary Add an alt exemption
2722
+ * @param {string} uuid Player Minecraft UUID
2723
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2724
+ * @param {*} [options] Override http request option.
2725
+ * @throws {RequiredError}
2726
+ */
2727
+ addAltExemption: (uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2728
+ /**
2729
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
2730
+ * @summary Start a username backfill job
2731
+ * @param {*} [options] Override http request option.
2732
+ * @throws {RequiredError}
2733
+ */
2734
+ backfillUsernames: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2735
+ /**
2736
+ * 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.
2737
+ * @summary Bulk-revoke PROPAGATED links by source
2738
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2739
+ * @param {*} [options] Override http request option.
2740
+ * @throws {RequiredError}
2741
+ */
2742
+ bulkRevokePropagated: (adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2743
+ /**
2744
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2745
+ * @summary Create a staff note on a player
2746
+ * @param {string} uuid Player Minecraft UUID
2747
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2748
+ * @param {*} [options] Override http request option.
2749
+ * @throws {RequiredError}
2750
+ */
2751
+ createPlayerNote: (uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2752
+ /**
2753
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2754
+ * @summary Soft-delete a staff note
2755
+ * @param {string} uuid Player Minecraft UUID (routing only)
2756
+ * @param {number} noteId Note id
2757
+ * @param {*} [options] Override http request option.
2758
+ * @throws {RequiredError}
2759
+ */
2760
+ deletePlayerNote: (uuid: string, noteId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2761
+ /**
2762
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
2763
+ * @summary Alt-graph traversal rooted at a player
2764
+ * @param {string} uuid Player Minecraft UUID
2765
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
2766
+ * @param {*} [options] Override http request option.
2767
+ * @throws {RequiredError}
2768
+ */
2769
+ getAltGraph: (uuid: string, depth?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2770
+ /**
2771
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2772
+ * @summary Get player detail
2773
+ * @param {string} uuid Player Minecraft UUID
2774
+ * @param {*} [options] Override http request option.
2775
+ * @throws {RequiredError}
2776
+ */
2777
+ getPlayer: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2778
+ /**
2779
+ * 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.
2780
+ * @summary List a player\'s alt accounts
2781
+ * @param {string} uuid Player Minecraft UUID
2782
+ * @param {Pageable} pageable
2783
+ * @param {*} [options] Override http request option.
2784
+ * @throws {RequiredError}
2785
+ */
2786
+ getPlayerAlts: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2787
+ /**
2788
+ * 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.
2789
+ * @summary List a player\'s connection history
2790
+ * @param {string} uuid Player Minecraft UUID
2791
+ * @param {Pageable} pageable
2792
+ * @param {*} [options] Override http request option.
2793
+ * @throws {RequiredError}
2794
+ */
2795
+ getPlayerConnections: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2796
+ /**
2797
+ * 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.
2798
+ * @summary List a player\'s full punishment history
2799
+ * @param {string} uuid Player Minecraft UUID
2800
+ * @param {Pageable} pageable
2801
+ * @param {*} [options] Override http request option.
2802
+ * @throws {RequiredError}
2803
+ */
2804
+ getPlayerPunishments: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2805
+ /**
2806
+ * 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.
2807
+ * @summary Get a player\'s aggregate session stats
2808
+ * @param {string} uuid Player Minecraft UUID
2809
+ * @param {*} [options] Override http request option.
2810
+ * @throws {RequiredError}
2811
+ */
2812
+ getSessionStats: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2813
+ /**
2814
+ * 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.
2815
+ * @summary List a player\'s alt exemptions
2816
+ * @param {string} uuid Player Minecraft UUID
2817
+ * @param {Pageable} pageable
2818
+ * @param {*} [options] Override http request option.
2819
+ * @throws {RequiredError}
2820
+ */
2821
+ listAltExemptions: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2822
+ /**
2823
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
2824
+ * @summary List staff notes on a player
2825
+ * @param {string} uuid Player Minecraft UUID
2826
+ * @param {Pageable} pageable
2827
+ * @param {*} [options] Override http request option.
2828
+ * @throws {RequiredError}
2829
+ */
2830
+ listPlayerNotes: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2831
+ /**
2832
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
2833
+ * @summary List players
2834
+ * @param {Pageable} pageable
2835
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
2836
+ * @param {*} [options] Override http request option.
2837
+ * @throws {RequiredError}
2838
+ */
2839
+ listPlayers: (pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2840
+ /**
2841
+ * 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.
2842
+ * @summary List a player\'s session history
2843
+ * @param {string} uuid Player Minecraft UUID
2844
+ * @param {Pageable} pageable
2845
+ * @param {*} [options] Override http request option.
2846
+ * @throws {RequiredError}
2847
+ */
2848
+ listSessions: (uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2849
+ /**
2850
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
2851
+ * @summary Remove an alt exemption
2852
+ * @param {string} uuid Player Minecraft UUID
2853
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
2854
+ * @param {*} [options] Override http request option.
2855
+ * @throws {RequiredError}
2856
+ */
2857
+ removeAltExemption: (uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2858
+ /**
2859
+ * 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.
2860
+ * @summary Revoke a propagated punishment link
2861
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
2862
+ * @param {number} playerPunishmentId player_punishment row id
2863
+ * @param {*} [options] Override http request option.
2864
+ * @throws {RequiredError}
2865
+ */
2866
+ revokePropagatedLink: (uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2867
+ /**
2868
+ * 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.
2869
+ * @summary Toggle aggressive-mode immunity
2870
+ * @param {string} uuid Player Minecraft UUID
2871
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
2872
+ * @param {*} [options] Override http request option.
2873
+ * @throws {RequiredError}
2874
+ */
2875
+ setAggressiveModeImmunity: (uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2876
+ /**
2877
+ * 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.
2878
+ * @summary Trust factor breakdown for a player
2879
+ * @param {string} uuid Player Minecraft UUID
2880
+ * @param {*} [options] Override http request option.
2881
+ * @throws {RequiredError}
2882
+ */
2883
+ trustFactorBreakdown: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2884
+ /**
2885
+ * 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).
2886
+ * @summary Trust factor history for a player
2887
+ * @param {string} uuid Player Minecraft UUID
2888
+ * @param {number} [days] Window in days (default 30, max 365)
2889
+ * @param {*} [options] Override http request option.
2890
+ * @throws {RequiredError}
2891
+ */
2892
+ trustFactorHistory: (uuid: string, days?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
2893
+ };
2894
+ /**
2895
+ * AdminPlayersApi - functional programming interface
2896
+ */
2897
+ export declare const AdminPlayersApiFp: (configuration?: Configuration) => {
2898
+ /**
2899
+ * 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.
2900
+ * @summary Add an alt exemption
2901
+ * @param {string} uuid Player Minecraft UUID
2902
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
2903
+ * @param {*} [options] Override http request option.
2904
+ * @throws {RequiredError}
2905
+ */
2906
+ addAltExemption(uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2907
+ /**
2908
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
2909
+ * @summary Start a username backfill job
2910
+ * @param {*} [options] Override http request option.
2911
+ * @throws {RequiredError}
2912
+ */
2913
+ backfillUsernames(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJobStartResponse>>;
2914
+ /**
2915
+ * 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.
2916
+ * @summary Bulk-revoke PROPAGATED links by source
2917
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
2918
+ * @param {*} [options] Override http request option.
2919
+ * @throws {RequiredError}
2920
+ */
2921
+ bulkRevokePropagated(adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminBulkRevokeResponse>>;
2922
+ /**
2923
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
2924
+ * @summary Create a staff note on a player
2925
+ * @param {string} uuid Player Minecraft UUID
2926
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
2927
+ * @param {*} [options] Override http request option.
2928
+ * @throws {RequiredError}
2929
+ */
2930
+ createPlayerNote(uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerNote>>;
2931
+ /**
2932
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
2933
+ * @summary Soft-delete a staff note
2934
+ * @param {string} uuid Player Minecraft UUID (routing only)
2935
+ * @param {number} noteId Note id
2936
+ * @param {*} [options] Override http request option.
2937
+ * @throws {RequiredError}
2938
+ */
2939
+ deletePlayerNote(uuid: string, noteId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
2940
+ /**
2941
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
2942
+ * @summary Alt-graph traversal rooted at a player
2943
+ * @param {string} uuid Player Minecraft UUID
2944
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
2945
+ * @param {*} [options] Override http request option.
2946
+ * @throws {RequiredError}
2947
+ */
2948
+ getAltGraph(uuid: string, depth?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAltGraph>>;
2949
+ /**
2950
+ * Returns full detail for a single player including all known usernames and punishment scoring.
2951
+ * @summary Get player detail
2952
+ * @param {string} uuid Player Minecraft UUID
2953
+ * @param {*} [options] Override http request option.
2954
+ * @throws {RequiredError}
2955
+ */
2956
+ getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerDetailResponse>>;
2957
+ /**
2958
+ * 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.
2959
+ * @summary List a player\'s alt accounts
2960
+ * @param {string} uuid Player Minecraft UUID
2961
+ * @param {Pageable} pageable
2962
+ * @param {*} [options] Override http request option.
2963
+ * @throws {RequiredError}
2964
+ */
2965
+ getPlayerAlts(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAltAccount>>;
2966
+ /**
2967
+ * 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.
2968
+ * @summary List a player\'s connection history
2969
+ * @param {string} uuid Player Minecraft UUID
2970
+ * @param {Pageable} pageable
2971
+ * @param {*} [options] Override http request option.
2972
+ * @throws {RequiredError}
2973
+ */
2974
+ getPlayerConnections(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminDashboardConnectionResponse>>;
2975
+ /**
2976
+ * 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.
2977
+ * @summary List a player\'s full punishment history
2978
+ * @param {string} uuid Player Minecraft UUID
2979
+ * @param {Pageable} pageable
2980
+ * @param {*} [options] Override http request option.
2981
+ * @throws {RequiredError}
2982
+ */
2983
+ getPlayerPunishments(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerPunishmentResponse>>;
2984
+ /**
2985
+ * 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.
2986
+ * @summary Get a player\'s aggregate session stats
2987
+ * @param {string} uuid Player Minecraft UUID
2988
+ * @param {*} [options] Override http request option.
2989
+ * @throws {RequiredError}
2990
+ */
2991
+ getSessionStats(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerSessionStats>>;
2992
+ /**
2993
+ * 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.
2994
+ * @summary List a player\'s alt exemptions
2995
+ * @param {string} uuid Player Minecraft UUID
2996
+ * @param {Pageable} pageable
2997
+ * @param {*} [options] Override http request option.
2998
+ * @throws {RequiredError}
2999
+ */
3000
+ listAltExemptions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminAltExemption>>;
3001
+ /**
3002
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3003
+ * @summary List staff notes on a player
3004
+ * @param {string} uuid Player Minecraft UUID
3005
+ * @param {Pageable} pageable
3006
+ * @param {*} [options] Override http request option.
3007
+ * @throws {RequiredError}
3008
+ */
3009
+ listPlayerNotes(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerNote>>;
3010
+ /**
3011
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3012
+ * @summary List players
3013
+ * @param {Pageable} pageable
3014
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3015
+ * @param {*} [options] Override http request option.
3016
+ * @throws {RequiredError}
3017
+ */
3018
+ listPlayers(pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerSummary>>;
3019
+ /**
3020
+ * 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.
3021
+ * @summary List a player\'s session history
3022
+ * @param {string} uuid Player Minecraft UUID
3023
+ * @param {Pageable} pageable
3024
+ * @param {*} [options] Override http request option.
3025
+ * @throws {RequiredError}
3026
+ */
3027
+ listSessions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerSession>>;
3028
+ /**
3029
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3030
+ * @summary Remove an alt exemption
3031
+ * @param {string} uuid Player Minecraft UUID
3032
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3033
+ * @param {*} [options] Override http request option.
3034
+ * @throws {RequiredError}
3035
+ */
3036
+ removeAltExemption(uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
3037
+ /**
3038
+ * 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.
3039
+ * @summary Revoke a propagated punishment link
3040
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3041
+ * @param {number} playerPunishmentId player_punishment row id
3042
+ * @param {*} [options] Override http request option.
3043
+ * @throws {RequiredError}
3044
+ */
3045
+ revokePropagatedLink(uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
3046
+ /**
3047
+ * 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.
3048
+ * @summary Toggle aggressive-mode immunity
3049
+ * @param {string} uuid Player Minecraft UUID
3050
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
3051
+ * @param {*} [options] Override http request option.
3052
+ * @throws {RequiredError}
3053
+ */
3054
+ setAggressiveModeImmunity(uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerDetailResponse>>;
3055
+ /**
3056
+ * 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.
3057
+ * @summary Trust factor breakdown for a player
3058
+ * @param {string} uuid Player Minecraft UUID
3059
+ * @param {*} [options] Override http request option.
3060
+ * @throws {RequiredError}
3061
+ */
3062
+ trustFactorBreakdown(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminTrustFactorBreakdown>>;
3063
+ /**
3064
+ * 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).
3065
+ * @summary Trust factor history for a player
3066
+ * @param {string} uuid Player Minecraft UUID
3067
+ * @param {number} [days] Window in days (default 30, max 365)
3068
+ * @param {*} [options] Override http request option.
3069
+ * @throws {RequiredError}
3070
+ */
3071
+ trustFactorHistory(uuid: string, days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminTrustFactorHistoryEntry>>;
3072
+ };
3073
+ /**
3074
+ * AdminPlayersApi - factory interface
3075
+ */
3076
+ export declare const AdminPlayersApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
3077
+ /**
3078
+ * 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.
3079
+ * @summary Add an alt exemption
3080
+ * @param {string} uuid Player Minecraft UUID
3081
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
3082
+ * @param {*} [options] Override http request option.
3083
+ * @throws {RequiredError}
3084
+ */
3085
+ addAltExemption(uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3086
+ /**
3087
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
3088
+ * @summary Start a username backfill job
3089
+ * @param {*} [options] Override http request option.
3090
+ * @throws {RequiredError}
3091
+ */
3092
+ backfillUsernames(options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse>;
3093
+ /**
3094
+ * 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.
3095
+ * @summary Bulk-revoke PROPAGATED links by source
3096
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
3097
+ * @param {*} [options] Override http request option.
3098
+ * @throws {RequiredError}
3099
+ */
3100
+ bulkRevokePropagated(adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminBulkRevokeResponse>;
3101
+ /**
3102
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
3103
+ * @summary Create a staff note on a player
3104
+ * @param {string} uuid Player Minecraft UUID
3105
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
3106
+ * @param {*} [options] Override http request option.
3107
+ * @throws {RequiredError}
3108
+ */
3109
+ createPlayerNote(uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerNote>;
3110
+ /**
3111
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
3112
+ * @summary Soft-delete a staff note
3113
+ * @param {string} uuid Player Minecraft UUID (routing only)
3114
+ * @param {number} noteId Note id
3115
+ * @param {*} [options] Override http request option.
3116
+ * @throws {RequiredError}
3117
+ */
3118
+ deletePlayerNote(uuid: string, noteId: number, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3119
+ /**
3120
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
3121
+ * @summary Alt-graph traversal rooted at a player
3122
+ * @param {string} uuid Player Minecraft UUID
3123
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
3124
+ * @param {*} [options] Override http request option.
3125
+ * @throws {RequiredError}
3126
+ */
3127
+ getAltGraph(uuid: string, depth?: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminAltGraph>;
3128
+ /**
3129
+ * Returns full detail for a single player including all known usernames and punishment scoring.
3130
+ * @summary Get player detail
3131
+ * @param {string} uuid Player Minecraft UUID
3132
+ * @param {*} [options] Override http request option.
3133
+ * @throws {RequiredError}
3134
+ */
3135
+ getPlayer(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerDetailResponse>;
3136
+ /**
3137
+ * 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.
3138
+ * @summary List a player\'s alt accounts
3139
+ * @param {string} uuid Player Minecraft UUID
3140
+ * @param {Pageable} pageable
3141
+ * @param {*} [options] Override http request option.
3142
+ * @throws {RequiredError}
3143
+ */
3144
+ getPlayerAlts(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAltAccount>;
3145
+ /**
3146
+ * 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.
3147
+ * @summary List a player\'s connection history
3148
+ * @param {string} uuid Player Minecraft UUID
3149
+ * @param {Pageable} pageable
3150
+ * @param {*} [options] Override http request option.
3151
+ * @throws {RequiredError}
3152
+ */
3153
+ getPlayerConnections(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminDashboardConnectionResponse>;
3154
+ /**
3155
+ * 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.
3156
+ * @summary List a player\'s full punishment history
3157
+ * @param {string} uuid Player Minecraft UUID
3158
+ * @param {Pageable} pageable
3159
+ * @param {*} [options] Override http request option.
3160
+ * @throws {RequiredError}
3161
+ */
3162
+ getPlayerPunishments(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerPunishmentResponse>;
3163
+ /**
3164
+ * 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.
3165
+ * @summary Get a player\'s aggregate session stats
3166
+ * @param {string} uuid Player Minecraft UUID
3167
+ * @param {*} [options] Override http request option.
3168
+ * @throws {RequiredError}
3169
+ */
3170
+ getSessionStats(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerSessionStats>;
3171
+ /**
3172
+ * 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.
3173
+ * @summary List a player\'s alt exemptions
3174
+ * @param {string} uuid Player Minecraft UUID
3175
+ * @param {Pageable} pageable
3176
+ * @param {*} [options] Override http request option.
3177
+ * @throws {RequiredError}
3178
+ */
3179
+ listAltExemptions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminAltExemption>;
3180
+ /**
3181
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3182
+ * @summary List staff notes on a player
3183
+ * @param {string} uuid Player Minecraft UUID
3184
+ * @param {Pageable} pageable
3185
+ * @param {*} [options] Override http request option.
3186
+ * @throws {RequiredError}
3187
+ */
3188
+ listPlayerNotes(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerNote>;
3189
+ /**
3190
+ * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
3191
+ * @summary List players
3192
+ * @param {Pageable} pageable
3193
+ * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
3194
+ * @param {*} [options] Override http request option.
3195
+ * @throws {RequiredError}
3196
+ */
3197
+ listPlayers(pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSummary>;
3198
+ /**
3199
+ * 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.
3200
+ * @summary List a player\'s session history
3201
+ * @param {string} uuid Player Minecraft UUID
3202
+ * @param {Pageable} pageable
3203
+ * @param {*} [options] Override http request option.
3204
+ * @throws {RequiredError}
3205
+ */
3206
+ listSessions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSession>;
3207
+ /**
3208
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3209
+ * @summary Remove an alt exemption
3210
+ * @param {string} uuid Player Minecraft UUID
3211
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
3212
+ * @param {*} [options] Override http request option.
3213
+ * @throws {RequiredError}
3214
+ */
3215
+ removeAltExemption(uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3216
+ /**
3217
+ * 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.
3218
+ * @summary Revoke a propagated punishment link
3219
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3220
+ * @param {number} playerPunishmentId player_punishment row id
3221
+ * @param {*} [options] Override http request option.
3222
+ * @throws {RequiredError}
3223
+ */
3224
+ revokePropagatedLink(uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3225
+ /**
3226
+ * 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.
3227
+ * @summary Toggle aggressive-mode immunity
3228
+ * @param {string} uuid Player Minecraft UUID
3229
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
3230
+ * @param {*} [options] Override http request option.
3231
+ * @throws {RequiredError}
3232
+ */
3233
+ setAggressiveModeImmunity(uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerDetailResponse>;
3234
+ /**
3235
+ * 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.
3236
+ * @summary Trust factor breakdown for a player
3237
+ * @param {string} uuid Player Minecraft UUID
3238
+ * @param {*} [options] Override http request option.
3239
+ * @throws {RequiredError}
3240
+ */
3241
+ trustFactorBreakdown(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminTrustFactorBreakdown>;
3242
+ /**
3243
+ * 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).
3244
+ * @summary Trust factor history for a player
3245
+ * @param {string} uuid Player Minecraft UUID
3246
+ * @param {number} [days] Window in days (default 30, max 365)
3247
+ * @param {*} [options] Override http request option.
3248
+ * @throws {RequiredError}
3249
+ */
3250
+ trustFactorHistory(uuid: string, days?: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminTrustFactorHistoryEntry>;
3251
+ };
3252
+ /**
3253
+ * AdminPlayersApi - object-oriented interface
3254
+ */
3255
+ export declare class AdminPlayersApi extends BaseAPI {
3256
+ /**
3257
+ * 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.
3258
+ * @summary Add an alt exemption
3259
+ * @param {string} uuid Player Minecraft UUID
3260
+ * @param {AdminCreateAltExemptionRequest} adminCreateAltExemptionRequest
3261
+ * @param {*} [options] Override http request option.
3262
+ * @throws {RequiredError}
3263
+ */
3264
+ addAltExemption(uuid: string, adminCreateAltExemptionRequest: AdminCreateAltExemptionRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
3265
+ /**
3266
+ * Submits an async job that walks every player row whose username is NULL and calls the Mojang profile API to resolve it. The job upserts both the player.username column and a player_username_history row. Returns immediately with a job id — poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel. The final Admin_BackfillUsernamesResponse (processed/succeeded/failed counts) lands in the job\'s result_payload on COMPLETED. Mojang rate-limits at ~1 req/sec; a backfill of many rows can run for a while — cancel is honoured between rows.
3267
+ * @summary Start a username backfill job
3268
+ * @param {*} [options] Override http request option.
3269
+ * @throws {RequiredError}
3270
+ */
3271
+ backfillUsernames(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAsyncJobStartResponse, any, {}>>;
3272
+ /**
3273
+ * 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.
3274
+ * @summary Bulk-revoke PROPAGATED links by source
3275
+ * @param {AdminBulkRevokeRequest} adminBulkRevokeRequest
3276
+ * @param {*} [options] Override http request option.
3277
+ * @throws {RequiredError}
3278
+ */
3279
+ bulkRevokePropagated(adminBulkRevokeRequest: AdminBulkRevokeRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminBulkRevokeResponse, any, {}>>;
3280
+ /**
3281
+ * Appends a free-form note (1–4000 chars). Notes are not editable — to revise, post a new one and soft-delete the old.
3282
+ * @summary Create a staff note on a player
3283
+ * @param {string} uuid Player Minecraft UUID
3284
+ * @param {AdminCreatePlayerNoteRequest} adminCreatePlayerNoteRequest
3285
+ * @param {*} [options] Override http request option.
3286
+ * @throws {RequiredError}
3287
+ */
3288
+ createPlayerNote(uuid: string, adminCreatePlayerNoteRequest: AdminCreatePlayerNoteRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerNote, any, {}>>;
3289
+ /**
3290
+ * Marks the note as deleted but keeps the row for audit. Idempotent — 404 if already deleted or unknown id.
3291
+ * @summary Soft-delete a staff note
3292
+ * @param {string} uuid Player Minecraft UUID (routing only)
3293
+ * @param {number} noteId Note id
3294
+ * @param {*} [options] Override http request option.
3295
+ * @throws {RequiredError}
3296
+ */
3297
+ deletePlayerNote(uuid: string, noteId: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
3298
+ /**
3299
+ * Returns the connection-shared player graph reachable from this player within {depth} hops. Mirrors the propagation walk used by ALT_PROPAGATION_SWEEP — promiscuous (likely shared-NAT) connections are pruned, alt-exemption rows cut the graph at exempted players. Depth is clamped server-side at 5. Used by the admin Graph tab to render an interactive explorer.
3300
+ * @summary Alt-graph traversal rooted at a player
3301
+ * @param {string} uuid Player Minecraft UUID
3302
+ * @param {number} [depth] Hop depth to walk. 1&#x3D;direct alts only; 5&#x3D;full sticky-trap radius. Default 2.
3303
+ * @param {*} [options] Override http request option.
3304
+ * @throws {RequiredError}
3305
+ */
3306
+ getAltGraph(uuid: string, depth?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAltGraph, any, {}>>;
3307
+ /**
3308
+ * Returns full detail for a single player including all known usernames and punishment scoring.
3309
+ * @summary Get player detail
3310
+ * @param {string} uuid Player Minecraft UUID
1260
3311
  * @param {*} [options] Override http request option.
1261
3312
  * @throws {RequiredError}
1262
3313
  */
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, {}>>;
3314
+ getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerDetailResponse, any, {}>>;
1264
3315
  /**
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
3316
+ * 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.
3317
+ * @summary List a player\'s alt accounts
3318
+ * @param {string} uuid Player Minecraft UUID
3319
+ * @param {Pageable} pageable
1269
3320
  * @param {*} [options] Override http request option.
1270
3321
  * @throws {RequiredError}
1271
3322
  */
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) => {
3323
+ getPlayerAlts(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAltAccount, any, {}>>;
1278
3324
  /**
1279
- * Returns aggregate counts for clients, connections, and players in the system.
1280
- * @summary Get dashboard statistics
3325
+ * 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.
3326
+ * @summary List a player\'s connection history
3327
+ * @param {string} uuid Player Minecraft UUID
3328
+ * @param {Pageable} pageable
1281
3329
  * @param {*} [options] Override http request option.
1282
3330
  * @throws {RequiredError}
1283
3331
  */
1284
- dashboardStats: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1285
- };
1286
- /**
1287
- * AdminDashboardApi - functional programming interface
1288
- */
1289
- export declare const AdminDashboardApiFp: (configuration?: Configuration) => {
3332
+ getPlayerConnections(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminDashboardConnectionResponse, any, {}>>;
1290
3333
  /**
1291
- * Returns aggregate counts for clients, connections, and players in the system.
1292
- * @summary Get dashboard statistics
3334
+ * 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.
3335
+ * @summary List a player\'s full punishment history
3336
+ * @param {string} uuid Player Minecraft UUID
3337
+ * @param {Pageable} pageable
1293
3338
  * @param {*} [options] Override http request option.
1294
3339
  * @throws {RequiredError}
1295
3340
  */
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) => {
3341
+ getPlayerPunishments(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerPunishmentResponse, any, {}>>;
1302
3342
  /**
1303
- * Returns aggregate counts for clients, connections, and players in the system.
1304
- * @summary Get dashboard statistics
3343
+ * 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.
3344
+ * @summary Get a player\'s aggregate session stats
3345
+ * @param {string} uuid Player Minecraft UUID
1305
3346
  * @param {*} [options] Override http request option.
1306
3347
  * @throws {RequiredError}
1307
3348
  */
1308
- dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats>;
1309
- };
1310
- /**
1311
- * AdminDashboardApi - object-oriented interface
1312
- */
1313
- export declare class AdminDashboardApi extends BaseAPI {
3349
+ getSessionStats(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerSessionStats, any, {}>>;
1314
3350
  /**
1315
- * Returns aggregate counts for clients, connections, and players in the system.
1316
- * @summary Get dashboard statistics
3351
+ * 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.
3352
+ * @summary List a player\'s alt exemptions
3353
+ * @param {string} uuid Player Minecraft UUID
3354
+ * @param {Pageable} pageable
1317
3355
  * @param {*} [options] Override http request option.
1318
3356
  * @throws {RequiredError}
1319
3357
  */
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) => {
3358
+ listAltExemptions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminAltExemption, any, {}>>;
1326
3359
  /**
1327
- * Returns full detail for a single player including all known usernames and punishment scoring.
1328
- * @summary Get player detail
3360
+ * Paginated, newest first. Soft-deleted notes are included; the UI styles them as struck-through.
3361
+ * @summary List staff notes on a player
1329
3362
  * @param {string} uuid Player Minecraft UUID
3363
+ * @param {Pageable} pageable
1330
3364
  * @param {*} [options] Override http request option.
1331
3365
  * @throws {RequiredError}
1332
3366
  */
1333
- getPlayer: (uuid: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3367
+ listPlayerNotes(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerNote, any, {}>>;
1334
3368
  /**
1335
3369
  * Returns up to 500 players ordered by most recently seen. Optionally filter by UUID or username substring.
1336
3370
  * @summary List players
1337
- * @param {number} page Page number (1-indexed)
1338
- * @param {number} limit Page size
3371
+ * @param {Pageable} pageable
1339
3372
  * @param {string | null} [search] Optional search string matched against UUID or username (case-insensitive substring)
1340
3373
  * @param {*} [options] Override http request option.
1341
3374
  * @throws {RequiredError}
1342
3375
  */
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) => {
3376
+ listPlayers(pageable: Pageable, search?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerSummary, any, {}>>;
1349
3377
  /**
1350
- * Returns full detail for a single player including all known usernames and punishment scoring.
1351
- * @summary Get player detail
3378
+ * 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.
3379
+ * @summary List a player\'s session history
1352
3380
  * @param {string} uuid Player Minecraft UUID
3381
+ * @param {Pageable} pageable
1353
3382
  * @param {*} [options] Override http request option.
1354
3383
  * @throws {RequiredError}
1355
3384
  */
1356
- getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPlayerDetailResponse>>;
3385
+ listSessions(uuid: string, pageable: Pageable, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerSession, any, {}>>;
1357
3386
  /**
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)
3387
+ * Delete the symmetric exemption pair between two players. Both directions are removed.
3388
+ * @summary Remove an alt exemption
3389
+ * @param {string} uuid Player Minecraft UUID
3390
+ * @param {string} altPlayerUuid UUID of the alt to remove from exemption
1363
3391
  * @param {*} [options] Override http request option.
1364
3392
  * @throws {RequiredError}
1365
3393
  */
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) => {
3394
+ removeAltExemption(uuid: string, altPlayerUuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1372
3395
  /**
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
3396
+ * 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.
3397
+ * @summary Revoke a propagated punishment link
3398
+ * @param {string} uuid Player Minecraft UUID (for routing/audit context; the link id is the source of truth)
3399
+ * @param {number} playerPunishmentId player_punishment row id
1376
3400
  * @param {*} [options] Override http request option.
1377
3401
  * @throws {RequiredError}
1378
3402
  */
1379
- getPlayer(uuid: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminPlayerDetailResponse>;
3403
+ revokePropagatedLink(uuid: string, playerPunishmentId: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1380
3404
  /**
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)
3405
+ * 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.
3406
+ * @summary Toggle aggressive-mode immunity
3407
+ * @param {string} uuid Player Minecraft UUID
3408
+ * @param {AdminSetAggressiveModeImmunityRequest} adminSetAggressiveModeImmunityRequest
1386
3409
  * @param {*} [options] Override http request option.
1387
3410
  * @throws {RequiredError}
1388
3411
  */
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 {
3412
+ setAggressiveModeImmunity(uuid: string, adminSetAggressiveModeImmunityRequest: AdminSetAggressiveModeImmunityRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerDetailResponse, any, {}>>;
1395
3413
  /**
1396
- * Returns full detail for a single player including all known usernames and punishment scoring.
1397
- * @summary Get player detail
3414
+ * 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.
3415
+ * @summary Trust factor breakdown for a player
1398
3416
  * @param {string} uuid Player Minecraft UUID
1399
3417
  * @param {*} [options] Override http request option.
1400
3418
  * @throws {RequiredError}
1401
3419
  */
1402
- getPlayer(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPlayerDetailResponse, any, {}>>;
3420
+ trustFactorBreakdown(uuid: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminTrustFactorBreakdown, any, {}>>;
1403
3421
  /**
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)
3422
+ * 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).
3423
+ * @summary Trust factor history for a player
3424
+ * @param {string} uuid Player Minecraft UUID
3425
+ * @param {number} [days] Window in days (default 30, max 365)
1409
3426
  * @param {*} [options] Override http request option.
1410
3427
  * @throws {RequiredError}
1411
3428
  */
1412
- listPlayers(page: number, limit: number, search?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPagedPlayerResponse, any, {}>>;
3429
+ trustFactorHistory(uuid: string, days?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminTrustFactorHistoryEntry, any, {}>>;
1413
3430
  }
1414
3431
  /**
1415
3432
  * AdminPunishmentsApi - axios parameter creator
@@ -1431,21 +3448,44 @@ export declare const AdminPunishmentsApiAxiosParamCreator: (configuration?: Conf
1431
3448
  * @throws {RequiredError}
1432
3449
  */
1433
3450
  createDraft: (adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3451
+ /**
3452
+ * 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.
3453
+ * @summary Edit a punishment
3454
+ * @param {number} id Punishment id
3455
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3456
+ * @param {*} [options] Override http request option.
3457
+ * @throws {RequiredError}
3458
+ */
3459
+ editPunishment: (id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3460
+ /**
3461
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3462
+ * @summary List a punishment\'s current participants
3463
+ * @param {number} id Punishment id
3464
+ * @param {*} [options] Override http request option.
3465
+ * @throws {RequiredError}
3466
+ */
3467
+ getPunishmentTargets: (id: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1434
3468
  /**
1435
3469
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1436
3470
  * @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)
3471
+ * @param {Pageable} pageable
3472
+ * @param {string | null} [uuid]
3473
+ * @param {string | null} [username]
3474
+ * @param {string | null} [ipAddress]
3475
+ * @param {Array<PunishmentType> | null} [type]
3476
+ * @param {number | null} [issuedAfter]
3477
+ * @param {number | null} [issuedBefore]
1445
3478
  * @param {*} [options] Override http request option.
1446
3479
  * @throws {RequiredError}
1447
3480
  */
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>;
3481
+ 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>;
3482
+ /**
3483
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3484
+ * @summary Start an alt-propagation sweep job
3485
+ * @param {*} [options] Override http request option.
3486
+ * @throws {RequiredError}
3487
+ */
3488
+ propagationSweep: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1449
3489
  /**
1450
3490
  * Search for players by UUID or username, or look up all players associated with an IP address.
1451
3491
  * @summary Search punishment targets
@@ -1475,21 +3515,44 @@ export declare const AdminPunishmentsApiFp: (configuration?: Configuration) => {
1475
3515
  * @throws {RequiredError}
1476
3516
  */
1477
3517
  createDraft(adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPunishmentDraftResponse>>;
3518
+ /**
3519
+ * 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.
3520
+ * @summary Edit a punishment
3521
+ * @param {number} id Punishment id
3522
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3523
+ * @param {*} [options] Override http request option.
3524
+ * @throws {RequiredError}
3525
+ */
3526
+ editPunishment(id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
3527
+ /**
3528
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3529
+ * @summary List a punishment\'s current participants
3530
+ * @param {number} id Punishment id
3531
+ * @param {*} [options] Override http request option.
3532
+ * @throws {RequiredError}
3533
+ */
3534
+ getPunishmentTargets(id: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminPunishmentTargets>>;
1478
3535
  /**
1479
3536
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1480
3537
  * @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)
3538
+ * @param {Pageable} pageable
3539
+ * @param {string | null} [uuid]
3540
+ * @param {string | null} [username]
3541
+ * @param {string | null} [ipAddress]
3542
+ * @param {Array<PunishmentType> | null} [type]
3543
+ * @param {number | null} [issuedAfter]
3544
+ * @param {number | null} [issuedBefore]
3545
+ * @param {*} [options] Override http request option.
3546
+ * @throws {RequiredError}
3547
+ */
3548
+ 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>>;
3549
+ /**
3550
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3551
+ * @summary Start an alt-propagation sweep job
1489
3552
  * @param {*} [options] Override http request option.
1490
3553
  * @throws {RequiredError}
1491
3554
  */
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>>;
3555
+ propagationSweep(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJobStartResponse>>;
1493
3556
  /**
1494
3557
  * Search for players by UUID or username, or look up all players associated with an IP address.
1495
3558
  * @summary Search punishment targets
@@ -1519,21 +3582,44 @@ export declare const AdminPunishmentsApiFactory: (configuration?: Configuration,
1519
3582
  * @throws {RequiredError}
1520
3583
  */
1521
3584
  createDraft(adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminPunishmentDraftResponse>;
3585
+ /**
3586
+ * 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.
3587
+ * @summary Edit a punishment
3588
+ * @param {number} id Punishment id
3589
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3590
+ * @param {*} [options] Override http request option.
3591
+ * @throws {RequiredError}
3592
+ */
3593
+ editPunishment(id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3594
+ /**
3595
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3596
+ * @summary List a punishment\'s current participants
3597
+ * @param {number} id Punishment id
3598
+ * @param {*} [options] Override http request option.
3599
+ * @throws {RequiredError}
3600
+ */
3601
+ getPunishmentTargets(id: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminPunishmentTargets>;
1522
3602
  /**
1523
3603
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1524
3604
  * @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)
3605
+ * @param {Pageable} pageable
3606
+ * @param {string | null} [uuid]
3607
+ * @param {string | null} [username]
3608
+ * @param {string | null} [ipAddress]
3609
+ * @param {Array<PunishmentType> | null} [type]
3610
+ * @param {number | null} [issuedAfter]
3611
+ * @param {number | null} [issuedBefore]
1533
3612
  * @param {*} [options] Override http request option.
1534
3613
  * @throws {RequiredError}
1535
3614
  */
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>;
3615
+ 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>;
3616
+ /**
3617
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3618
+ * @summary Start an alt-propagation sweep job
3619
+ * @param {*} [options] Override http request option.
3620
+ * @throws {RequiredError}
3621
+ */
3622
+ propagationSweep(options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse>;
1537
3623
  /**
1538
3624
  * Search for players by UUID or username, or look up all players associated with an IP address.
1539
3625
  * @summary Search punishment targets
@@ -1563,21 +3649,44 @@ export declare class AdminPunishmentsApi extends BaseAPI {
1563
3649
  * @throws {RequiredError}
1564
3650
  */
1565
3651
  createDraft(adminCreatePunishmentDraftRequest: AdminCreatePunishmentDraftRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPunishmentDraftResponse, any, {}>>;
3652
+ /**
3653
+ * 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.
3654
+ * @summary Edit a punishment
3655
+ * @param {number} id Punishment id
3656
+ * @param {AdminUpdatePunishmentRequest} adminUpdatePunishmentRequest
3657
+ * @param {*} [options] Override http request option.
3658
+ * @throws {RequiredError}
3659
+ */
3660
+ editPunishment(id: number, adminUpdatePunishmentRequest: AdminUpdatePunishmentRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
3661
+ /**
3662
+ * Returns the active DIRECT player_punishment UUIDs and the live connection_punishment IPs for a punishment. Used by the admin edit dialog to render the editable participant list. PROPAGATED links are excluded — they\'re an enforcement detail, not part of \'who the admin attached to this punishment\'.
3663
+ * @summary List a punishment\'s current participants
3664
+ * @param {number} id Punishment id
3665
+ * @param {*} [options] Override http request option.
3666
+ * @throws {RequiredError}
3667
+ */
3668
+ getPunishmentTargets(id: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPunishmentTargets, any, {}>>;
1566
3669
  /**
1567
3670
  * Returns a paginated list of punishments with optional filtering by player UUID, username, IP address, type, and date range.
1568
3671
  * @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)
3672
+ * @param {Pageable} pageable
3673
+ * @param {string | null} [uuid]
3674
+ * @param {string | null} [username]
3675
+ * @param {string | null} [ipAddress]
3676
+ * @param {Array<PunishmentType> | null} [type]
3677
+ * @param {number | null} [issuedAfter]
3678
+ * @param {number | null} [issuedBefore]
3679
+ * @param {*} [options] Override http request option.
3680
+ * @throws {RequiredError}
3681
+ */
3682
+ 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, {}>>;
3683
+ /**
3684
+ * Submits an async job that walks every player and re-runs the aggressive-mode propagation logic (tier-1 own-IP plus tier-2 alt-driven). Useful after toggling aggressive-mode on, or after a propagation-rule change, to backfill PROPAGATED player_punishment rows that would otherwise only appear on each player\'s next login. Idempotent — ON CONFLICT DO NOTHING. Returns immediately with a job id; poll GET /admin/job/{id} for progress and DELETE /admin/job/{id} to cancel.
3685
+ * @summary Start an alt-propagation sweep job
1577
3686
  * @param {*} [options] Override http request option.
1578
3687
  * @throws {RequiredError}
1579
3688
  */
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, {}>>;
3689
+ propagationSweep(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminAsyncJobStartResponse, any, {}>>;
1581
3690
  /**
1582
3691
  * Search for players by UUID or username, or look up all players associated with an IP address.
1583
3692
  * @summary Search punishment targets
@@ -1587,6 +3696,102 @@ export declare class AdminPunishmentsApi extends BaseAPI {
1587
3696
  */
1588
3697
  searchTargets(q: string, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminPunishmentSearchResponse, any, {}>>;
1589
3698
  }
3699
+ /**
3700
+ * AdminReportsApi - axios parameter creator
3701
+ */
3702
+ export declare const AdminReportsApiAxiosParamCreator: (configuration?: Configuration) => {
3703
+ /**
3704
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3705
+ * @summary List reports
3706
+ * @param {Pageable} pageable
3707
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3708
+ * @param {boolean} [openOnly]
3709
+ * @param {*} [options] Override http request option.
3710
+ * @throws {RequiredError}
3711
+ */
3712
+ list1: (pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3713
+ /**
3714
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3715
+ * @summary Resolve a report
3716
+ * @param {number} id Report id
3717
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3718
+ * @param {*} [options] Override http request option.
3719
+ * @throws {RequiredError}
3720
+ */
3721
+ resolve: (id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3722
+ };
3723
+ /**
3724
+ * AdminReportsApi - functional programming interface
3725
+ */
3726
+ export declare const AdminReportsApiFp: (configuration?: Configuration) => {
3727
+ /**
3728
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3729
+ * @summary List reports
3730
+ * @param {Pageable} pageable
3731
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3732
+ * @param {boolean} [openOnly]
3733
+ * @param {*} [options] Override http request option.
3734
+ * @throws {RequiredError}
3735
+ */
3736
+ list1(pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PageAdminPlayerReport>>;
3737
+ /**
3738
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3739
+ * @summary Resolve a report
3740
+ * @param {number} id Report id
3741
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3742
+ * @param {*} [options] Override http request option.
3743
+ * @throws {RequiredError}
3744
+ */
3745
+ resolve(id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
3746
+ };
3747
+ /**
3748
+ * AdminReportsApi - factory interface
3749
+ */
3750
+ export declare const AdminReportsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
3751
+ /**
3752
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3753
+ * @summary List reports
3754
+ * @param {Pageable} pageable
3755
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3756
+ * @param {boolean} [openOnly]
3757
+ * @param {*} [options] Override http request option.
3758
+ * @throws {RequiredError}
3759
+ */
3760
+ list1(pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerReport>;
3761
+ /**
3762
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3763
+ * @summary Resolve a report
3764
+ * @param {number} id Report id
3765
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3766
+ * @param {*} [options] Override http request option.
3767
+ * @throws {RequiredError}
3768
+ */
3769
+ resolve(id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
3770
+ };
3771
+ /**
3772
+ * AdminReportsApi - object-oriented interface
3773
+ */
3774
+ export declare class AdminReportsApi extends BaseAPI {
3775
+ /**
3776
+ * Paginated, newest first. Use openOnly=true to see the triage queue; reportedUuid filters to one player.
3777
+ * @summary List reports
3778
+ * @param {Pageable} pageable
3779
+ * @param {string | null} [reportedUuid] Filter to reports targeting this player UUID
3780
+ * @param {boolean} [openOnly]
3781
+ * @param {*} [options] Override http request option.
3782
+ * @throws {RequiredError}
3783
+ */
3784
+ list1(pageable: Pageable, reportedUuid?: string | null, openOnly?: boolean, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PageAdminPlayerReport, any, {}>>;
3785
+ /**
3786
+ * Marks the report resolved with the staff member\'s note. 404 if already resolved or unknown id.
3787
+ * @summary Resolve a report
3788
+ * @param {number} id Report id
3789
+ * @param {AdminResolveReportRequest} adminResolveReportRequest
3790
+ * @param {*} [options] Override http request option.
3791
+ * @throws {RequiredError}
3792
+ */
3793
+ resolve(id: number, adminResolveReportRequest: AdminResolveReportRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
3794
+ }
1590
3795
  /**
1591
3796
  * AuthenticationApi - axios parameter creator
1592
3797
  */
@@ -1746,13 +3951,13 @@ export declare const ChatApiAxiosParamCreator: (configuration?: Configuration) =
1746
3951
  /**
1747
3952
  * 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
3953
  * @summary Get chat history
1749
- * @param {number} limit Maximum number of messages to return (1–100)
1750
3954
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1751
3955
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
3956
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1752
3957
  * @param {*} [options] Override http request option.
1753
3958
  * @throws {RequiredError}
1754
3959
  */
1755
- history: (limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
3960
+ history: (sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1756
3961
  /**
1757
3962
  * 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
3963
  * @summary Ingest a chat message
@@ -1769,13 +3974,13 @@ export declare const ChatApiFp: (configuration?: Configuration) => {
1769
3974
  /**
1770
3975
  * 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
3976
  * @summary Get chat history
1772
- * @param {number} limit Maximum number of messages to return (1–100)
1773
3977
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1774
3978
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
3979
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1775
3980
  * @param {*} [options] Override http request option.
1776
3981
  * @throws {RequiredError}
1777
3982
  */
1778
- history(limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ChatMessageDTO>>>;
3983
+ history(sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ChatMessageDTO>>>;
1779
3984
  /**
1780
3985
  * 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
3986
  * @summary Ingest a chat message
@@ -1792,13 +3997,13 @@ export declare const ChatApiFactory: (configuration?: Configuration, basePath?:
1792
3997
  /**
1793
3998
  * 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
3999
  * @summary Get chat history
1795
- * @param {number} limit Maximum number of messages to return (1–100)
1796
4000
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1797
4001
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4002
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1798
4003
  * @param {*} [options] Override http request option.
1799
4004
  * @throws {RequiredError}
1800
4005
  */
1801
- history(limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<ChatMessageDTO>>;
4006
+ history(sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<ChatMessageDTO>>;
1802
4007
  /**
1803
4008
  * 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
4009
  * @summary Ingest a chat message
@@ -1815,13 +4020,13 @@ export declare class ChatApi extends BaseAPI {
1815
4020
  /**
1816
4021
  * 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
4022
  * @summary Get chat history
1818
- * @param {number} limit Maximum number of messages to return (1–100)
1819
4023
  * @param {string | null} [sessionId] Filter to a specific server session. Omit for global history.
1820
4024
  * @param {string | null} [before] ISO-8601 timestamp cursor — return messages sent before this time. Omit to start from now.
4025
+ * @param {number} [limit] Maximum number of messages to return (1–100)
1821
4026
  * @param {*} [options] Override http request option.
1822
4027
  * @throws {RequiredError}
1823
4028
  */
1824
- history(limit: number, sessionId?: string | null, before?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ChatMessageDTO[], any, {}>>;
4029
+ history(sessionId?: string | null, before?: string | null, limit?: number, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ChatMessageDTO[], any, {}>>;
1825
4030
  /**
1826
4031
  * 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
4032
  * @summary Ingest a chat message
@@ -1836,60 +4041,64 @@ export declare class ChatApi extends BaseAPI {
1836
4041
  */
1837
4042
  export declare const ConnectionApiAxiosParamCreator: (configuration?: Configuration) => {
1838
4043
  /**
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
4044
+ * **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.
4045
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1841
4046
  * @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
4047
+ * @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
4048
  * @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
4049
  * @param {*} [options] Override http request option.
4050
+ * @deprecated
1845
4051
  * @throws {RequiredError}
1846
4052
  */
1847
- getConnectionDetails: (ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
4053
+ getConnectionDetails: (ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1848
4054
  };
1849
4055
  /**
1850
4056
  * ConnectionApi - functional programming interface
1851
4057
  */
1852
4058
  export declare const ConnectionApiFp: (configuration?: Configuration) => {
1853
4059
  /**
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
4060
+ * **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.
4061
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1856
4062
  * @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
4063
+ * @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
4064
  * @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
4065
  * @param {*} [options] Override http request option.
4066
+ * @deprecated
1860
4067
  * @throws {RequiredError}
1861
4068
  */
1862
- getConnectionDetails(ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ConnectionGetConnectionDetailsResponse>>;
4069
+ getConnectionDetails(ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ConnectionGetConnectionDetailsResponse>>;
1863
4070
  };
1864
4071
  /**
1865
4072
  * ConnectionApi - factory interface
1866
4073
  */
1867
4074
  export declare const ConnectionApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1868
4075
  /**
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
4076
+ * **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.
4077
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1871
4078
  * @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
4079
+ * @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
4080
  * @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
4081
  * @param {*} [options] Override http request option.
4082
+ * @deprecated
1875
4083
  * @throws {RequiredError}
1876
4084
  */
1877
- getConnectionDetails(ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<ConnectionGetConnectionDetailsResponse>;
4085
+ getConnectionDetails(ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<ConnectionGetConnectionDetailsResponse>;
1878
4086
  };
1879
4087
  /**
1880
4088
  * ConnectionApi - object-oriented interface
1881
4089
  */
1882
4090
  export declare class ConnectionApi extends BaseAPI {
1883
4091
  /**
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
4092
+ * **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.
4093
+ * @summary Check Connection and Detect VPN/Proxy (DEPRECATED for player-join use)
1886
4094
  * @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
4095
+ * @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
4096
  * @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
4097
  * @param {*} [options] Override http request option.
4098
+ * @deprecated
1890
4099
  * @throws {RequiredError}
1891
4100
  */
1892
- getConnectionDetails(ip: string, forceRecheck: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ConnectionGetConnectionDetailsResponse, any, {}>>;
4101
+ getConnectionDetails(ip: string, forceRecheck?: boolean, associateUuid?: string | null, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<ConnectionGetConnectionDetailsResponse, any, {}>>;
1893
4102
  }
1894
4103
  /**
1895
4104
  * PlayerApi - axios parameter creator
@@ -1975,6 +4184,90 @@ export declare class PlayerApi extends BaseAPI {
1975
4184
  */
1976
4185
  getUsernames(uuids: Array<string>, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
1977
4186
  }
4187
+ /**
4188
+ * PlayerSessionsApi - axios parameter creator
4189
+ */
4190
+ export declare const PlayerSessionsApiAxiosParamCreator: (configuration?: Configuration) => {
4191
+ /**
4192
+ * 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.
4193
+ * @summary Close the active player session
4194
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4195
+ * @param {*} [options] Override http request option.
4196
+ * @throws {RequiredError}
4197
+ */
4198
+ end: (playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
4199
+ /**
4200
+ * 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.
4201
+ * @summary Player join — unified authorization + session-open
4202
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4203
+ * @param {*} [options] Override http request option.
4204
+ * @throws {RequiredError}
4205
+ */
4206
+ start: (playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
4207
+ };
4208
+ /**
4209
+ * PlayerSessionsApi - functional programming interface
4210
+ */
4211
+ export declare const PlayerSessionsApiFp: (configuration?: Configuration) => {
4212
+ /**
4213
+ * 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.
4214
+ * @summary Close the active player session
4215
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4216
+ * @param {*} [options] Override http request option.
4217
+ * @throws {RequiredError}
4218
+ */
4219
+ end(playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
4220
+ /**
4221
+ * 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.
4222
+ * @summary Player join — unified authorization + session-open
4223
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4224
+ * @param {*} [options] Override http request option.
4225
+ * @throws {RequiredError}
4226
+ */
4227
+ start(playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PlayerSessionStartResponse>>;
4228
+ };
4229
+ /**
4230
+ * PlayerSessionsApi - factory interface
4231
+ */
4232
+ export declare const PlayerSessionsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
4233
+ /**
4234
+ * 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.
4235
+ * @summary Close the active player session
4236
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4237
+ * @param {*} [options] Override http request option.
4238
+ * @throws {RequiredError}
4239
+ */
4240
+ end(playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
4241
+ /**
4242
+ * 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.
4243
+ * @summary Player join — unified authorization + session-open
4244
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4245
+ * @param {*} [options] Override http request option.
4246
+ * @throws {RequiredError}
4247
+ */
4248
+ start(playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig): AxiosPromise<PlayerSessionStartResponse>;
4249
+ };
4250
+ /**
4251
+ * PlayerSessionsApi - object-oriented interface
4252
+ */
4253
+ export declare class PlayerSessionsApi extends BaseAPI {
4254
+ /**
4255
+ * 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.
4256
+ * @summary Close the active player session
4257
+ * @param {PlayerSessionEndRequest} playerSessionEndRequest
4258
+ * @param {*} [options] Override http request option.
4259
+ * @throws {RequiredError}
4260
+ */
4261
+ end(playerSessionEndRequest: PlayerSessionEndRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<void, any, {}>>;
4262
+ /**
4263
+ * 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.
4264
+ * @summary Player join — unified authorization + session-open
4265
+ * @param {PlayerSessionStartRequest} playerSessionStartRequest
4266
+ * @param {*} [options] Override http request option.
4267
+ * @throws {RequiredError}
4268
+ */
4269
+ start(playerSessionStartRequest: PlayerSessionStartRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<PlayerSessionStartResponse, any, {}>>;
4270
+ }
1978
4271
  /**
1979
4272
  * PunishmentApi - axios parameter creator
1980
4273
  */
@@ -2008,19 +4301,18 @@ export declare const PunishmentApiAxiosParamCreator: (configuration?: Configurat
2008
4301
  /**
2009
4302
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2010
4303
  * @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
4304
+ * @param {Pageable} pageable
4305
+ * @param {number | null} [issuedAfter]
4306
+ * @param {number | null} [issuedBefore]
4307
+ * @param {number | null} [expiresAfter]
4308
+ * @param {number | null} [expiresBefore]
4309
+ * @param {Array<PunishmentType> | null} [type]
4310
+ * @param {string | null} [uuid]
4311
+ * @param {string | null} [ipAddress]
2020
4312
  * @param {*} [options] Override http request option.
2021
4313
  * @throws {RequiredError}
2022
4314
  */
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>;
4315
+ 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
4316
  };
2025
4317
  /**
2026
4318
  * PunishmentApi - functional programming interface
@@ -2055,19 +4347,18 @@ export declare const PunishmentApiFp: (configuration?: Configuration) => {
2055
4347
  /**
2056
4348
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2057
4349
  * @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
4350
+ * @param {Pageable} pageable
4351
+ * @param {number | null} [issuedAfter]
4352
+ * @param {number | null} [issuedBefore]
4353
+ * @param {number | null} [expiresAfter]
4354
+ * @param {number | null} [expiresBefore]
4355
+ * @param {Array<PunishmentType> | null} [type]
4356
+ * @param {string | null} [uuid]
4357
+ * @param {string | null} [ipAddress]
2067
4358
  * @param {*} [options] Override http request option.
2068
4359
  * @throws {RequiredError}
2069
4360
  */
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>>>;
4361
+ 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
4362
  };
2072
4363
  /**
2073
4364
  * PunishmentApi - factory interface
@@ -2102,19 +4393,18 @@ export declare const PunishmentApiFactory: (configuration?: Configuration, baseP
2102
4393
  /**
2103
4394
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2104
4395
  * @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
4396
+ * @param {Pageable} pageable
4397
+ * @param {number | null} [issuedAfter]
4398
+ * @param {number | null} [issuedBefore]
4399
+ * @param {number | null} [expiresAfter]
4400
+ * @param {number | null} [expiresBefore]
4401
+ * @param {Array<PunishmentType> | null} [type]
4402
+ * @param {string | null} [uuid]
4403
+ * @param {string | null} [ipAddress]
2114
4404
  * @param {*} [options] Override http request option.
2115
4405
  * @throws {RequiredError}
2116
4406
  */
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>>;
4407
+ 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
4408
  };
2119
4409
  /**
2120
4410
  * PunishmentApi - object-oriented interface
@@ -2149,19 +4439,70 @@ export declare class PunishmentApi extends BaseAPI {
2149
4439
  /**
2150
4440
  * Returns a paginated list of recent punishments with optional filtering by issue date, expiration date, and type
2151
4441
  * @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
4442
+ * @param {Pageable} pageable
4443
+ * @param {number | null} [issuedAfter]
4444
+ * @param {number | null} [issuedBefore]
4445
+ * @param {number | null} [expiresAfter]
4446
+ * @param {number | null} [expiresBefore]
4447
+ * @param {Array<PunishmentType> | null} [type]
4448
+ * @param {string | null} [uuid]
4449
+ * @param {string | null} [ipAddress]
4450
+ * @param {*} [options] Override http request option.
4451
+ * @throws {RequiredError}
4452
+ */
4453
+ 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, {}>>;
4454
+ }
4455
+ /**
4456
+ * ReportApi - axios parameter creator
4457
+ */
4458
+ export declare const ReportApiAxiosParamCreator: (configuration?: Configuration) => {
4459
+ /**
4460
+ * 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.
4461
+ * @summary Submit a peer report
4462
+ * @param {CreateReportRequest} createReportRequest
4463
+ * @param {*} [options] Override http request option.
4464
+ * @throws {RequiredError}
4465
+ */
4466
+ submit: (createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
4467
+ };
4468
+ /**
4469
+ * ReportApi - functional programming interface
4470
+ */
4471
+ export declare const ReportApiFp: (configuration?: Configuration) => {
4472
+ /**
4473
+ * 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.
4474
+ * @summary Submit a peer report
4475
+ * @param {CreateReportRequest} createReportRequest
4476
+ * @param {*} [options] Override http request option.
4477
+ * @throws {RequiredError}
4478
+ */
4479
+ submit(createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateReportResponse>>;
4480
+ };
4481
+ /**
4482
+ * ReportApi - factory interface
4483
+ */
4484
+ export declare const ReportApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
4485
+ /**
4486
+ * 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.
4487
+ * @summary Submit a peer report
4488
+ * @param {CreateReportRequest} createReportRequest
4489
+ * @param {*} [options] Override http request option.
4490
+ * @throws {RequiredError}
4491
+ */
4492
+ submit(createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig): AxiosPromise<CreateReportResponse>;
4493
+ };
4494
+ /**
4495
+ * ReportApi - object-oriented interface
4496
+ */
4497
+ export declare class ReportApi extends BaseAPI {
4498
+ /**
4499
+ * 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.
4500
+ * @summary Submit a peer report
4501
+ * @param {CreateReportRequest} createReportRequest
2161
4502
  * @param {*} [options] Override http request option.
2162
4503
  * @throws {RequiredError}
2163
4504
  */
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, {}>>;
4505
+ submit(createReportRequest: CreateReportRequest, options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<CreateReportResponse, any, {}>>;
2165
4506
  }
2166
4507
  /**
2167
4508
  * ServerSessionsApi - axios parameter creator