@rebornteam/reborn-api 4.9.1 → 4.9.3

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 (41) hide show
  1. package/.openapi-generator/FILES +11 -0
  2. package/README.md +23 -2
  3. package/api.ts +1104 -183
  4. package/base.ts +1 -1
  5. package/common.ts +1 -1
  6. package/configuration.ts +1 -1
  7. package/dist/api.d.ts +516 -1
  8. package/dist/api.js +684 -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 +516 -1
  16. package/dist/esm/api.js +684 -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/AdminDashboardActivityCell.md +25 -0
  28. package/docs/AdminDashboardApi.md +453 -0
  29. package/docs/AdminDashboardCategoryCount.md +23 -0
  30. package/docs/AdminDashboardCountryCount.md +25 -0
  31. package/docs/AdminDashboardDailySessions.md +27 -0
  32. package/docs/AdminDashboardModeratorActivity.md +23 -0
  33. package/docs/AdminDashboardOverview.md +35 -0
  34. package/docs/AdminDashboardPunishmentDaily.md +25 -0
  35. package/docs/AdminDashboardReportSummary.md +27 -0
  36. package/docs/AdminDashboardServerRegion.md +27 -0
  37. package/docs/AdminDashboardTrustBucket.md +23 -0
  38. package/docs/AuthenticationApi.md +53 -0
  39. package/docs/DiscordAuthUrlResponse.md +21 -0
  40. package/index.ts +1 -1
  41. package/package.json +1 -1
package/api.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * Reborn API
5
5
  * The Reborn API serves as the central backend for the platform, orchestrating secure communication between game clients and data services. This API supports two authentication methods: - **OAuth 2.0 Client Credentials**: For programmatic API access - **Discord SSO Bearer Token**: For admin endpoints requiring Discord authentication
6
6
  *
7
- * The version of the OpenAPI document: 4.9.1
7
+ * The version of the OpenAPI document: 4.9.3
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -511,6 +511,36 @@ export interface AdminCreatePunishmentDraftRequest {
511
511
  }
512
512
 
513
513
 
