@rebornteam/reborn-api 3.1.0 → 3.2.1

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 (55) hide show
  1. package/.openapi-generator/FILES +1 -0
  2. package/README.md +4 -2
  3. package/api.ts +185 -95
  4. package/base.ts +1 -1
  5. package/common.ts +1 -1
  6. package/configuration.ts +1 -1
  7. package/dist/api.d.ts +148 -95
  8. package/dist/api.js +63 -1
  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 +148 -95
  16. package/dist/esm/api.js +63 -1
  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/AdminApplyPunishmentRequest.md +2 -2
  28. package/docs/AdminApplyPunishmentResponse.md +1 -1
  29. package/docs/AdminApplyPunishmentResult.md +6 -6
  30. package/docs/AdminBackfillLocationResponse.md +25 -0
  31. package/docs/AdminClientCredentialResponse.md +6 -6
  32. package/docs/AdminConnectionBypassResponse.md +4 -4
  33. package/docs/AdminConnectionCheckResult.md +7 -3
  34. package/docs/AdminConnectionsApi.md +47 -0
  35. package/docs/AdminCreatePunishmentDraftRequest.md +2 -2
  36. package/docs/AdminDashboardConnectionResponse.md +2 -2
  37. package/docs/AdminIpSearchResult.md +2 -2
  38. package/docs/AdminPagedConnectionResponse.md +5 -5
  39. package/docs/AdminPagedPlayerResponse.md +5 -5
  40. package/docs/AdminPagedPunishmentResponse.md +5 -5
  41. package/docs/AdminPlayerDetailResponse.md +7 -7
  42. package/docs/AdminPlayerSearchResult.md +1 -1
  43. package/docs/AdminPlayerSummary.md +6 -6
  44. package/docs/AdminPunishmentDraftResponse.md +1 -1
  45. package/docs/AdminPunishmentEvaluation.md +9 -9
  46. package/docs/AdminPunishmentSearchResponse.md +3 -3
  47. package/docs/AdminUsernameHistoryEntry.md +2 -2
  48. package/docs/ConnectionGetConnectionDetailsResponse.md +7 -7
  49. package/docs/PlayerGetPlayerInformation.md +4 -4
  50. package/docs/PunishmentGetPunishmentResponse.md +6 -6
  51. package/docs/PunishmentSeveritiesResponse.md +1 -1
  52. package/docs/PunishmentSeveritiesResponsePunishmentTypeInfo.md +2 -2
  53. package/docs/PunishmentSeveritiesResponseSeverityInfo.md +2 -2
  54. package/index.ts +1 -1
  55. package/package.json +1 -1
package/dist/esm/api.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Reborn API
3
3
  * The Reborn API serves as the central backend for the platform, orchestrating secure communication between game clients and data services. This API supports two authentication methods: - **OAuth 2.0 Client Credentials**: For programmatic API access - **Discord SSO Bearer Token**: For admin endpoints requiring Discord authentication
4
4
  *