514
+ /**
515
+ * One cell of the activity heatmap: connection volume bucketed by UTC day-of-week (0 = Sunday) and hour-of-day (0--23).
516
+ */
517
+ export interface AdminDashboardActivityCell {
518
+ /**
519
+ * UTC day of week, 0 = Sunday … 6 = Saturday
520
+ */
521
+ 'dayOfWeek': number;
522
+ /**
523
+ * UTC hour of day, 0–23
524
+ */
525
+ 'hourOfDay': number;
526
+ /**
527
+ * Connections in this bucket
528
+ */
529
+ 'count': number;
530
+ }
531
+ /**
532
+ * Report count for one category over the window.
533
+ */
534
+ export interface AdminDashboardCategoryCount {
535
+ /**
536
+ * Report category
537
+ */
538
+ 'category': string;
539
+ /**
540
+ * Reports filed in this category
541
+ */
542
+ 'count': number;
543
+ }
514
544
  export interface AdminDashboardConnectionResponse {
515
545
  'id': number;
516
546
  'ipAddress': string;
@@ -534,6 +564,166 @@ export interface AdminDashboardConnectionResponse {
534
564
  */
535
565
  'results': Array<AdminConnectionCheckResult>;
536
566
  }
567
+ /**
568
+ * Connection volume for one country over the requested window.
569
+ */
570
+ export interface AdminDashboardCountryCount {
571
+ /**
572
+ * ISO country code
573
+ */
574
+ 'country': string;
575
+ /**
576
+ * Distinct connections geolocated to this country
577
+ */
578
+ 'connections': number;
579
+ /**
580
+ * Of those, how many were flagged VPN/proxy
581
+ */
582
+ 'vpnConnections': number;
583
+ }
584
+ /**
585
+ * One day of the session-activity timeseries (UTC day).
586
+ */
587
+ export interface AdminDashboardDailySessions {
588
+ /**
589
+ * UTC day, YYYY-MM-DD
590
+ */
591
+ 'day': string;
592
+ /**
593
+ * Sessions started this day
594
+ */
595
+ 'sessionCount': number;
596
+ /**
597
+ * Distinct players active this day
598
+ */
599
+ 'activePlayers': number;
600
+ /**
601
+ * Mean completed-session length this day, seconds
602
+ */
603
+ 'avgDurationSeconds': number;
604
+ }
605
+ /**
606
+ * A moderator and their audit-log action count over the window.
607
+ */
608
+ export interface AdminDashboardModeratorActivity {
609
+ /**
610
+ * Moderator username
611
+ */
612
+ 'actor': string;
613
+ /**
614
+ * Audit-log actions performed
615
+ */
616
+ 'actionCount': number;
617
+ }
618
+ /**
619
+ * \"At a glance\" dashboard tiles --- current pulse of the network plus rolling 7-day session averages. Session durations are in seconds.
620
+ */
621
+ export interface AdminDashboardOverview {
622
+ /**
623
+ * Players with an open session right now
624
+ */
625
+ 'onlinePlayers': number;
626
+ /**
627
+ * Players whose first join was today (UTC)
628
+ */
629
+ 'newPlayersToday': number;
630
+ /**
631
+ * Distinct players seen today (UTC)
632
+ */
633
+ 'dauToday': number;
634
+ /**
635
+ * Mean completed-session length over the last 7 days, seconds
636
+ */
637
+ 'avgSessionSeconds': number;
638
+ /**
639
+ * Median completed-session length over the last 7 days, seconds
640
+ */
641
+ 'medianSessionSeconds': number;
642
+ /**
643
+ * Unexpired BAN punishments
644
+ */
645
+ 'activeBans': number;
646
+ /**
647
+ * Unexpired MUTE punishments
648
+ */
649
+ 'activeMutes': number;
650
+ /**
651
+ * Reports awaiting resolution
652
+ */
653
+ 'openReports': number;
654
+ }
655
+ /**
656
+ * Punishments issued on one UTC day for a single type (BAN/MUTE/KICK/WARNING).
657
+ */
658
+ export interface AdminDashboardPunishmentDaily {
659
+ /**
660
+ * UTC day, YYYY-MM-DD
661
+ */
662
+ 'day': string;
663
+ /**
664
+ * Punishment type
665
+ */
666
+ 'type': string;
667
+ /**
668
+ * Issued this day of this type
669
+ */
670
+ 'count': number;
671
+ }
672
+ /**
673
+ * Report backlog, resolution speed, and category breakdown over the window.
674
+ */
675
+ export interface AdminDashboardReportSummary {
676
+ /**
677
+ * Reports awaiting resolution (all time)
678
+ */
679
+ 'openReports': number;
680
+ /**
681
+ * Reports resolved within the window
682
+ */
683
+ 'resolvedReports': number;
684
+ /**
685
+ * Mean time-to-resolution within the window, seconds
686
+ */
687
+ 'avgResolutionSeconds': number;
688
+ /**
689
+ * Reports filed within the window, grouped by category
690
+ */
691
+ 'byCategory': Array<AdminDashboardCategoryCount>;
692
+ }
693
+ /**
694
+ * Online server count and current player load for a region/game-type pair.
695
+ */
696
+ export interface AdminDashboardServerRegion {
697
+ /**
698
+ * Server region
699
+ */
700
+ 'region': string;
701
+ /**
702
+ * Game type
703
+ */
704
+ 'gameType': string;
705
+ /**
706
+ * Online server instances
707
+ */
708
+ 'onlineServers': number;
709
+ /**
710
+ * Players currently in open sessions on those servers
711
+ */
712
+ 'players': number;
713
+ }
714
+ /**
715
+ * One bar of the trust-factor distribution histogram. Bucket 0 = scores 0--9, bucket 9 = scores 90--100; count is players whose latest snapshot falls in it.
716
+ */
717
+ export interface AdminDashboardTrustBucket {
718
+ /**
719
+ * Histogram bucket index, 0–9 (each spans 10 trust points)
720
+ */
721
+ 'bucket': number;
722
+ /**
723
+ * Players in this bucket
724
+ */
725
+ 'count': number;
726
+ }
537
727
  export interface AdminGetDashboardStats {
538
728
  'totalPlayers': number;
539
729
  'totalConnections': number;
@@ -1329,6 +1519,15 @@ export interface CursoredPageable {
1329
1519
  }
1330
1520
 
1331
1521
 
1522
+ /**
1523
+ * The Discord OAuth2 authorize URL, returned as JSON so a native client can open it directly (system browser → Discord-app universal-link hand-off) rather than following the backend\'s 302. Keeps client_id/scope server-side.
1524
+ */
1525
+ export interface DiscordAuthUrlResponse {
1526
+ /**
1527
+ * Discord OAuth2 authorize URL to open on the client.
1528
+ */
1529
+ 'authorizeUrl': string;
1530
+ }
1332
1531
 
1333
1532
  export const GameType = {
1334
1533
  Rotj: 'ROTJ',
@@ -3254,277 +3453,926 @@ export const AdminConnectionsApiFactory = function (configuration?: Configuratio
3254
3453
  const localVarFp = AdminConnectionsApiFp(configuration)
3255
3454
  return {
3256
3455
  /**
3257
- * 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.
3258
- * @summary Start a location backfill job
3456
+ * 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.
3457
+ * @summary Start a location backfill job
3458
+ * @param {*} [options] Override http request option.
3459
+ * @throws {RequiredError}
3460
+ */
3461
+ backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse> {
3462
+ return localVarFp.backfillLocation(options).then((request) => request(axios, basePath));
3463
+ },
3464
+ /**
3465
+ * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
3466
+ * @summary Create connection bypass
3467
+ * @param {CreateBypassRequest} createBypassRequest
3468
+ * @param {*} [options] Override http request option.
3469
+ * @throws {RequiredError}
3470
+ */
3471
+ createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionBypassResponse> {
3472
+ return localVarFp.createBypass(createBypassRequest, options).then((request) => request(axios, basePath));
3473
+ },
3474
+ /**
3475
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
3476
+ * @summary Get connection detail
3477
+ * @param {number} id
3478
+ * @param {*} [options] Override http request option.
3479
+ * @throws {RequiredError}
3480
+ */
3481
+ getConnection(id: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardConnectionResponse> {
3482
+ return localVarFp.getConnection(id, options).then((request) => request(axios, basePath));
3483
+ },
3484
+ /**
3485
+ * 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.
3486
+ * @summary List players who have used this connection
3487
+ * @param {number} id
3488
+ * @param {Pageable} pageable
3489
+ * @param {*} [options] Override http request option.
3490
+ * @throws {RequiredError}
3491
+ */
3492
+ getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSummary> {
3493
+ return localVarFp.getConnectionPlayers(id, pageable, options).then((request) => request(axios, basePath));
3494
+ },
3495
+ /**
3496
+ * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
3497
+ * @summary List all connections (paginated)
3498
+ * @param {Pageable} pageable
3499
+ * @param {number | null} [createdAfter]
3500
+ * @param {number | null} [createdBefore]
3501
+ * @param {string | null} [ipAddress]
3502
+ * @param {string | null} [uuid]
3503
+ * @param {boolean | null} [isVpn]
3504
+ * @param {*} [options] Override http request option.
3505
+ * @throws {RequiredError}
3506
+ */
3507
+ listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminDashboardConnectionResponse> {
3508
+ return localVarFp.listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
3509
+ },
3510
+ /**
3511
+ * 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).
3512
+ * @summary List recent connections
3513
+ * @param {Pageable} pageable
3514
+ * @param {number | null} [createdAfter]
3515
+ * @param {number | null} [createdBefore]
3516
+ * @param {string | null} [ipAddress]
3517
+ * @param {string | null} [uuid]
3518
+ * @param {boolean | null} [isVpn]
3519
+ * @param {*} [options] Override http request option.
3520
+ * @throws {RequiredError}
3521
+ */
3522
+ listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardConnectionResponse>> {
3523
+ return localVarFp.listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
3524
+ },
3525
+ /**
3526
+ * 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.
3527
+ * @summary Refresh a single VPN check
3528
+ * @param {number} connectionId
3529
+ * @param {string} service
3530
+ * @param {*} [options] Override http request option.
3531
+ * @throws {RequiredError}
3532
+ */
3533
+ recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionCheckResult> {
3534
+ return localVarFp.recheckService(connectionId, service, options).then((request) => request(axios, basePath));
3535
+ },
3536
+ };
3537
+ };
3538
+
3539
+ /**
3540
+ * AdminConnectionsApi - object-oriented interface
3541
+ */
3542
+ export class AdminConnectionsApi extends BaseAPI {
3543
+ /**
3544
+ * 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.
3545
+ * @summary Start a location backfill job
3546
+ * @param {*} [options] Override http request option.
3547
+ * @throws {RequiredError}
3548
+ */
3549
+ public backfillLocation(options?: RawAxiosRequestConfig) {
3550
+ return AdminConnectionsApiFp(this.configuration).backfillLocation(options).then((request) => request(this.axios, this.basePath));
3551
+ }
3552
+
3553
+ /**
3554
+ * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
3555
+ * @summary Create connection bypass
3556
+ * @param {CreateBypassRequest} createBypassRequest
3557
+ * @param {*} [options] Override http request option.
3558
+ * @throws {RequiredError}
3559
+ */
3560
+ public createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig) {
3561
+ return AdminConnectionsApiFp(this.configuration).createBypass(createBypassRequest, options).then((request) => request(this.axios, this.basePath));
3562
+ }
3563
+
3564
+ /**
3565
+ * Single connection by id, enriched with VPN check results and bypass status — same shape as the dashboard list row.
3566
+ * @summary Get connection detail
3567
+ * @param {number} id
3568
+ * @param {*} [options] Override http request option.
3569
+ * @throws {RequiredError}
3570
+ */
3571
+ public getConnection(id: number, options?: RawAxiosRequestConfig) {
3572
+ return AdminConnectionsApiFp(this.configuration).getConnection(id, options).then((request) => request(this.axios, this.basePath));
3573
+ }
3574
+
3575
+ /**
3576
+ * 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.
3577
+ * @summary List players who have used this connection
3578
+ * @param {number} id
3579
+ * @param {Pageable} pageable
3580
+ * @param {*} [options] Override http request option.
3581
+ * @throws {RequiredError}
3582
+ */
3583
+ public getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig) {
3584
+ return AdminConnectionsApiFp(this.configuration).getConnectionPlayers(id, pageable, options).then((request) => request(this.axios, this.basePath));
3585
+ }
3586
+
3587
+ /**
3588
+ * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
3589
+ * @summary List all connections (paginated)
3590
+ * @param {Pageable} pageable
3591
+ * @param {number | null} [createdAfter]
3592
+ * @param {number | null} [createdBefore]
3593
+ * @param {string | null} [ipAddress]
3594
+ * @param {string | null} [uuid]
3595
+ * @param {boolean | null} [isVpn]
3596
+ * @param {*} [options] Override http request option.
3597
+ * @throws {RequiredError}
3598
+ */
3599
+ public listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) {
3600
+ return AdminConnectionsApiFp(this.configuration).listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
3601
+ }
3602
+
3603
+ /**
3604
+ * 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).
3605
+ * @summary List recent connections
3606
+ * @param {Pageable} pageable
3607
+ * @param {number | null} [createdAfter]
3608
+ * @param {number | null} [createdBefore]
3609
+ * @param {string | null} [ipAddress]
3610
+ * @param {string | null} [uuid]
3611
+ * @param {boolean | null} [isVpn]
3612
+ * @param {*} [options] Override http request option.
3613
+ * @throws {RequiredError}
3614
+ */
3615
+ public listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) {
3616
+ return AdminConnectionsApiFp(this.configuration).listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
3617
+ }
3618
+
3619
+ /**
3620
+ * 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.
3621
+ * @summary Refresh a single VPN check
3622
+ * @param {number} connectionId
3623
+ * @param {string} service
3624
+ * @param {*} [options] Override http request option.
3625
+ * @throws {RequiredError}
3626
+ */
3627
+ public recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig) {
3628
+ return AdminConnectionsApiFp(this.configuration).recheckService(connectionId, service, options).then((request) => request(this.axios, this.basePath));
3629
+ }
3630
+ }
3631
+
3632
+
3633
+
3634
+ /**
3635
+ * AdminDashboardApi - axios parameter creator
3636
+ */
3637
+ export const AdminDashboardApiAxiosParamCreator = function (configuration?: Configuration) {
3638
+ return {
3639
+ /**
3640
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
3641
+ * @summary Connection activity heatmap
3642
+ * @param {number} [days] Trailing window in days
3643
+ * @param {*} [options] Override http request option.
3644
+ * @throws {RequiredError}
3645
+ */
3646
+ activityHeatmap: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3647
+ const localVarPath = `/admin/dashboard/connections/activity`;
3648
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3649
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3650
+ let baseOptions;
3651
+ if (configuration) {
3652
+ baseOptions = configuration.baseOptions;
3653
+ }
3654
+
3655
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3656
+ const localVarHeaderParameter = {} as any;
3657
+ const localVarQueryParameter = {} as any;
3658
+
3659
+ // authentication DiscordAuth required
3660
+ // http bearer authentication required
3661
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3662
+
3663
+ if (days !== undefined) {
3664
+ localVarQueryParameter['days'] = days;
3665
+ }
3666
+
3667
+ localVarHeaderParameter['Accept'] = 'application/json';
3668
+
3669
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3670
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3671
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3672
+
3673
+ return {
3674
+ url: toPathString(localVarUrlObj),
3675
+ options: localVarRequestOptions,
3676
+ };
3677
+ },
3678
+ /**
3679
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
3680
+ * @summary Connections by country
3681
+ * @param {number} [days] Trailing window in days
3682
+ * @param {number} [limit] Max countries to return
3683
+ * @param {*} [options] Override http request option.
3684
+ * @throws {RequiredError}
3685
+ */
3686
+ connectionsByCountry: async (days?: number, limit?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3687
+ const localVarPath = `/admin/dashboard/connections/countries`;
3688
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3689
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3690
+ let baseOptions;
3691
+ if (configuration) {
3692
+ baseOptions = configuration.baseOptions;
3693
+ }
3694
+
3695
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3696
+ const localVarHeaderParameter = {} as any;
3697
+ const localVarQueryParameter = {} as any;
3698
+
3699
+ // authentication DiscordAuth required
3700
+ // http bearer authentication required
3701
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3702
+
3703
+ if (days !== undefined) {
3704
+ localVarQueryParameter['days'] = days;
3705
+ }
3706
+
3707
+ if (limit !== undefined) {
3708
+ localVarQueryParameter['limit'] = limit;
3709
+ }
3710
+
3711
+ localVarHeaderParameter['Accept'] = 'application/json';
3712
+
3713
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3714
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3715
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3716
+
3717
+ return {
3718
+ url: toPathString(localVarUrlObj),
3719
+ options: localVarRequestOptions,
3720
+ };
3721
+ },
3722
+ /**
3723
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
3724
+ * @summary Daily session activity
3725
+ * @param {number} [days] Trailing window in days
3726
+ * @param {*} [options] Override http request option.
3727
+ * @throws {RequiredError}
3728
+ */
3729
+ dailySessions: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3730
+ const localVarPath = `/admin/dashboard/sessions/daily`;
3731
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3732
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3733
+ let baseOptions;
3734
+ if (configuration) {
3735
+ baseOptions = configuration.baseOptions;
3736
+ }
3737
+
3738
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3739
+ const localVarHeaderParameter = {} as any;
3740
+ const localVarQueryParameter = {} as any;
3741
+
3742
+ // authentication DiscordAuth required
3743
+ // http bearer authentication required
3744
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3745
+
3746
+ if (days !== undefined) {
3747
+ localVarQueryParameter['days'] = days;
3748
+ }
3749
+
3750
+ localVarHeaderParameter['Accept'] = 'application/json';
3751
+
3752
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3753
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3754
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3755
+
3756
+ return {
3757
+ url: toPathString(localVarUrlObj),
3758
+ options: localVarRequestOptions,
3759
+ };
3760
+ },
3761
+ /**
3762
+ * Returns aggregate counts for clients, connections, and players in the system.
3763
+ * @summary Get dashboard statistics
3764
+ * @param {*} [options] Override http request option.
3765
+ * @throws {RequiredError}
3766
+ */
3767
+ dashboardStats: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3768
+ const localVarPath = `/admin/dashboard`;
3769
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3770
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3771
+ let baseOptions;
3772
+ if (configuration) {
3773
+ baseOptions = configuration.baseOptions;
3774
+ }
3775
+
3776
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3777
+ const localVarHeaderParameter = {} as any;
3778
+ const localVarQueryParameter = {} as any;
3779
+
3780
+ // authentication DiscordAuth required
3781
+ // http bearer authentication required
3782
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3783
+
3784
+ localVarHeaderParameter['Accept'] = 'application/json';
3785
+
3786
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3787
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3788
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3789
+
3790
+ return {
3791
+ url: toPathString(localVarUrlObj),
3792
+ options: localVarRequestOptions,
3793
+ };
3794
+ },
3795
+ /**
3796
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
3797
+ * @summary Dashboard overview tiles
3798
+ * @param {*} [options] Override http request option.
3799
+ * @throws {RequiredError}
3800
+ */
3801
+ overview: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3802
+ const localVarPath = `/admin/dashboard/overview`;
3803
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3804
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3805
+ let baseOptions;
3806
+ if (configuration) {
3807
+ baseOptions = configuration.baseOptions;
3808
+ }
3809
+
3810
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3811
+ const localVarHeaderParameter = {} as any;
3812
+ const localVarQueryParameter = {} as any;
3813
+
3814
+ // authentication DiscordAuth required
3815
+ // http bearer authentication required
3816
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3817
+
3818
+ localVarHeaderParameter['Accept'] = 'application/json';
3819
+
3820
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3821
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3822
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3823
+
3824
+ return {
3825
+ url: toPathString(localVarUrlObj),
3826
+ options: localVarRequestOptions,
3827
+ };
3828
+ },
3829
+ /**
3830
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) — feeds the stacked chart.
3831
+ * @summary Punishments by type over time
3832
+ * @param {number} [days] Trailing window in days
3833
+ * @param {*} [options] Override http request option.
3834
+ * @throws {RequiredError}
3835
+ */
3836
+ punishmentsByType: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3837
+ const localVarPath = `/admin/dashboard/punishments/daily`;
3838
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3839
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3840
+ let baseOptions;
3841
+ if (configuration) {
3842
+ baseOptions = configuration.baseOptions;
3843
+ }
3844
+
3845
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3846
+ const localVarHeaderParameter = {} as any;
3847
+ const localVarQueryParameter = {} as any;
3848
+
3849
+ // authentication DiscordAuth required
3850
+ // http bearer authentication required
3851
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3852
+
3853
+ if (days !== undefined) {
3854
+ localVarQueryParameter['days'] = days;
3855
+ }
3856
+
3857
+ localVarHeaderParameter['Accept'] = 'application/json';
3858
+
3859
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3860
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3861
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3862
+
3863
+ return {
3864
+ url: toPathString(localVarUrlObj),
3865
+ options: localVarRequestOptions,
3866
+ };
3867
+ },
3868
+ /**
3869
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
3870
+ * @summary Report backlog & resolution speed
3871
+ * @param {number} [days] Trailing window in days
3872
+ * @param {*} [options] Override http request option.
3873
+ * @throws {RequiredError}
3874
+ */
3875
+ reportSummary: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3876
+ const localVarPath = `/admin/dashboard/reports/summary`;
3877
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3878
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3879
+ let baseOptions;
3880
+ if (configuration) {
3881
+ baseOptions = configuration.baseOptions;
3882
+ }
3883
+
3884
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3885
+ const localVarHeaderParameter = {} as any;
3886
+ const localVarQueryParameter = {} as any;
3887
+
3888
+ // authentication DiscordAuth required
3889
+ // http bearer authentication required
3890
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3891
+
3892
+ if (days !== undefined) {
3893
+ localVarQueryParameter['days'] = days;
3894
+ }
3895
+
3896
+ localVarHeaderParameter['Accept'] = 'application/json';
3897
+
3898
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3899
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3900
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3901
+
3902
+ return {
3903
+ url: toPathString(localVarUrlObj),
3904
+ options: localVarRequestOptions,
3905
+ };
3906
+ },
3907
+ /**
3908
+ * Online server count and current player load per region/game-type.
3909
+ * @summary Servers & players by region
3910
+ * @param {*} [options] Override http request option.
3911
+ * @throws {RequiredError}
3912
+ */
3913
+ serverRegions: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3914
+ const localVarPath = `/admin/dashboard/servers/summary`;
3915
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3916
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3917
+ let baseOptions;
3918
+ if (configuration) {
3919
+ baseOptions = configuration.baseOptions;
3920
+ }
3921
+
3922
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3923
+ const localVarHeaderParameter = {} as any;
3924
+ const localVarQueryParameter = {} as any;
3925
+
3926
+ // authentication DiscordAuth required
3927
+ // http bearer authentication required
3928
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3929
+
3930
+ localVarHeaderParameter['Accept'] = 'application/json';
3931
+
3932
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3933
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3934
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3935
+
3936
+ return {
3937
+ url: toPathString(localVarUrlObj),
3938
+ options: localVarRequestOptions,
3939
+ };
3940
+ },
3941
+ /**
3942
+ * Moderators ranked by audit-log action count over the window.
3943
+ * @summary Top moderators by activity
3944
+ * @param {number} [days] Trailing window in days
3945
+ * @param {number} [limit] Max moderators to return
3946
+ * @param {*} [options] Override http request option.
3947
+ * @throws {RequiredError}
3948
+ */
3949
+ topModerators: async (days?: number, limit?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3950
+ const localVarPath = `/admin/dashboard/moderators/top`;
3951
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3952
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3953
+ let baseOptions;
3954
+ if (configuration) {
3955
+ baseOptions = configuration.baseOptions;
3956
+ }
3957
+
3958
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3959
+ const localVarHeaderParameter = {} as any;
3960
+ const localVarQueryParameter = {} as any;
3961
+
3962
+ // authentication DiscordAuth required
3963
+ // http bearer authentication required
3964
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3965
+
3966
+ if (days !== undefined) {
3967
+ localVarQueryParameter['days'] = days;
3968
+ }
3969
+
3970
+ if (limit !== undefined) {
3971
+ localVarQueryParameter['limit'] = limit;
3972
+ }
3973
+
3974
+ localVarHeaderParameter['Accept'] = 'application/json';
3975
+
3976
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3977
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3978
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3979
+
3980
+ return {
3981
+ url: toPathString(localVarUrlObj),
3982
+ options: localVarRequestOptions,
3983
+ };
3984
+ },
3985
+ /**
3986
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
3987
+ * @summary Trust-factor distribution
3988
+ * @param {*} [options] Override http request option.
3989
+ * @throws {RequiredError}
3990
+ */
3991
+ trustDistribution: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3992
+ const localVarPath = `/admin/dashboard/trust/distribution`;
3993
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3994
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3995
+ let baseOptions;
3996
+ if (configuration) {
3997
+ baseOptions = configuration.baseOptions;
3998
+ }
3999
+
4000
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
4001
+ const localVarHeaderParameter = {} as any;
4002
+ const localVarQueryParameter = {} as any;
4003
+
4004
+ // authentication DiscordAuth required
4005
+ // http bearer authentication required
4006
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4007
+
4008
+ localVarHeaderParameter['Accept'] = 'application/json';
4009
+
4010
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4011
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4012
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4013
+
4014
+ return {
4015
+ url: toPathString(localVarUrlObj),
4016
+ options: localVarRequestOptions,
4017
+ };
4018
+ },
4019
+ }
4020
+ };
4021
+
4022
+ /**
4023
+ * AdminDashboardApi - functional programming interface
4024
+ */
4025
+ export const AdminDashboardApiFp = function(configuration?: Configuration) {
4026
+ const localVarAxiosParamCreator = AdminDashboardApiAxiosParamCreator(configuration)
4027
+ return {
4028
+ /**
4029
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
4030
+ * @summary Connection activity heatmap
4031
+ * @param {number} [days] Trailing window in days
4032
+ * @param {*} [options] Override http request option.
4033
+ * @throws {RequiredError}
4034
+ */
4035
+ async activityHeatmap(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardActivityCell>>> {
4036
+ const localVarAxiosArgs = await localVarAxiosParamCreator.activityHeatmap(days, options);
4037
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4038
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.activityHeatmap']?.[localVarOperationServerIndex]?.url;
4039
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4040
+ },
4041
+ /**
4042
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
4043
+ * @summary Connections by country
4044
+ * @param {number} [days] Trailing window in days
4045
+ * @param {number} [limit] Max countries to return
4046
+ * @param {*} [options] Override http request option.
4047
+ * @throws {RequiredError}
4048
+ */
4049
+ async connectionsByCountry(days?: number, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardCountryCount>>> {
4050
+ const localVarAxiosArgs = await localVarAxiosParamCreator.connectionsByCountry(days, limit, options);
4051
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4052
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.connectionsByCountry']?.[localVarOperationServerIndex]?.url;
4053
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4054
+ },
4055
+ /**
4056
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
4057
+ * @summary Daily session activity
4058
+ * @param {number} [days] Trailing window in days
4059
+ * @param {*} [options] Override http request option.
4060
+ * @throws {RequiredError}
4061
+ */
4062
+ async dailySessions(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardDailySessions>>> {
4063
+ const localVarAxiosArgs = await localVarAxiosParamCreator.dailySessions(days, options);
4064
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4065
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.dailySessions']?.[localVarOperationServerIndex]?.url;
4066
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4067
+ },
4068
+ /**
4069
+ * Returns aggregate counts for clients, connections, and players in the system.
4070
+ * @summary Get dashboard statistics
4071
+ * @param {*} [options] Override http request option.
4072
+ * @throws {RequiredError}
4073
+ */
4074
+ async dashboardStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetDashboardStats>> {
4075
+ const localVarAxiosArgs = await localVarAxiosParamCreator.dashboardStats(options);
4076
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4077
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.dashboardStats']?.[localVarOperationServerIndex]?.url;
4078
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4079
+ },
4080
+ /**
4081
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
4082
+ * @summary Dashboard overview tiles
4083
+ * @param {*} [options] Override http request option.
4084
+ * @throws {RequiredError}
4085
+ */
4086
+ async overview(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminDashboardOverview>> {
4087
+ const localVarAxiosArgs = await localVarAxiosParamCreator.overview(options);
4088
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4089
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.overview']?.[localVarOperationServerIndex]?.url;
4090
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4091
+ },
4092
+ /**
4093
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) — feeds the stacked chart.
4094
+ * @summary Punishments by type over time
4095
+ * @param {number} [days] Trailing window in days
4096
+ * @param {*} [options] Override http request option.
4097
+ * @throws {RequiredError}
4098
+ */
4099
+ async punishmentsByType(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardPunishmentDaily>>> {
4100
+ const localVarAxiosArgs = await localVarAxiosParamCreator.punishmentsByType(days, options);
4101
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4102
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.punishmentsByType']?.[localVarOperationServerIndex]?.url;
4103
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4104
+ },
4105
+ /**
4106
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
4107
+ * @summary Report backlog & resolution speed
4108
+ * @param {number} [days] Trailing window in days
4109
+ * @param {*} [options] Override http request option.
4110
+ * @throws {RequiredError}
4111
+ */
4112
+ async reportSummary(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminDashboardReportSummary>> {
4113
+ const localVarAxiosArgs = await localVarAxiosParamCreator.reportSummary(days, options);
4114
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4115
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.reportSummary']?.[localVarOperationServerIndex]?.url;
4116
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4117
+ },
4118
+ /**
4119
+ * Online server count and current player load per region/game-type.
4120
+ * @summary Servers & players by region
4121
+ * @param {*} [options] Override http request option.
4122
+ * @throws {RequiredError}
4123
+ */
4124
+ async serverRegions(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardServerRegion>>> {
4125
+ const localVarAxiosArgs = await localVarAxiosParamCreator.serverRegions(options);
4126
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4127
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.serverRegions']?.[localVarOperationServerIndex]?.url;
4128
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4129
+ },
4130
+ /**
4131
+ * Moderators ranked by audit-log action count over the window.
4132
+ * @summary Top moderators by activity
4133
+ * @param {number} [days] Trailing window in days
4134
+ * @param {number} [limit] Max moderators to return
4135
+ * @param {*} [options] Override http request option.
4136
+ * @throws {RequiredError}
4137
+ */
4138
+ async topModerators(days?: number, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardModeratorActivity>>> {
4139
+ const localVarAxiosArgs = await localVarAxiosParamCreator.topModerators(days, limit, options);
4140
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4141
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.topModerators']?.[localVarOperationServerIndex]?.url;
4142
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4143
+ },
4144
+ /**
4145
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
4146
+ * @summary Trust-factor distribution
4147
+ * @param {*} [options] Override http request option.
4148
+ * @throws {RequiredError}
4149
+ */
4150
+ async trustDistribution(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardTrustBucket>>> {
4151
+ const localVarAxiosArgs = await localVarAxiosParamCreator.trustDistribution(options);
4152
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4153
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.trustDistribution']?.[localVarOperationServerIndex]?.url;
4154
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4155
+ },
4156
+ }
4157
+ };
4158
+
4159
+ /**
4160
+ * AdminDashboardApi - factory interface
4161
+ */
4162
+ export const AdminDashboardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
4163
+ const localVarFp = AdminDashboardApiFp(configuration)
4164
+ return {
4165
+ /**
4166
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
4167
+ * @summary Connection activity heatmap
4168
+ * @param {number} [days] Trailing window in days
4169
+ * @param {*} [options] Override http request option.
4170
+ * @throws {RequiredError}
4171
+ */
4172
+ activityHeatmap(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardActivityCell>> {
4173
+ return localVarFp.activityHeatmap(days, options).then((request) => request(axios, basePath));
4174
+ },
4175
+ /**
4176
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
4177
+ * @summary Connections by country
4178
+ * @param {number} [days] Trailing window in days
4179
+ * @param {number} [limit] Max countries to return
4180
+ * @param {*} [options] Override http request option.
4181
+ * @throws {RequiredError}
4182
+ */
4183
+ connectionsByCountry(days?: number, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardCountryCount>> {
4184
+ return localVarFp.connectionsByCountry(days, limit, options).then((request) => request(axios, basePath));
4185
+ },
4186
+ /**
4187
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
4188
+ * @summary Daily session activity
4189
+ * @param {number} [days] Trailing window in days
4190
+ * @param {*} [options] Override http request option.
4191
+ * @throws {RequiredError}
4192
+ */
4193
+ dailySessions(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardDailySessions>> {
4194
+ return localVarFp.dailySessions(days, options).then((request) => request(axios, basePath));
4195
+ },
4196
+ /**
4197
+ * Returns aggregate counts for clients, connections, and players in the system.
4198
+ * @summary Get dashboard statistics
3259
4199
  * @param {*} [options] Override http request option.
3260
4200
  * @throws {RequiredError}
3261
4201
  */
3262
- backfillLocation(options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse> {
3263
- return localVarFp.backfillLocation(options).then((request) => request(axios, basePath));
4202
+ dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats> {
4203
+ return localVarFp.dashboardStats(options).then((request) => request(axios, basePath));
3264
4204
  },
3265
4205
  /**
3266
- * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
3267
- * @summary Create connection bypass
3268
- * @param {CreateBypassRequest} createBypassRequest
4206
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
4207
+ * @summary Dashboard overview tiles
3269
4208
  * @param {*} [options] Override http request option.
3270
4209
  * @throws {RequiredError}
3271
4210
  */
3272
- createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionBypassResponse> {
3273
- return localVarFp.createBypass(createBypassRequest, options).then((request) => request(axios, basePath));
4211
+ overview(options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardOverview> {
4212
+ return localVarFp.overview(options).then((request) => request(axios, basePath));
3274
4213
  },
3275
4214
  /**
3276
- * Single connection by id, enriched with VPN check results and bypass status same shape as the dashboard list row.
3277
- * @summary Get connection detail
3278
- * @param {number} id
4215
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING)feeds the stacked chart.
4216
+ * @summary Punishments by type over time
4217
+ * @param {number} [days] Trailing window in days
3279
4218
  * @param {*} [options] Override http request option.
3280
4219
  * @throws {RequiredError}
3281
4220
  */
3282
- getConnection(id: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardConnectionResponse> {
3283
- return localVarFp.getConnection(id, options).then((request) => request(axios, basePath));
4221
+ punishmentsByType(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardPunishmentDaily>> {
4222
+ return localVarFp.punishmentsByType(days, options).then((request) => request(axios, basePath));
3284
4223
  },
3285
4224
  /**
3286
- * 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.
3287
- * @summary List players who have used this connection
3288
- * @param {number} id
3289
- * @param {Pageable} pageable
4225
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
4226
+ * @summary Report backlog & resolution speed
4227
+ * @param {number} [days] Trailing window in days
3290
4228
  * @param {*} [options] Override http request option.
3291
4229
  * @throws {RequiredError}
3292
4230
  */
3293
- getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminPlayerSummary> {
3294
- return localVarFp.getConnectionPlayers(id, pageable, options).then((request) => request(axios, basePath));
4231
+ reportSummary(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardReportSummary> {
4232
+ return localVarFp.reportSummary(days, options).then((request) => request(axios, basePath));
3295
4233
  },
3296
4234
  /**
3297
- * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
3298
- * @summary List all connections (paginated)
3299
- * @param {Pageable} pageable
3300
- * @param {number | null} [createdAfter]
3301
- * @param {number | null} [createdBefore]
3302
- * @param {string | null} [ipAddress]
3303
- * @param {string | null} [uuid]
3304
- * @param {boolean | null} [isVpn]
4235
+ * Online server count and current player load per region/game-type.
4236
+ * @summary Servers & players by region
3305
4237
  * @param {*} [options] Override http request option.
3306
4238
  * @throws {RequiredError}
3307
4239
  */
3308
- listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<PageAdminDashboardConnectionResponse> {
3309
- return localVarFp.listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
4240
+ serverRegions(options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardServerRegion>> {
4241
+ return localVarFp.serverRegions(options).then((request) => request(axios, basePath));
3310
4242
  },
3311
4243
  /**
3312
- * 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).
3313
- * @summary List recent connections
3314
- * @param {Pageable} pageable
3315
- * @param {number | null} [createdAfter]
3316
- * @param {number | null} [createdBefore]
3317
- * @param {string | null} [ipAddress]
3318
- * @param {string | null} [uuid]
3319
- * @param {boolean | null} [isVpn]
4244
+ * Moderators ranked by audit-log action count over the window.
4245
+ * @summary Top moderators by activity
4246
+ * @param {number} [days] Trailing window in days
4247
+ * @param {number} [limit] Max moderators to return
3320
4248
  * @param {*} [options] Override http request option.
3321
4249
  * @throws {RequiredError}
3322
4250
  */
3323
- listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardConnectionResponse>> {
3324
- return localVarFp.listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(axios, basePath));
4251
+ topModerators(days?: number, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardModeratorActivity>> {
4252
+ return localVarFp.topModerators(days, limit, options).then((request) => request(axios, basePath));
3325
4253
  },
3326
4254
  /**
3327
- * 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.
3328
- * @summary Refresh a single VPN check
3329
- * @param {number} connectionId
3330
- * @param {string} service
4255
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
4256
+ * @summary Trust-factor distribution
3331
4257
  * @param {*} [options] Override http request option.
3332
4258
  * @throws {RequiredError}
3333
4259
  */
3334
- recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig): AxiosPromise<AdminConnectionCheckResult> {
3335
- return localVarFp.recheckService(connectionId, service, options).then((request) => request(axios, basePath));
4260
+ trustDistribution(options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardTrustBucket>> {
4261
+ return localVarFp.trustDistribution(options).then((request) => request(axios, basePath));
3336
4262
  },
3337
4263
  };
3338
4264
  };
3339
4265
 
3340
4266
  /**
3341
- * AdminConnectionsApi - object-oriented interface
4267
+ * AdminDashboardApi - object-oriented interface
3342
4268
  */
3343
- export class AdminConnectionsApi extends BaseAPI {
4269
+ export class AdminDashboardApi extends BaseAPI {
3344
4270
  /**
3345
- * 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.
3346
- * @summary Start a location backfill job
4271
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
4272
+ * @summary Connection activity heatmap
4273
+ * @param {number} [days] Trailing window in days
3347
4274
  * @param {*} [options] Override http request option.
3348
4275
  * @throws {RequiredError}
3349
4276
  */
3350
- public backfillLocation(options?: RawAxiosRequestConfig) {
3351
- return AdminConnectionsApiFp(this.configuration).backfillLocation(options).then((request) => request(this.axios, this.basePath));
4277
+ public activityHeatmap(days?: number, options?: RawAxiosRequestConfig) {
4278
+ return AdminDashboardApiFp(this.configuration).activityHeatmap(days, options).then((request) => request(this.axios, this.basePath));
3352
4279
  }
3353
4280
 
3354
4281
  /**
3355
- * Creates a temporary bypass for an IP address, expiring at the specified epoch timestamp (milliseconds since Unix epoch).
3356
- * @summary Create connection bypass
3357
- * @param {CreateBypassRequest} createBypassRequest
4282
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
4283
+ * @summary Connections by country
4284
+ * @param {number} [days] Trailing window in days
4285
+ * @param {number} [limit] Max countries to return
3358
4286
  * @param {*} [options] Override http request option.
3359
4287
  * @throws {RequiredError}
3360
4288
  */
3361
- public createBypass(createBypassRequest: CreateBypassRequest, options?: RawAxiosRequestConfig) {
3362
- return AdminConnectionsApiFp(this.configuration).createBypass(createBypassRequest, options).then((request) => request(this.axios, this.basePath));
4289
+ public connectionsByCountry(days?: number, limit?: number, options?: RawAxiosRequestConfig) {
4290
+ return AdminDashboardApiFp(this.configuration).connectionsByCountry(days, limit, options).then((request) => request(this.axios, this.basePath));
3363
4291
  }
3364
4292
 
3365
4293
  /**
3366
- * Single connection by id, enriched with VPN check results and bypass status same shape as the dashboard list row.
3367
- * @summary Get connection detail
3368
- * @param {number} id
4294
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
4295
+ * @summary Daily session activity
4296
+ * @param {number} [days] Trailing window in days
3369
4297
  * @param {*} [options] Override http request option.
3370
4298
  * @throws {RequiredError}
3371
4299
  */
3372
- public getConnection(id: number, options?: RawAxiosRequestConfig) {
3373
- return AdminConnectionsApiFp(this.configuration).getConnection(id, options).then((request) => request(this.axios, this.basePath));
4300
+ public dailySessions(days?: number, options?: RawAxiosRequestConfig) {
4301
+ return AdminDashboardApiFp(this.configuration).dailySessions(days, options).then((request) => request(this.axios, this.basePath));
3374
4302
  }
3375
4303
 
3376
4304
  /**
3377
- * 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.
3378
- * @summary List players who have used this connection
3379
- * @param {number} id
3380
- * @param {Pageable} pageable
4305
+ * Returns aggregate counts for clients, connections, and players in the system.
4306
+ * @summary Get dashboard statistics
3381
4307
  * @param {*} [options] Override http request option.
3382
4308
  * @throws {RequiredError}
3383
4309
  */
3384
- public getConnectionPlayers(id: number, pageable: Pageable, options?: RawAxiosRequestConfig) {
3385
- return AdminConnectionsApiFp(this.configuration).getConnectionPlayers(id, pageable, options).then((request) => request(this.axios, this.basePath));
4310
+ public dashboardStats(options?: RawAxiosRequestConfig) {
4311
+ return AdminDashboardApiFp(this.configuration).dashboardStats(options).then((request) => request(this.axios, this.basePath));
3386
4312
  }
3387
4313
 
3388
4314
  /**
3389
- * Returns a paginated list of all connections with a total count. Supports filtering by IP address, UUID, and VPN status.
3390
- * @summary List all connections (paginated)
3391
- * @param {Pageable} pageable
3392
- * @param {number | null} [createdAfter]
3393
- * @param {number | null} [createdBefore]
3394
- * @param {string | null} [ipAddress]
3395
- * @param {string | null} [uuid]
3396
- * @param {boolean | null} [isVpn]
4315
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
4316
+ * @summary Dashboard overview tiles
3397
4317
  * @param {*} [options] Override http request option.
3398
4318
  * @throws {RequiredError}
3399
4319
  */
3400
- public listAllConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) {
3401
- return AdminConnectionsApiFp(this.configuration).listAllConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
4320
+ public overview(options?: RawAxiosRequestConfig) {
4321
+ return AdminDashboardApiFp(this.configuration).overview(options).then((request) => request(this.axios, this.basePath));
3402
4322
  }
3403
4323
 
3404
4324
  /**
3405
- * 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).
3406
- * @summary List recent connections
3407
- * @param {Pageable} pageable
3408
- * @param {number | null} [createdAfter]
3409
- * @param {number | null} [createdBefore]
3410
- * @param {string | null} [ipAddress]
3411
- * @param {string | null} [uuid]
3412
- * @param {boolean | null} [isVpn]
4325
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) feeds the stacked chart.
4326
+ * @summary Punishments by type over time
4327
+ * @param {number} [days] Trailing window in days
3413
4328
  * @param {*} [options] Override http request option.
3414
4329
  * @throws {RequiredError}
3415
4330
  */
3416
- public listConnections(pageable: Pageable, createdAfter?: number | null, createdBefore?: number | null, ipAddress?: string | null, uuid?: string | null, isVpn?: boolean | null, options?: RawAxiosRequestConfig) {
3417
- return AdminConnectionsApiFp(this.configuration).listConnections(pageable, createdAfter, createdBefore, ipAddress, uuid, isVpn, options).then((request) => request(this.axios, this.basePath));
4331
+ public punishmentsByType(days?: number, options?: RawAxiosRequestConfig) {
4332
+ return AdminDashboardApiFp(this.configuration).punishmentsByType(days, options).then((request) => request(this.axios, this.basePath));
3418
4333
  }
3419
4334
 
3420
4335
  /**
3421
- * 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.
3422
- * @summary Refresh a single VPN check
3423
- * @param {number} connectionId
3424
- * @param {string} service
4336
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
4337
+ * @summary Report backlog & resolution speed
4338
+ * @param {number} [days] Trailing window in days
3425
4339
  * @param {*} [options] Override http request option.
3426
4340
  * @throws {RequiredError}
3427
4341
  */
3428
- public recheckService(connectionId: number, service: string, options?: RawAxiosRequestConfig) {
3429
- return AdminConnectionsApiFp(this.configuration).recheckService(connectionId, service, options).then((request) => request(this.axios, this.basePath));
4342
+ public reportSummary(days?: number, options?: RawAxiosRequestConfig) {
4343
+ return AdminDashboardApiFp(this.configuration).reportSummary(days, options).then((request) => request(this.axios, this.basePath));
3430
4344
  }
3431
- }
3432
-
3433
-
3434
-
3435
- /**
3436
- * AdminDashboardApi - axios parameter creator
3437
- */
3438
- export const AdminDashboardApiAxiosParamCreator = function (configuration?: Configuration) {
3439
- return {
3440
- /**
3441
- * Returns aggregate counts for clients, connections, and players in the system.
3442
- * @summary Get dashboard statistics
3443
- * @param {*} [options] Override http request option.
3444
- * @throws {RequiredError}
3445
- */
3446
- dashboardStats: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3447
- const localVarPath = `/admin/dashboard`;
3448
- // use dummy base URL string because the URL constructor only accepts absolute URLs.
3449
- const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3450
- let baseOptions;
3451
- if (configuration) {
3452
- baseOptions = configuration.baseOptions;
3453
- }
3454
-
3455
- const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3456
- const localVarHeaderParameter = {} as any;
3457
- const localVarQueryParameter = {} as any;
3458
-
3459
- // authentication DiscordAuth required
3460
- // http bearer authentication required
3461
- await setBearerAuthToObject(localVarHeaderParameter, configuration)
3462
-
3463
- localVarHeaderParameter['Accept'] = 'application/json';
3464
-
3465
- setSearchParams(localVarUrlObj, localVarQueryParameter);
3466
- let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3467
- localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3468
4345
 
3469
- return {
3470
- url: toPathString(localVarUrlObj),
3471
- options: localVarRequestOptions,
3472
- };
3473
- },
4346
+ /**
4347
+ * Online server count and current player load per region/game-type.
4348
+ * @summary Servers & players by region
4349
+ * @param {*} [options] Override http request option.
4350
+ * @throws {RequiredError}
4351
+ */
4352
+ public serverRegions(options?: RawAxiosRequestConfig) {
4353
+ return AdminDashboardApiFp(this.configuration).serverRegions(options).then((request) => request(this.axios, this.basePath));
3474
4354
  }
3475
- };
3476
4355
 
3477
- /**
3478
- * AdminDashboardApi - functional programming interface
3479
- */
3480
- export const AdminDashboardApiFp = function(configuration?: Configuration) {
3481
- const localVarAxiosParamCreator = AdminDashboardApiAxiosParamCreator(configuration)
3482
- return {
3483
- /**
3484
- * Returns aggregate counts for clients, connections, and players in the system.
3485
- * @summary Get dashboard statistics
3486
- * @param {*} [options] Override http request option.
3487
- * @throws {RequiredError}
3488
- */
3489
- async dashboardStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetDashboardStats>> {
3490
- const localVarAxiosArgs = await localVarAxiosParamCreator.dashboardStats(options);
3491
- const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
3492
- const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.dashboardStats']?.[localVarOperationServerIndex]?.url;
3493
- return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
3494
- },
4356
+ /**
4357
+ * Moderators ranked by audit-log action count over the window.
4358
+ * @summary Top moderators by activity
4359
+ * @param {number} [days] Trailing window in days
4360
+ * @param {number} [limit] Max moderators to return
4361
+ * @param {*} [options] Override http request option.
4362
+ * @throws {RequiredError}
4363
+ */
4364
+ public topModerators(days?: number, limit?: number, options?: RawAxiosRequestConfig) {
4365
+ return AdminDashboardApiFp(this.configuration).topModerators(days, limit, options).then((request) => request(this.axios, this.basePath));
3495
4366
  }
3496
- };
3497
-
3498
- /**
3499
- * AdminDashboardApi - factory interface
3500
- */
3501
- export const AdminDashboardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
3502
- const localVarFp = AdminDashboardApiFp(configuration)
3503
- return {
3504
- /**
3505
- * Returns aggregate counts for clients, connections, and players in the system.
3506
- * @summary Get dashboard statistics
3507
- * @param {*} [options] Override http request option.
3508
- * @throws {RequiredError}
3509
- */
3510
- dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats> {
3511
- return localVarFp.dashboardStats(options).then((request) => request(axios, basePath));
3512
- },
3513
- };
3514
- };
3515
4367
 
3516
- /**
3517
- * AdminDashboardApi - object-oriented interface
3518
- */
3519
- export class AdminDashboardApi extends BaseAPI {
3520
4368
  /**
3521
- * Returns aggregate counts for clients, connections, and players in the system.
3522
- * @summary Get dashboard statistics
4369
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
4370
+ * @summary Trust-factor distribution
3523
4371
  * @param {*} [options] Override http request option.
3524
4372
  * @throws {RequiredError}
3525
4373
  */
3526
- public dashboardStats(options?: RawAxiosRequestConfig) {
3527
- return AdminDashboardApiFp(this.configuration).dashboardStats(options).then((request) => request(this.axios, this.basePath));
4374
+ public trustDistribution(options?: RawAxiosRequestConfig) {
4375
+ return AdminDashboardApiFp(this.configuration).trustDistribution(options).then((request) => request(this.axios, this.basePath));
3528
4376
  }
3529
4377
  }
3530
4378
 
@@ -6322,6 +7170,45 @@ export class AdminReportsApi extends BaseAPI {
6322
7170
  */
6323
7171
  export const AuthenticationApiAxiosParamCreator = function (configuration?: Configuration) {
6324
7172
  return {
7173
+ /**
7174
+ * Returns the Discord OAuth2 authorize URL as JSON so a native app can open it directly (system browser → Discord-app universal-link hand-off) instead of following the 302. The `redirect` is validated against the allowlist and carried through Discord via `state`, exactly like the browser flow; the callback still bounces the JWT to that target.
7175
+ * @summary Discord - Authorize URL (native clients)
7176
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7177
+ * @param {*} [options] Override http request option.
7178
+ * @throws {RequiredError}
7179
+ */
7180
+ authorizeUrl: async (redirect?: string | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
7181
+ const localVarPath = `/auth/discord/url`;
7182
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
7183
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
7184
+ let baseOptions;
7185
+ if (configuration) {
7186
+ baseOptions = configuration.baseOptions;
7187
+ }
7188
+
7189
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
7190
+ const localVarHeaderParameter = {} as any;
7191
+ const localVarQueryParameter = {} as any;
7192
+
7193
+ // authentication DiscordAuth required
7194
+ // http bearer authentication required
7195
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
7196
+
7197
+ if (redirect !== undefined) {
7198
+ localVarQueryParameter['redirect'] = redirect;
7199
+ }
7200
+
7201
+ localVarHeaderParameter['Accept'] = 'application/json';
7202
+
7203
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
7204
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
7205
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
7206
+
7207
+ return {
7208
+ url: toPathString(localVarUrlObj),
7209
+ options: localVarRequestOptions,
7210
+ };
7211
+ },
6325
7212
  /**
6326
7213
  * Receives the authorization code from Discord after the user approves the OAuth2 prompt. Exchanges the code for an access token, verifies the user holds an admin guild role, then redirects back to the admin frontend with a signed JWT in the query string (`?token=...`). On failure, redirects with `?error=<reason>` instead.
6327
7214
  * @summary Discord - OAuth2 callback
@@ -6503,6 +7390,19 @@ export const AuthenticationApiAxiosParamCreator = function (configuration?: Conf
6503
7390
  export const AuthenticationApiFp = function(configuration?: Configuration) {
6504
7391
  const localVarAxiosParamCreator = AuthenticationApiAxiosParamCreator(configuration)
6505
7392
  return {
7393
+ /**
7394
+ * Returns the Discord OAuth2 authorize URL as JSON so a native app can open it directly (system browser → Discord-app universal-link hand-off) instead of following the 302. The `redirect` is validated against the allowlist and carried through Discord via `state`, exactly like the browser flow; the callback still bounces the JWT to that target.
7395
+ * @summary Discord - Authorize URL (native clients)
7396
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7397
+ * @param {*} [options] Override http request option.
7398
+ * @throws {RequiredError}
7399
+ */
7400
+ async authorizeUrl(redirect?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DiscordAuthUrlResponse>> {
7401
+ const localVarAxiosArgs = await localVarAxiosParamCreator.authorizeUrl(redirect, options);
7402
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
7403
+ const localVarOperationServerBasePath = operationServerMap['AuthenticationApi.authorizeUrl']?.[localVarOperationServerIndex]?.url;
7404
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
7405
+ },
6506
7406
  /**
6507
7407
  * Receives the authorization code from Discord after the user approves the OAuth2 prompt. Exchanges the code for an access token, verifies the user holds an admin guild role, then redirects back to the admin frontend with a signed JWT in the query string (`?token=...`). On failure, redirects with `?error=<reason>` instead.
6508
7408
  * @summary Discord - OAuth2 callback
@@ -6567,6 +7467,16 @@ export const AuthenticationApiFp = function(configuration?: Configuration) {
6567
7467
  export const AuthenticationApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
6568
7468
  const localVarFp = AuthenticationApiFp(configuration)
6569
7469
  return {
7470
+ /**
7471
+ * Returns the Discord OAuth2 authorize URL as JSON so a native app can open it directly (system browser → Discord-app universal-link hand-off) instead of following the 302. The `redirect` is validated against the allowlist and carried through Discord via `state`, exactly like the browser flow; the callback still bounces the JWT to that target.
7472
+ * @summary Discord - Authorize URL (native clients)
7473
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7474
+ * @param {*} [options] Override http request option.
7475
+ * @throws {RequiredError}
7476
+ */
7477
+ authorizeUrl(redirect?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<DiscordAuthUrlResponse> {
7478
+ return localVarFp.authorizeUrl(redirect, options).then((request) => request(axios, basePath));
7479
+ },
6570
7480
  /**
6571
7481
  * Receives the authorization code from Discord after the user approves the OAuth2 prompt. Exchanges the code for an access token, verifies the user holds an admin guild role, then redirects back to the admin frontend with a signed JWT in the query string (`?token=...`). On failure, redirects with `?error=<reason>` instead.
6572
7482
  * @summary Discord - OAuth2 callback
@@ -6617,6 +7527,17 @@ export const AuthenticationApiFactory = function (configuration?: Configuration,
6617
7527
  * AuthenticationApi - object-oriented interface
6618
7528
  */
6619
7529
  export class AuthenticationApi extends BaseAPI {
7530
+ /**
7531
+ * Returns the Discord OAuth2 authorize URL as JSON so a native app can open it directly (system browser → Discord-app universal-link hand-off) instead of following the 302. The `redirect` is validated against the allowlist and carried through Discord via `state`, exactly like the browser flow; the callback still bounces the JWT to that target.
7532
+ * @summary Discord - Authorize URL (native clients)
7533
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7534
+ * @param {*} [options] Override http request option.
7535
+ * @throws {RequiredError}
7536
+ */
7537
+ public authorizeUrl(redirect?: string | null, options?: RawAxiosRequestConfig) {
7538
+ return AuthenticationApiFp(this.configuration).authorizeUrl(redirect, options).then((request) => request(this.axios, this.basePath));
7539
+ }
7540
+
6620
7541
  /**
6621
7542
  * Receives the authorization code from Discord after the user approves the OAuth2 prompt. Exchanges the code for an access token, verifies the user holds an admin guild role, then redirects back to the admin frontend with a signed JWT in the query string (`?token=...`). On failure, redirects with `?error=<reason>` instead.
6622
7543
  * @summary Discord - OAuth2 callback