5
- * The version of the OpenAPI document: 3.1.0
5
+ * The version of the OpenAPI document: 3.2.1
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -28,7 +28,7 @@ export interface AdminApplyPunishmentRequest {
28
28
  /**
29
29
  * Severity level: 1=Minor, 2=Moderate, 3=Severe, 4=Critical
30
30
  */
31
- 'severity'?: number;
31
+ 'severity': number;
32
32
  /**
33
33
  * Reason for the punishment
34
34
  */
@@ -40,7 +40,7 @@ export interface AdminApplyPunishmentRequest {
40
40
  /**
41
41
  * Force the punishment to be permanent regardless of the target\'s current score
42
42
  */
43
- 'forcePermanent'?: boolean;
43
+ 'forcePermanent': boolean;
44
44
  /**
45
45
  * Internal notes visible only to administrators — not shown to the punished player
46
46
  */
@@ -53,7 +53,7 @@ export interface AdminApplyPunishmentResponse {
53
53
  /**
54
54
  * Ordered list of results, one per target in the request
55
55
  */
56
- 'results'?: Array<AdminApplyPunishmentResult>;
56
+ 'results': Array<AdminApplyPunishmentResult>;
57
57
  }
58
58
  /**
59
59
  * Result of applying a punishment to a single target
@@ -62,32 +62,49 @@ export interface AdminApplyPunishmentResult {
62
62
  /**
63
63
  * The target this result applies to
64
64
  */
65
- 'target'?: AdminPunishmentTarget;
65
+ 'target': AdminPunishmentTarget;
66
66
  /**
67
67
  * ID of the created punishment record
68
68
  */
69
- 'punishmentId'?: number;
69
+ 'punishmentId': number;
70
70
  /**
71
71
  * Punishment type applied
72
72
  */
73
- 'type'?: PunishmentType;
73
+ 'type': PunishmentType;
74
74
  /**
75
75
  * Severity level applied
76
76
  */
77
- 'severity'?: number;
77
+ 'severity': number;
78
78
  /**
79
79
  * Updated punishment score after applying
80
80
  */
81
- 'newScore'?: number;
81
+ 'newScore': number;
82
82
  /**
83
83
  * Whether the punishment was made permanent
84
84
  */
85
- 'isPermanent'?: boolean;
85
+ 'isPermanent': boolean;
86
86
  /**
87
87
  * When the punishment expires — null if permanent or a WARNING
88
88
  */
89
89
  'expiresAt'?: string | null;
90
90
  }
91
+ /**
92
+ * Result of a location backfill run — rechecks every connection_check row missing both city and country, repopulating them from the VPN providers.
93
+ */
94
+ export interface AdminBackfillLocationResponse {
95
+ /**
96
+ * Total checks attempted
97
+ */
98
+ 'processed': number;
99
+ /**
100
+ * Checks where the provider returned at least a city or country
101
+ */
102
+ 'succeeded': number;
103
+ /**
104
+ * Checks that errored or returned no location data
105
+ */
106
+ 'failed': number;
107
+ }
91
108
  /**
92
109
  * Client credential response
93
110
  */
@@ -95,11 +112,11 @@ export interface AdminClientCredentialResponse {
95
112
  /**
96
113
  * Unique identifier for the client credential
97
114
  */
98
- 'id'?: number;
115
+ 'id': number;
99
116
  /**
100
117
  * Client ID used for authentication
101
118
  */
102
- 'clientId'?: string;
119
+ 'clientId': string;
103
120
  /**
104
121
  * Client secret (only returned on generation/rotation, null otherwise)
105
122
  */
@@ -107,19 +124,19 @@ export interface AdminClientCredentialResponse {
107
124
  /**
108
125
  * Human-readable name for the client
109
126
  */
110
- 'name'?: string;
127
+ 'name': string;
111
128
  /**
112
129
  * Optional description of the client\'s purpose
113
130
  */
114
- 'description'?: string;
131
+ 'description': string;
115
132
  /**
116
133
  * Whether the client credential is currently enabled
117
134
  */
118
- 'enabled'?: boolean;
135
+ 'enabled': boolean;
119
136
  /**
120
137
  * Timestamp when the credential was created (ISO-8601 format)
121
138
  */
122
- 'createdAt'?: string;
139
+ 'createdAt': string;
123
140
  /**
124
141
  * Timestamp when the credential expires (ISO-8601 format). Null means the credential never expires.
125
142
  */
@@ -132,19 +149,19 @@ export interface AdminConnectionBypassResponse {
132
149
  /**
133
150
  * Unique identifier for the bypass
134
151
  */
135
- 'id'?: number;
152
+ 'id': number;
136
153
  /**
137
154
  * IP address that is bypassed
138
155
  */
139
- 'ipAddress'?: string;
156
+ 'ipAddress': string;
140
157
  /**
141
158
  * Timestamp when the bypass expires (ISO-8601 format)
142
159
  */
143
- 'expiresAt'?: string;
160
+ 'expiresAt': string;
144
161
  /**
145
162
  * Timestamp when the bypass was created (ISO-8601 format)
146
163
  */
147
- 'createdAt'?: string;
164
+ 'createdAt': string;
148
165
  }
149
166
  /**
150
167
  * Result from a single VPN detection service for a given IP address
@@ -153,15 +170,23 @@ export interface AdminConnectionCheckResult {
153
170
  /**
154
171
  * Service identifier
155
172
  */
156
- 'service'?: string;
173
+ 'service': string;
157
174
  /**
158
175
  * Whether this service flagged the IP as a VPN, proxy, or Tor exit node
159
176
  */
160
- 'result'?: boolean;
177
+ 'result': boolean;
161
178
  /**
162
179
  * When this check was last performed
163
180
  */
164
- 'checkedAt'?: string;
181
+ 'checkedAt': string;
182
+ /**
183
+ * City reported by this service, if available
184
+ */
185
+ 'city'?: string | null;
186
+ /**
187
+ * Country code reported by this service, if available
188
+ */
189
+ 'country'?: string | null;
165
190
  }
166
191
  /**
167
192
  * Request to evaluate the impact of a punishment across one or more targets before applying
@@ -178,7 +203,7 @@ export interface AdminCreatePunishmentDraftRequest {
178
203
  /**
179
204
  * Severity level: 1=Minor, 2=Moderate, 3=Severe, 4=Critical
180
205
  */
181
- 'severity'?: number;
206
+ 'severity': number;
182
207
  /**
183
208
  * Reason for the punishment (not used in evaluation, required for apply)
184
209
  */
@@ -190,12 +215,12 @@ export interface AdminCreatePunishmentDraftRequest {
190
215
  /**
191
216
  * Force the punishment to be permanent regardless of the target\'s current score
192
217
  */
193
- 'forcePermanent'?: boolean;
218
+ 'forcePermanent': boolean;
194
219
  }
195
220
  export interface AdminDashboardConnectionResponse {
196
221
  'id': number;
197
222
  'ipAddress': string;
198
- 'location': string;
223
+ 'location'?: string | null;
199
224
  'isVpn': boolean;
200
225
  'isBypassed': boolean;
201
226
  'bypassExpiresAt'?: string | null;
@@ -206,7 +231,7 @@ export interface AdminDashboardConnectionResponse {
206
231
  /**
207
232
  * Results from each VPN detection service for this IP address
208
233
  */
209
- 'results'?: Array<AdminConnectionCheckResult>;
234
+ 'results': Array<AdminConnectionCheckResult>;
210
235
  }
211
236
  export interface AdminGetDashboardStats {
212
237
  'totalPlayers': number;
@@ -220,11 +245,11 @@ export interface AdminIpSearchResult {
220
245
  /**
221
246
  * IP address
222
247
  */
223
- 'ipAddress'?: string;
248
+ 'ipAddress': string;
224
249
  /**
225
250
  * Players ever seen on this IP
226
251
  */
227
- 'players'?: Array<AdminPlayerSearchResult>;
252
+ 'players': Array<AdminPlayerSearchResult>;
228
253
  }
229
254
  /**
230
255
  * Paginated connection list response
@@ -233,23 +258,23 @@ export interface AdminPagedConnectionResponse {
233
258
  /**
234
259
  * Connections on the current page
235
260
  */
236
- 'data'?: Array<AdminDashboardConnectionResponse>;
261
+ 'data': Array<AdminDashboardConnectionResponse>;
237
262
  /**
238
263
  * Total number of connections matching the filters
239
264
  */
240
- 'total'?: number;
265
+ 'total': number;
241
266
  /**
242
267
  * Current page (1-indexed)
243
268
  */
244
- 'page'?: number;
269
+ 'page': number;
245
270
  /**
246
271
  * Page size
247
272
  */
248
- 'limit'?: number;
273
+ 'limit': number;
249
274
  /**
250
275
  * Total number of pages
251
276
  */
252
- 'totalPages'?: number;
277
+ 'totalPages': number;
253
278
  }
254
279
  /**
255
280
  * Paginated player list response
@@ -258,23 +283,23 @@ export interface AdminPagedPlayerResponse {
258
283
  /**
259
284
  * Players on the current page
260
285
  */
261
- 'data'?: Array<AdminPlayerSummary>;
286
+ 'data': Array<AdminPlayerSummary>;
262
287
  /**
263
288
  * Total number of players matching the search filter
264
289
  */
265
- 'total'?: number;
290
+ 'total': number;
266
291
  /**
267
292
  * Current page (1-indexed)
268
293
  */
269
- 'page'?: number;
294
+ 'page': number;
270
295
  /**
271
296
  * Page size
272
297
  */
273
- 'limit'?: number;
298
+ 'limit': number;
274
299
  /**
275
300
  * Total number of pages
276
301
  */
277
- 'totalPages'?: number;
302
+ 'totalPages': number;
278
303
  }
279
304
  /**
280
305
  * Paginated punishment list response
@@ -283,23 +308,23 @@ export interface AdminPagedPunishmentResponse {
283
308
  /**
284
309
  * Punishments on the current page
285
310
  */
286
- 'data'?: Array<AdminPunishmentListItem>;
311
+ 'data': Array<AdminPunishmentListItem>;
287
312
  /**
288
313
  * Total number of punishments matching the filters
289
314
  */
290
- 'total'?: number;
315
+ 'total': number;
291
316
  /**
292
317
  * Current page (1-indexed)
293
318
  */
294
- 'page'?: number;
319
+ 'page': number;
295
320
  /**
296
321
  * Page size
297
322
  */
298
- 'limit'?: number;
323
+ 'limit': number;
299
324
  /**
300
325
  * Total number of pages
301
326
  */
302
- 'totalPages'?: number;
327
+ 'totalPages': number;
303
328
  }
304
329
  /**
305
330
  * Full player detail including punishment history and all known usernames
@@ -308,11 +333,11 @@ export interface AdminPlayerDetailResponse {
308
333
  /**
309
334
  * Internal player ID
310
335
  */
311
- 'id'?: number;
336
+ 'id': number;
312
337
  /**
313
338
  * Player Minecraft UUID
314
339
  */
315
- 'uuid'?: string;
340
+ 'uuid': string;
316
341
  /**
317
342
  * Most recently seen username
318
343
  */
@@ -320,11 +345,11 @@ export interface AdminPlayerDetailResponse {
320
345
  /**
321
346
  * Whether this player still has first-join status
322
347
  */
323
- 'firstJoin'?: boolean;
348
+ 'firstJoin': boolean;
324
349
  /**
325
350
  * Timestamp of first connection (ISO-8601)
326
351
  */
327
- 'firstLogin'?: string;
352
+ 'firstLogin': string;
328
353
  /**
329
354
  * Timestamp of most recent connection (ISO-8601)
330
355
  */
@@ -332,15 +357,15 @@ export interface AdminPlayerDetailResponse {
332
357
  /**
333
358
  * Raw punishment score
334
359
  */
335
- 'punishmentPointsRaw'?: number;
360
+ 'punishmentPointsRaw': number;
336
361
  /**
337
362
  * Punishment score as a percentage
338
363
  */
339
- 'punishmentPointsPercent'?: number;
364
+ 'punishmentPointsPercent': number;
340
365
  /**
341
366
  * All usernames this player has used, newest first
342
367
  */
343
- 'usernameHistory'?: Array<AdminUsernameHistoryEntry>;
368
+ 'usernameHistory': Array<AdminUsernameHistoryEntry>;
344
369
  }
345
370
  /**
346
371
  * Lightweight player reference used in search results and punishment evaluations
@@ -349,7 +374,7 @@ export interface AdminPlayerSearchResult {
349
374
  /**
350
375
  * Player Minecraft UUID
351
376
  */
352
- 'uuid'?: string;
377
+ 'uuid': string;
353
378
  /**
354
379
  * Most recently seen username, null if never recorded
355
380
  */
@@ -362,11 +387,11 @@ export interface AdminPlayerSummary {
362
387
  /**
363
388
  * Internal player ID
364
389
  */
365
- 'id'?: number;
390
+ 'id': number;
366
391
  /**
367
392
  * Player Minecraft UUID
368
393
  */
369
- 'uuid'?: string;
394
+ 'uuid': string;
370
395
  /**
371
396
  * Most recently seen username, null if never recorded
372
397
  */
@@ -374,11 +399,11 @@ export interface AdminPlayerSummary {
374
399
  /**
375
400
  * Whether this player still has first-join status
376
401
  */
377
- 'firstJoin'?: boolean;
402
+ 'firstJoin': boolean;
378
403
  /**
379
404
  * Timestamp of first connection (ISO-8601)
380
405
  */
381
- 'firstLogin'?: string;
406
+ 'firstLogin': string;
382
407
  /**
383
408
  * Timestamp of most recent connection (ISO-8601)
384
409
  */
@@ -386,11 +411,11 @@ export interface AdminPlayerSummary {
386
411
  /**
387
412
  * Raw punishment score (sum of weighted punishment values)
388
413
  */
389
- 'punishmentPointsRaw'?: number;
414
+ 'punishmentPointsRaw': number;
390
415
  /**
391
416
  * Punishment score as a percentage. Values above 100 indicate future punishments should be permanent.
392
417
  */
393
- 'punishmentPointsPercent'?: number;
418
+ 'punishmentPointsPercent': number;
394
419
  }
395
420
  /**
396
421
  * Batch punishment draft — one evaluation per target
@@ -399,7 +424,7 @@ export interface AdminPunishmentDraftResponse {
399
424
  /**
400
425
  * Ordered list of evaluations, one per target in the request
401
426
  */
402
- 'evaluations'?: Array<AdminPunishmentEvaluation>;
427
+ 'evaluations': Array<AdminPunishmentEvaluation>;
403
428
  }
404
429
  /**
405
430
  * Evaluation of a punishment\'s impact on a single target
@@ -408,27 +433,27 @@ export interface AdminPunishmentEvaluation {
408
433
  /**
409
434
  * The target this evaluation applies to
410
435
  */
411
- 'target'?: AdminPunishmentTarget;
436
+ 'target': AdminPunishmentTarget;
412
437
  /**
413
438
  * Players affected — one player for UUID targets, all players on the IP for connection targets
414
439
  */
415
- 'affectedPlayers'?: Array<AdminPlayerSearchResult>;
440
+ 'affectedPlayers': Array<AdminPlayerSearchResult>;
416
441
  /**
417
442
  * Current punishment score before applying this punishment (0–100+)
418
443
  */
419
- 'currentScore'?: number;
444
+ 'currentScore': number;
420
445
  /**
421
446
  * Points this punishment would add to the score
422
447
  */
423
- 'pointsToAdd'?: number;
448
+ 'pointsToAdd': number;
424
449
  /**
425
450
  * Projected score after applying this punishment
426
451
  */
427
- 'newScore'?: number;
452
+ 'newScore': number;
428
453
  /**
429
454
  * Whether this punishment would be permanent based on the current score threshold
430
455
  */
431
- 'willBePermanent'?: boolean;
456
+ 'willBePermanent': boolean;
432
457
  /**
433
458
  * Resolved duration in seconds — null if permanent or a WARNING
434
459
  */
@@ -436,15 +461,15 @@ export interface AdminPunishmentEvaluation {
436
461
  /**
437
462
  * Number of existing punishments on this target
438
463
  */
439
- 'previousPunishmentCount'?: number;
464
+ 'previousPunishmentCount': number;
440
465
  /**
441
466
  * True when the target is an IP address (connection punishment) rather than a player UUID
442
467
  */
443
- 'isConnectionTarget'?: boolean;
468
+ 'isConnectionTarget': boolean;
444
469
  /**
445
470
  * The effective punishment type that will be applied — may differ from the requested type if escalated to BAN at threshold
446
471
  */
447
- 'effectiveType'?: PunishmentType;
472
+ 'effectiveType': PunishmentType;
448
473
  }
449
474
  export interface AdminPunishmentListItem {
450
475
  'id': number;
@@ -467,15 +492,15 @@ export interface AdminPunishmentSearchResponse {
467
492
  /**
468
493
  * Search kind — PLAYER for UUID/username searches, IP for IP address searches
469
494
  */
470
- 'kind'?: SearchKind;
495
+ 'kind': SearchKind;
471
496
  /**
472
497
  * Matching players — only populated when kind=\'player\'
473
498
  */
474
- 'players'?: Array<AdminPlayerSearchResult>;
499
+ 'players': Array<AdminPlayerSearchResult>;
475
500
  /**
476
501
  * Matching IP addresses with their associated players — only populated when kind=\'ip\'
477
502
  */
478
- 'ipResults'?: Array<AdminIpSearchResult>;
503
+ 'ipResults': Array<AdminIpSearchResult>;
479
504
  }
480
505
  /**
481
506
  * A target for a punishment — either a player UUID or an IP address (mutually exclusive)
@@ -497,11 +522,11 @@ export interface AdminUsernameHistoryEntry {
497
522
  /**
498
523
  * The username at this point in time
499
524
  */
500
- 'username'?: string;
525
+ 'username': string;
501
526
  /**
502
527
  * When this username was first observed (ISO-8601)
503
528
  */
504
- 'changedAt'?: string;
529
+ 'changedAt': string;
505
530
  }
506
531
  export interface ChatMessageDTO {
507
532
  'id': number;
@@ -541,23 +566,23 @@ export interface ConnectionGetConnectionDetailsResponse {
541
566
  /**
542
567
  * The analyzed IPv4 address
543
568
  */
544
- 'ipAddress'?: string;
569
+ 'ipAddress': string;
545
570
  /**
546
571
  * Approximate geographic location of the IP address. Returns \'Local, N/A\' for localhost or private IPs.
547
572
  */
548
- 'approximateLocation'?: string;
573
+ 'approximateLocation': string;
549
574
  /**
550
575
  * 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).
551
576
  */
552
- 'percentPositive'?: number;
577
+ 'percentPositive': number;
553
578
  /**
554
579
  * Total number of VPN detection services successfully queried during the last check.
555
580
  */
556
- 'numberOfChecks'?: number;
581
+ 'numberOfChecks': number;
557
582
  /**
558
583
  * Indicates if this IP address has been administratively bypassed.
559
584
  */
560
- 'isBypassed'?: boolean;
585
+ 'isBypassed': boolean;
561
586
  /**
562
587
  * Expiration timestamp for the bypass (ISO-8601 format). Null if not bypassed or bypass is permanent.
563
588
  */
@@ -565,7 +590,7 @@ export interface ConnectionGetConnectionDetailsResponse {
565
590
  /**
566
591
  * Results from each VPN detection service that checked this IP address
567
592
  */
568
- 'results'?: Array<AdminConnectionCheckResult>;
593
+ 'results': Array<AdminConnectionCheckResult>;
569
594
  /**
570
595
  * Player information associated with this connection. Only populated when \'associate_uuid\' query parameter is provided.
571
596
  */
@@ -573,7 +598,7 @@ export interface ConnectionGetConnectionDetailsResponse {
573
598
  /**
574
599
  * Combined list of active punishments for both the IP address and player UUID (if provided). Only includes non-expired punishments.
575
600
  */
576
- 'punishments'?: Array<PunishmentGetPunishmentResponse>;
601
+ 'punishments': Array<PunishmentGetPunishmentResponse>;
577
602
  /**
578
603
  * 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.
579
604
  */
@@ -623,19 +648,19 @@ export interface PlayerGetPlayerInformation {
623
648
  /**
624
649
  * Indicates whether this is the player\'s first time joining the server.
625
650
  */
626
- 'firstJoin'?: boolean;
651
+ 'firstJoin': boolean;
627
652
  /**
628
653
  * Timestamp of when the player first connected to the server (ISO-8601 format).
629
654
  */
630
- 'firstLogin'?: string;
655
+ 'firstLogin': string;
631
656
  /**
632
657
  * Raw punishment score calculated as: SUM((base_weight × severity/10)). Used for tracking overall punishment severity.
633
658
  */
634
- 'punishmentPointsRaw'?: number;
659
+ 'punishmentPointsRaw': number;
635
660
  /**
636
661
  * Punishment score as a percentage (0-100). When >100% before applying a new punishment, the new punishment should be made permanent.
637
662
  */
638
- 'punishmentPointsPercent'?: number;
663
+ 'punishmentPointsPercent': number;
639
664
  }
640
665
  /**
641
666
  * Punishment information including reason, type, creator, and expiration
@@ -644,11 +669,11 @@ export interface PunishmentGetPunishmentResponse {
644
669
  /**
645
670
  * Unique identifier for the punishment
646
671
  */
647
- 'id'?: number;
672
+ 'id': number;
648
673
  /**
649
674
  * Reason for the punishment, shown to the punished player
650
675
  */
651
- 'reason'?: string;
676
+ 'reason': string;
652
677
  /**
653
678
  * Internal administrator notes — not shown to the punished player
654
679
  */
@@ -656,15 +681,15 @@ export interface PunishmentGetPunishmentResponse {
656
681
  /**
657
682
  * Type of punishment
658
683
  */
659
- 'type'?: PunishmentType;
684
+ 'type': PunishmentType;
660
685
  /**
661
686
  * Severity level (1=Minor, 2=Moderate, 3=Severe, 4=Critical)
662
687
  */
663
- 'severity'?: number;
688
+ 'severity': number;
664
689
  /**
665
690
  * Username or identifier of the person who created this punishment
666
691
  */
667
- 'createdBy'?: string;
692
+ 'createdBy': string;
668
693
  /**
669
694
  * Timestamp when the punishment expires (ISO-8601 format). Null for permanent punishments.
670
695
  */
@@ -672,7 +697,7 @@ export interface PunishmentGetPunishmentResponse {
672
697
  /**
673
698
  * Timestamp when the punishment was created (ISO-8601 format)
674
699
  */
675
- 'createdAt'?: string;
700
+ 'createdAt': string;
676
701
  }
677
702
  /**
678
703
  * Response containing punishment severity durations for each type
@@ -681,7 +706,7 @@ export interface PunishmentSeveritiesResponse {
681
706
  /**
682
707
  * List of punishment types with their severity durations
683
708
  */
684
- 'punishmentTypes'?: Array<PunishmentSeveritiesResponsePunishmentTypeInfo>;
709
+ 'punishmentTypes': Array<PunishmentSeveritiesResponsePunishmentTypeInfo>;
685
710
  }
686
711
  /**
687
712
  * Punishment type with severity information
@@ -690,11 +715,11 @@ export interface PunishmentSeveritiesResponsePunishmentTypeInfo {
690
715
  /**
691
716
  * Type of punishment
692
717
  */
693
- 'type'?: PunishmentType;
718
+ 'type': PunishmentType;
694
719
  /**
695
720
  * List of severity levels with durations
696
721
  */
697
- 'severities'?: Array<PunishmentSeveritiesResponseSeverityInfo>;
722
+ 'severities': Array<PunishmentSeveritiesResponseSeverityInfo>;
698
723
  }
699
724
  /**
700
725
  * Severity level with duration information
@@ -703,11 +728,11 @@ export interface PunishmentSeveritiesResponseSeverityInfo {
703
728
  /**
704
729
  * Severity level
705
730
  */
706
- 'severity'?: number;
731
+ 'severity': number;
707
732
  /**
708
733
  * Duration in seconds (0 means no duration)
709
734
  */
710
- 'durationSeconds'?: number;
735
+ 'durationSeconds': number;
711
736
  }
712
737
  export declare const PunishmentTargetType: {
713
738
  readonly Player: "PLAYER";
@@ -1030,6 +1055,13 @@ export declare class AdminClientCredentialsApi extends BaseAPI {
1030
1055
  * AdminConnectionsApi - axios parameter creator
1031
1056
  */
1032
1057
  export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Configuration) => {
1058
+ /**
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
1061
+ * @param {*} [options] Override http request option.
1062
+ * @throws {RequiredError}
1063
+ */
1064
+ backfillLocation: (options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
1033
1065
  /**
1034
1066
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1035
1067
  * @summary Create connection bypass
@@ -1078,6 +1110,13 @@ export declare const AdminConnectionsApiAxiosParamCreator: (configuration?: Conf
1078
1110
  * AdminConnectionsApi - functional programming interface
1079
1111
  */
1080
1112
  export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1113
+ /**
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
1116
+ * @param {*} [options] Override http request option.
1117
+ * @throws {RequiredError}
1118
+ */
1119
+ backfillLocation(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminBackfillLocationResponse>>;
1081
1120
  /**
1082
1121
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1083
1122
  * @summary Create connection bypass
@@ -1126,6 +1165,13 @@ export declare const AdminConnectionsApiFp: (configuration?: Configuration) => {
1126
1165
  * AdminConnectionsApi - factory interface
1127
1166
  */
1128
1167
  export declare const AdminConnectionsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
1168
+ /**
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
1171
+ * @param {*} [options] Override http request option.
1172
+ * @throws {RequiredError}
1173
+ */
1174
+ backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminBackfillLocationResponse>;
1129
1175
  /**
1130
1176
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1131
1177
  * @summary Create connection bypass
@@ -1174,6 +1220,13 @@ export declare const AdminConnectionsApiFactory: (configuration?: Configuration,
1174
1220
  * AdminConnectionsApi - object-oriented interface
1175
1221
  */
1176
1222
  export declare class AdminConnectionsApi extends BaseAPI {
1223
+ /**
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
1226
+ * @param {*} [options] Override http request option.
1227
+ * @throws {RequiredError}
1228
+ */
1229
+ backfillLocation(options?: RawAxiosRequestConfig): Promise<import("axios").AxiosResponse<AdminBackfillLocationResponse, any, {}>>;
1177
1230
  /**
1178
1231
  * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
1179
1232
  * @summary Create connection bypass