@rebornteam/reborn-api 4.9.0 → 4.9.2

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.
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.0
7
+ * The version of the OpenAPI document: 4.9.2
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;
@@ -3438,13 +3628,14 @@ export class AdminConnectionsApi extends BaseAPI {
3438
3628
  export const AdminDashboardApiAxiosParamCreator = function (configuration?: Configuration) {
3439
3629
  return {
3440
3630
  /**
3441
- * Returns aggregate counts for clients, connections, and players in the system.
3442
- * @summary Get dashboard statistics
3631
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
3632
+ * @summary Connection activity heatmap
3633
+ * @param {number} [days] Trailing window in days
3443
3634
  * @param {*} [options] Override http request option.
3444
3635
  * @throws {RequiredError}
3445
3636
  */
3446
- dashboardStats: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3447
- const localVarPath = `/admin/dashboard`;
3637
+ activityHeatmap: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3638
+ const localVarPath = `/admin/dashboard/connections/activity`;
3448
3639
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
3449
3640
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3450
3641
  let baseOptions;
@@ -3460,6 +3651,10 @@ export const AdminDashboardApiAxiosParamCreator = function (configuration?: Conf
3460
3651
  // http bearer authentication required
3461
3652
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
3462
3653
 
3654
+ if (days !== undefined) {
3655
+ localVarQueryParameter['days'] = days;
3656
+ }
3657
+
3463
3658
  localVarHeaderParameter['Accept'] = 'application/json';
3464
3659
 
3465
3660
  setSearchParams(localVarUrlObj, localVarQueryParameter);
@@ -3471,82 +3666,59 @@ export const AdminDashboardApiAxiosParamCreator = function (configuration?: Conf
3471
3666
  options: localVarRequestOptions,
3472
3667
  };
3473
3668
  },
3474
- }
3475
- };
3476
-
3477
- /**
3478
- * AdminDashboardApi - functional programming interface
3479
- */
3480
- export const AdminDashboardApiFp = function(configuration?: Configuration) {
3481
- const localVarAxiosParamCreator = AdminDashboardApiAxiosParamCreator(configuration)
3482
- return {
3483
3669
  /**
3484
- * Returns aggregate counts for clients, connections, and players in the system.
3485
- * @summary Get dashboard statistics
3670
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
3671
+ * @summary Connections by country
3672
+ * @param {number} [days] Trailing window in days
3673
+ * @param {number} [limit] Max countries to return
3486
3674
  * @param {*} [options] Override http request option.
3487
3675
  * @throws {RequiredError}
3488
3676
  */
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
- },
3495
- }
3496
- };
3677
+ connectionsByCountry: async (days?: number, limit?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3678
+ const localVarPath = `/admin/dashboard/connections/countries`;
3679
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3680
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3681
+ let baseOptions;
3682
+ if (configuration) {
3683
+ baseOptions = configuration.baseOptions;
3684
+ }
3497
3685
 
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
- };
3686
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3687
+ const localVarHeaderParameter = {} as any;
3688
+ const localVarQueryParameter = {} as any;
3515
3689
 
3516
- /**
3517
- * AdminDashboardApi - object-oriented interface
3518
- */
3519
- export class AdminDashboardApi extends BaseAPI {
3520
- /**
3521
- * Returns aggregate counts for clients, connections, and players in the system.
3522
- * @summary Get dashboard statistics
3523
- * @param {*} [options] Override http request option.
3524
- * @throws {RequiredError}
3525
- */
3526
- public dashboardStats(options?: RawAxiosRequestConfig) {
3527
- return AdminDashboardApiFp(this.configuration).dashboardStats(options).then((request) => request(this.axios, this.basePath));
3528
- }
3529
- }
3690
+ // authentication DiscordAuth required
3691
+ // http bearer authentication required
3692
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3693
+
3694
+ if (days !== undefined) {
3695
+ localVarQueryParameter['days'] = days;
3696
+ }
3530
3697
 
3698
+ if (limit !== undefined) {
3699
+ localVarQueryParameter['limit'] = limit;
3700
+ }
3531
3701
 
3702
+ localVarHeaderParameter['Accept'] = 'application/json';
3532
3703
 
3533
- /**
3534
- * AdminJobsApi - axios parameter creator
3535
- */
3536
- export const AdminJobsApiAxiosParamCreator = function (configuration?: Configuration) {
3537
- return {
3704
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3705
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3706
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3707
+
3708
+ return {
3709
+ url: toPathString(localVarUrlObj),
3710
+ options: localVarRequestOptions,
3711
+ };
3712
+ },
3538
3713
  /**
3539
- * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
3540
- * @summary Request cancellation of an async job
3541
- * @param {string} id Job id
3714
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
3715
+ * @summary Daily session activity
3716
+ * @param {number} [days] Trailing window in days
3542
3717
  * @param {*} [options] Override http request option.
3543
3718
  * @throws {RequiredError}
3544
3719
  */
3545
- cancel: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3546
- // verify required parameter 'id' is not null or undefined
3547
- assertParamExists('cancel', 'id', id)
3548
- const localVarPath = `/admin/job/{id}`
3549
- .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3720
+ dailySessions: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3721
+ const localVarPath = `/admin/dashboard/sessions/daily`;
3550
3722
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
3551
3723
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3552
3724
  let baseOptions;
@@ -3554,7 +3726,7 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3554
3726
  baseOptions = configuration.baseOptions;
3555
3727
  }
3556
3728
 
3557
- const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
3729
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3558
3730
  const localVarHeaderParameter = {} as any;
3559
3731
  const localVarQueryParameter = {} as any;
3560
3732
 
@@ -3562,6 +3734,11 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3562
3734
  // http bearer authentication required
3563
3735
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
3564
3736
 
3737
+ if (days !== undefined) {
3738
+ localVarQueryParameter['days'] = days;
3739
+ }
3740
+
3741
+ localVarHeaderParameter['Accept'] = 'application/json';
3565
3742
 
3566
3743
  setSearchParams(localVarUrlObj, localVarQueryParameter);
3567
3744
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -3573,17 +3750,13 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3573
3750
  };
3574
3751
  },
3575
3752
  /**
3576
- * Returns the CSV emitted by the job typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
3577
- * @summary Download a job\'s CSV artifact
3578
- * @param {string} id Job id
3753
+ * Returns aggregate counts for clients, connections, and players in the system.
3754
+ * @summary Get dashboard statistics
3579
3755
  * @param {*} [options] Override http request option.
3580
3756
  * @throws {RequiredError}
3581
3757
  */
3582
- downloadArtifact: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3583
- // verify required parameter 'id' is not null or undefined
3584
- assertParamExists('downloadArtifact', 'id', id)
3585
- const localVarPath = `/admin/job/{id}/artifact.csv`
3586
- .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3758
+ dashboardStats: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3759
+ const localVarPath = `/admin/dashboard`;
3587
3760
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
3588
3761
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3589
3762
  let baseOptions;
@@ -3599,7 +3772,7 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3599
3772
  // http bearer authentication required
3600
3773
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
3601
3774
 
3602
- localVarHeaderParameter['Accept'] = 'text/csv';
3775
+ localVarHeaderParameter['Accept'] = 'application/json';
3603
3776
 
3604
3777
  setSearchParams(localVarUrlObj, localVarQueryParameter);
3605
3778
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -3611,17 +3784,13 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3611
3784
  };
3612
3785
  },
3613
3786
  /**
3614
- * The polling target the admin UI hits this every ~2 s while a job is running to update its progress bar.
3615
- * @summary Get one async job
3616
- * @param {string} id Job id
3787
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
3788
+ * @summary Dashboard overview tiles
3617
3789
  * @param {*} [options] Override http request option.
3618
3790
  * @throws {RequiredError}
3619
3791
  */
3620
- get: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3621
- // verify required parameter 'id' is not null or undefined
3622
- assertParamExists('get', 'id', id)
3623
- const localVarPath = `/admin/job/{id}`
3624
- .replace(`{${"id"}}`, encodeURIComponent(String(id)));
3792
+ overview: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3793
+ const localVarPath = `/admin/dashboard/overview`;
3625
3794
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
3626
3795
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3627
3796
  let baseOptions;
@@ -3649,17 +3818,14 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3649
3818
  };
3650
3819
  },
3651
3820
  /**
3652
- * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
3653
- * @summary List async jobs
3654
- * @param {Pageable} pageable
3655
- * @param {JobStatus | null} [status] Filter by status (omit for all states)
3821
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) feeds the stacked chart.
3822
+ * @summary Punishments by type over time
3823
+ * @param {number} [days] Trailing window in days
3656
3824
  * @param {*} [options] Override http request option.
3657
3825
  * @throws {RequiredError}
3658
3826
  */
3659
- list: async (pageable: Pageable, status?: JobStatus | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3660
- // verify required parameter 'pageable' is not null or undefined
3661
- assertParamExists('list', 'pageable', pageable)
3662
- const localVarPath = `/admin/job`;
3827
+ punishmentsByType: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3828
+ const localVarPath = `/admin/dashboard/punishments/daily`;
3663
3829
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
3664
3830
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3665
3831
  let baseOptions;
@@ -3675,12 +3841,8 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3675
3841
  // http bearer authentication required
3676
3842
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
3677
3843
 
3678
- if (status !== undefined) {
3679
- localVarQueryParameter['status'] = status;
3680
- }
3681
-
3682
- if (pageable !== undefined) {
3683
- localVarQueryParameter['pageable'] = pageable;
3844
+ if (days !== undefined) {
3845
+ localVarQueryParameter['days'] = days;
3684
3846
  }
3685
3847
 
3686
3848
  localVarHeaderParameter['Accept'] = 'application/json';
@@ -3694,14 +3856,691 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
3694
3856
  options: localVarRequestOptions,
3695
3857
  };
3696
3858
  },
3697
- }
3698
- };
3699
-
3700
- /**
3701
- * AdminJobsApi - functional programming interface
3702
- */
3703
- export const AdminJobsApiFp = function(configuration?: Configuration) {
3704
- const localVarAxiosParamCreator = AdminJobsApiAxiosParamCreator(configuration)
3859
+ /**
3860
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
3861
+ * @summary Report backlog & resolution speed
3862
+ * @param {number} [days] Trailing window in days
3863
+ * @param {*} [options] Override http request option.
3864
+ * @throws {RequiredError}
3865
+ */
3866
+ reportSummary: async (days?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3867
+ const localVarPath = `/admin/dashboard/reports/summary`;
3868
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3869
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3870
+ let baseOptions;
3871
+ if (configuration) {
3872
+ baseOptions = configuration.baseOptions;
3873
+ }
3874
+
3875
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3876
+ const localVarHeaderParameter = {} as any;
3877
+ const localVarQueryParameter = {} as any;
3878
+
3879
+ // authentication DiscordAuth required
3880
+ // http bearer authentication required
3881
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3882
+
3883
+ if (days !== undefined) {
3884
+ localVarQueryParameter['days'] = days;
3885
+ }
3886
+
3887
+ localVarHeaderParameter['Accept'] = 'application/json';
3888
+
3889
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3890
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3891
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3892
+
3893
+ return {
3894
+ url: toPathString(localVarUrlObj),
3895
+ options: localVarRequestOptions,
3896
+ };
3897
+ },
3898
+ /**
3899
+ * Online server count and current player load per region/game-type.
3900
+ * @summary Servers & players by region
3901
+ * @param {*} [options] Override http request option.
3902
+ * @throws {RequiredError}
3903
+ */
3904
+ serverRegions: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3905
+ const localVarPath = `/admin/dashboard/servers/summary`;
3906
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3907
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3908
+ let baseOptions;
3909
+ if (configuration) {
3910
+ baseOptions = configuration.baseOptions;
3911
+ }
3912
+
3913
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3914
+ const localVarHeaderParameter = {} as any;
3915
+ const localVarQueryParameter = {} as any;
3916
+
3917
+ // authentication DiscordAuth required
3918
+ // http bearer authentication required
3919
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3920
+
3921
+ localVarHeaderParameter['Accept'] = 'application/json';
3922
+
3923
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3924
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3925
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3926
+
3927
+ return {
3928
+ url: toPathString(localVarUrlObj),
3929
+ options: localVarRequestOptions,
3930
+ };
3931
+ },
3932
+ /**
3933
+ * Moderators ranked by audit-log action count over the window.
3934
+ * @summary Top moderators by activity
3935
+ * @param {number} [days] Trailing window in days
3936
+ * @param {number} [limit] Max moderators to return
3937
+ * @param {*} [options] Override http request option.
3938
+ * @throws {RequiredError}
3939
+ */
3940
+ topModerators: async (days?: number, limit?: number, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3941
+ const localVarPath = `/admin/dashboard/moderators/top`;
3942
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3943
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3944
+ let baseOptions;
3945
+ if (configuration) {
3946
+ baseOptions = configuration.baseOptions;
3947
+ }
3948
+
3949
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3950
+ const localVarHeaderParameter = {} as any;
3951
+ const localVarQueryParameter = {} as any;
3952
+
3953
+ // authentication DiscordAuth required
3954
+ // http bearer authentication required
3955
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3956
+
3957
+ if (days !== undefined) {
3958
+ localVarQueryParameter['days'] = days;
3959
+ }
3960
+
3961
+ if (limit !== undefined) {
3962
+ localVarQueryParameter['limit'] = limit;
3963
+ }
3964
+
3965
+ localVarHeaderParameter['Accept'] = 'application/json';
3966
+
3967
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
3968
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
3969
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
3970
+
3971
+ return {
3972
+ url: toPathString(localVarUrlObj),
3973
+ options: localVarRequestOptions,
3974
+ };
3975
+ },
3976
+ /**
3977
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
3978
+ * @summary Trust-factor distribution
3979
+ * @param {*} [options] Override http request option.
3980
+ * @throws {RequiredError}
3981
+ */
3982
+ trustDistribution: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
3983
+ const localVarPath = `/admin/dashboard/trust/distribution`;
3984
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
3985
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
3986
+ let baseOptions;
3987
+ if (configuration) {
3988
+ baseOptions = configuration.baseOptions;
3989
+ }
3990
+
3991
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
3992
+ const localVarHeaderParameter = {} as any;
3993
+ const localVarQueryParameter = {} as any;
3994
+
3995
+ // authentication DiscordAuth required
3996
+ // http bearer authentication required
3997
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
3998
+
3999
+ localVarHeaderParameter['Accept'] = 'application/json';
4000
+
4001
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4002
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4003
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4004
+
4005
+ return {
4006
+ url: toPathString(localVarUrlObj),
4007
+ options: localVarRequestOptions,
4008
+ };
4009
+ },
4010
+ }
4011
+ };
4012
+
4013
+ /**
4014
+ * AdminDashboardApi - functional programming interface
4015
+ */
4016
+ export const AdminDashboardApiFp = function(configuration?: Configuration) {
4017
+ const localVarAxiosParamCreator = AdminDashboardApiAxiosParamCreator(configuration)
4018
+ return {
4019
+ /**
4020
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
4021
+ * @summary Connection activity heatmap
4022
+ * @param {number} [days] Trailing window in days
4023
+ * @param {*} [options] Override http request option.
4024
+ * @throws {RequiredError}
4025
+ */
4026
+ async activityHeatmap(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardActivityCell>>> {
4027
+ const localVarAxiosArgs = await localVarAxiosParamCreator.activityHeatmap(days, options);
4028
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4029
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.activityHeatmap']?.[localVarOperationServerIndex]?.url;
4030
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4031
+ },
4032
+ /**
4033
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
4034
+ * @summary Connections by country
4035
+ * @param {number} [days] Trailing window in days
4036
+ * @param {number} [limit] Max countries to return
4037
+ * @param {*} [options] Override http request option.
4038
+ * @throws {RequiredError}
4039
+ */
4040
+ async connectionsByCountry(days?: number, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardCountryCount>>> {
4041
+ const localVarAxiosArgs = await localVarAxiosParamCreator.connectionsByCountry(days, limit, options);
4042
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4043
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.connectionsByCountry']?.[localVarOperationServerIndex]?.url;
4044
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4045
+ },
4046
+ /**
4047
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
4048
+ * @summary Daily session activity
4049
+ * @param {number} [days] Trailing window in days
4050
+ * @param {*} [options] Override http request option.
4051
+ * @throws {RequiredError}
4052
+ */
4053
+ async dailySessions(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardDailySessions>>> {
4054
+ const localVarAxiosArgs = await localVarAxiosParamCreator.dailySessions(days, options);
4055
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4056
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.dailySessions']?.[localVarOperationServerIndex]?.url;
4057
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4058
+ },
4059
+ /**
4060
+ * Returns aggregate counts for clients, connections, and players in the system.
4061
+ * @summary Get dashboard statistics
4062
+ * @param {*} [options] Override http request option.
4063
+ * @throws {RequiredError}
4064
+ */
4065
+ async dashboardStats(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminGetDashboardStats>> {
4066
+ const localVarAxiosArgs = await localVarAxiosParamCreator.dashboardStats(options);
4067
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4068
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.dashboardStats']?.[localVarOperationServerIndex]?.url;
4069
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4070
+ },
4071
+ /**
4072
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
4073
+ * @summary Dashboard overview tiles
4074
+ * @param {*} [options] Override http request option.
4075
+ * @throws {RequiredError}
4076
+ */
4077
+ async overview(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminDashboardOverview>> {
4078
+ const localVarAxiosArgs = await localVarAxiosParamCreator.overview(options);
4079
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4080
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.overview']?.[localVarOperationServerIndex]?.url;
4081
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4082
+ },
4083
+ /**
4084
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) — feeds the stacked chart.
4085
+ * @summary Punishments by type over time
4086
+ * @param {number} [days] Trailing window in days
4087
+ * @param {*} [options] Override http request option.
4088
+ * @throws {RequiredError}
4089
+ */
4090
+ async punishmentsByType(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardPunishmentDaily>>> {
4091
+ const localVarAxiosArgs = await localVarAxiosParamCreator.punishmentsByType(days, options);
4092
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4093
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.punishmentsByType']?.[localVarOperationServerIndex]?.url;
4094
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4095
+ },
4096
+ /**
4097
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
4098
+ * @summary Report backlog & resolution speed
4099
+ * @param {number} [days] Trailing window in days
4100
+ * @param {*} [options] Override http request option.
4101
+ * @throws {RequiredError}
4102
+ */
4103
+ async reportSummary(days?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminDashboardReportSummary>> {
4104
+ const localVarAxiosArgs = await localVarAxiosParamCreator.reportSummary(days, options);
4105
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4106
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.reportSummary']?.[localVarOperationServerIndex]?.url;
4107
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4108
+ },
4109
+ /**
4110
+ * Online server count and current player load per region/game-type.
4111
+ * @summary Servers & players by region
4112
+ * @param {*} [options] Override http request option.
4113
+ * @throws {RequiredError}
4114
+ */
4115
+ async serverRegions(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardServerRegion>>> {
4116
+ const localVarAxiosArgs = await localVarAxiosParamCreator.serverRegions(options);
4117
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4118
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.serverRegions']?.[localVarOperationServerIndex]?.url;
4119
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4120
+ },
4121
+ /**
4122
+ * Moderators ranked by audit-log action count over the window.
4123
+ * @summary Top moderators by activity
4124
+ * @param {number} [days] Trailing window in days
4125
+ * @param {number} [limit] Max moderators to return
4126
+ * @param {*} [options] Override http request option.
4127
+ * @throws {RequiredError}
4128
+ */
4129
+ async topModerators(days?: number, limit?: number, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardModeratorActivity>>> {
4130
+ const localVarAxiosArgs = await localVarAxiosParamCreator.topModerators(days, limit, options);
4131
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4132
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.topModerators']?.[localVarOperationServerIndex]?.url;
4133
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4134
+ },
4135
+ /**
4136
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
4137
+ * @summary Trust-factor distribution
4138
+ * @param {*} [options] Override http request option.
4139
+ * @throws {RequiredError}
4140
+ */
4141
+ async trustDistribution(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminDashboardTrustBucket>>> {
4142
+ const localVarAxiosArgs = await localVarAxiosParamCreator.trustDistribution(options);
4143
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4144
+ const localVarOperationServerBasePath = operationServerMap['AdminDashboardApi.trustDistribution']?.[localVarOperationServerIndex]?.url;
4145
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4146
+ },
4147
+ }
4148
+ };
4149
+
4150
+ /**
4151
+ * AdminDashboardApi - factory interface
4152
+ */
4153
+ export const AdminDashboardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
4154
+ const localVarFp = AdminDashboardApiFp(configuration)
4155
+ return {
4156
+ /**
4157
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
4158
+ * @summary Connection activity heatmap
4159
+ * @param {number} [days] Trailing window in days
4160
+ * @param {*} [options] Override http request option.
4161
+ * @throws {RequiredError}
4162
+ */
4163
+ activityHeatmap(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardActivityCell>> {
4164
+ return localVarFp.activityHeatmap(days, options).then((request) => request(axios, basePath));
4165
+ },
4166
+ /**
4167
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
4168
+ * @summary Connections by country
4169
+ * @param {number} [days] Trailing window in days
4170
+ * @param {number} [limit] Max countries to return
4171
+ * @param {*} [options] Override http request option.
4172
+ * @throws {RequiredError}
4173
+ */
4174
+ connectionsByCountry(days?: number, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardCountryCount>> {
4175
+ return localVarFp.connectionsByCountry(days, limit, options).then((request) => request(axios, basePath));
4176
+ },
4177
+ /**
4178
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
4179
+ * @summary Daily session activity
4180
+ * @param {number} [days] Trailing window in days
4181
+ * @param {*} [options] Override http request option.
4182
+ * @throws {RequiredError}
4183
+ */
4184
+ dailySessions(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardDailySessions>> {
4185
+ return localVarFp.dailySessions(days, options).then((request) => request(axios, basePath));
4186
+ },
4187
+ /**
4188
+ * Returns aggregate counts for clients, connections, and players in the system.
4189
+ * @summary Get dashboard statistics
4190
+ * @param {*} [options] Override http request option.
4191
+ * @throws {RequiredError}
4192
+ */
4193
+ dashboardStats(options?: RawAxiosRequestConfig): AxiosPromise<AdminGetDashboardStats> {
4194
+ return localVarFp.dashboardStats(options).then((request) => request(axios, basePath));
4195
+ },
4196
+ /**
4197
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
4198
+ * @summary Dashboard overview tiles
4199
+ * @param {*} [options] Override http request option.
4200
+ * @throws {RequiredError}
4201
+ */
4202
+ overview(options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardOverview> {
4203
+ return localVarFp.overview(options).then((request) => request(axios, basePath));
4204
+ },
4205
+ /**
4206
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) — feeds the stacked chart.
4207
+ * @summary Punishments by type over time
4208
+ * @param {number} [days] Trailing window in days
4209
+ * @param {*} [options] Override http request option.
4210
+ * @throws {RequiredError}
4211
+ */
4212
+ punishmentsByType(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardPunishmentDaily>> {
4213
+ return localVarFp.punishmentsByType(days, options).then((request) => request(axios, basePath));
4214
+ },
4215
+ /**
4216
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
4217
+ * @summary Report backlog & resolution speed
4218
+ * @param {number} [days] Trailing window in days
4219
+ * @param {*} [options] Override http request option.
4220
+ * @throws {RequiredError}
4221
+ */
4222
+ reportSummary(days?: number, options?: RawAxiosRequestConfig): AxiosPromise<AdminDashboardReportSummary> {
4223
+ return localVarFp.reportSummary(days, options).then((request) => request(axios, basePath));
4224
+ },
4225
+ /**
4226
+ * Online server count and current player load per region/game-type.
4227
+ * @summary Servers & players by region
4228
+ * @param {*} [options] Override http request option.
4229
+ * @throws {RequiredError}
4230
+ */
4231
+ serverRegions(options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardServerRegion>> {
4232
+ return localVarFp.serverRegions(options).then((request) => request(axios, basePath));
4233
+ },
4234
+ /**
4235
+ * Moderators ranked by audit-log action count over the window.
4236
+ * @summary Top moderators by activity
4237
+ * @param {number} [days] Trailing window in days
4238
+ * @param {number} [limit] Max moderators to return
4239
+ * @param {*} [options] Override http request option.
4240
+ * @throws {RequiredError}
4241
+ */
4242
+ topModerators(days?: number, limit?: number, options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardModeratorActivity>> {
4243
+ return localVarFp.topModerators(days, limit, options).then((request) => request(axios, basePath));
4244
+ },
4245
+ /**
4246
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
4247
+ * @summary Trust-factor distribution
4248
+ * @param {*} [options] Override http request option.
4249
+ * @throws {RequiredError}
4250
+ */
4251
+ trustDistribution(options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminDashboardTrustBucket>> {
4252
+ return localVarFp.trustDistribution(options).then((request) => request(axios, basePath));
4253
+ },
4254
+ };
4255
+ };
4256
+
4257
+ /**
4258
+ * AdminDashboardApi - object-oriented interface
4259
+ */
4260
+ export class AdminDashboardApi extends BaseAPI {
4261
+ /**
4262
+ * Connection volume bucketed by UTC day-of-week (0=Sunday) and hour-of-day (0–23) over the window.
4263
+ * @summary Connection activity heatmap
4264
+ * @param {number} [days] Trailing window in days
4265
+ * @param {*} [options] Override http request option.
4266
+ * @throws {RequiredError}
4267
+ */
4268
+ public activityHeatmap(days?: number, options?: RawAxiosRequestConfig) {
4269
+ return AdminDashboardApiFp(this.configuration).activityHeatmap(days, options).then((request) => request(this.axios, this.basePath));
4270
+ }
4271
+
4272
+ /**
4273
+ * Top countries by distinct connection volume over the window, with the VPN/proxy-flagged subset.
4274
+ * @summary Connections by country
4275
+ * @param {number} [days] Trailing window in days
4276
+ * @param {number} [limit] Max countries to return
4277
+ * @param {*} [options] Override http request option.
4278
+ * @throws {RequiredError}
4279
+ */
4280
+ public connectionsByCountry(days?: number, limit?: number, options?: RawAxiosRequestConfig) {
4281
+ return AdminDashboardApiFp(this.configuration).connectionsByCountry(days, limit, options).then((request) => request(this.axios, this.basePath));
4282
+ }
4283
+
4284
+ /**
4285
+ * Per-day session count, distinct active players, and mean completed-session length over the requested window.
4286
+ * @summary Daily session activity
4287
+ * @param {number} [days] Trailing window in days
4288
+ * @param {*} [options] Override http request option.
4289
+ * @throws {RequiredError}
4290
+ */
4291
+ public dailySessions(days?: number, options?: RawAxiosRequestConfig) {
4292
+ return AdminDashboardApiFp(this.configuration).dailySessions(days, options).then((request) => request(this.axios, this.basePath));
4293
+ }
4294
+
4295
+ /**
4296
+ * Returns aggregate counts for clients, connections, and players in the system.
4297
+ * @summary Get dashboard statistics
4298
+ * @param {*} [options] Override http request option.
4299
+ * @throws {RequiredError}
4300
+ */
4301
+ public dashboardStats(options?: RawAxiosRequestConfig) {
4302
+ return AdminDashboardApiFp(this.configuration).dashboardStats(options).then((request) => request(this.axios, this.basePath));
4303
+ }
4304
+
4305
+ /**
4306
+ * At-a-glance counts: players online now, new players today, DAU, 7-day mean/median session length, active bans/mutes, and open reports.
4307
+ * @summary Dashboard overview tiles
4308
+ * @param {*} [options] Override http request option.
4309
+ * @throws {RequiredError}
4310
+ */
4311
+ public overview(options?: RawAxiosRequestConfig) {
4312
+ return AdminDashboardApiFp(this.configuration).overview(options).then((request) => request(this.axios, this.basePath));
4313
+ }
4314
+
4315
+ /**
4316
+ * Daily punishment issuance over the window, split by type (BAN/MUTE/KICK/WARNING) — feeds the stacked chart.
4317
+ * @summary Punishments by type over time
4318
+ * @param {number} [days] Trailing window in days
4319
+ * @param {*} [options] Override http request option.
4320
+ * @throws {RequiredError}
4321
+ */
4322
+ public punishmentsByType(days?: number, options?: RawAxiosRequestConfig) {
4323
+ return AdminDashboardApiFp(this.configuration).punishmentsByType(days, options).then((request) => request(this.axios, this.basePath));
4324
+ }
4325
+
4326
+ /**
4327
+ * Open backlog, reports resolved in the window, mean resolution time, and a category breakdown.
4328
+ * @summary Report backlog & resolution speed
4329
+ * @param {number} [days] Trailing window in days
4330
+ * @param {*} [options] Override http request option.
4331
+ * @throws {RequiredError}
4332
+ */
4333
+ public reportSummary(days?: number, options?: RawAxiosRequestConfig) {
4334
+ return AdminDashboardApiFp(this.configuration).reportSummary(days, options).then((request) => request(this.axios, this.basePath));
4335
+ }
4336
+
4337
+ /**
4338
+ * Online server count and current player load per region/game-type.
4339
+ * @summary Servers & players by region
4340
+ * @param {*} [options] Override http request option.
4341
+ * @throws {RequiredError}
4342
+ */
4343
+ public serverRegions(options?: RawAxiosRequestConfig) {
4344
+ return AdminDashboardApiFp(this.configuration).serverRegions(options).then((request) => request(this.axios, this.basePath));
4345
+ }
4346
+
4347
+ /**
4348
+ * Moderators ranked by audit-log action count over the window.
4349
+ * @summary Top moderators by activity
4350
+ * @param {number} [days] Trailing window in days
4351
+ * @param {number} [limit] Max moderators to return
4352
+ * @param {*} [options] Override http request option.
4353
+ * @throws {RequiredError}
4354
+ */
4355
+ public topModerators(days?: number, limit?: number, options?: RawAxiosRequestConfig) {
4356
+ return AdminDashboardApiFp(this.configuration).topModerators(days, limit, options).then((request) => request(this.axios, this.basePath));
4357
+ }
4358
+
4359
+ /**
4360
+ * Histogram of every player\'s latest trust factor, bucketed into ten 10-point bins.
4361
+ * @summary Trust-factor distribution
4362
+ * @param {*} [options] Override http request option.
4363
+ * @throws {RequiredError}
4364
+ */
4365
+ public trustDistribution(options?: RawAxiosRequestConfig) {
4366
+ return AdminDashboardApiFp(this.configuration).trustDistribution(options).then((request) => request(this.axios, this.basePath));
4367
+ }
4368
+ }
4369
+
4370
+
4371
+
4372
+ /**
4373
+ * AdminJobsApi - axios parameter creator
4374
+ */
4375
+ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configuration) {
4376
+ return {
4377
+ /**
4378
+ * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
4379
+ * @summary Request cancellation of an async job
4380
+ * @param {string} id Job id
4381
+ * @param {*} [options] Override http request option.
4382
+ * @throws {RequiredError}
4383
+ */
4384
+ cancel: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
4385
+ // verify required parameter 'id' is not null or undefined
4386
+ assertParamExists('cancel', 'id', id)
4387
+ const localVarPath = `/admin/job/{id}`
4388
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
4389
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4390
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4391
+ let baseOptions;
4392
+ if (configuration) {
4393
+ baseOptions = configuration.baseOptions;
4394
+ }
4395
+
4396
+ const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
4397
+ const localVarHeaderParameter = {} as any;
4398
+ const localVarQueryParameter = {} as any;
4399
+
4400
+ // authentication DiscordAuth required
4401
+ // http bearer authentication required
4402
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4403
+
4404
+
4405
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4406
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4407
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4408
+
4409
+ return {
4410
+ url: toPathString(localVarUrlObj),
4411
+ options: localVarRequestOptions,
4412
+ };
4413
+ },
4414
+ /**
4415
+ * Returns the CSV emitted by the job — typically one row per record the job touched. The first line is a header; subsequent lines are RFC-4180 escaped data rows. 404 when the job has no artifact (either it didn\'t emit one, or it hasn\'t finished yet).
4416
+ * @summary Download a job\'s CSV artifact
4417
+ * @param {string} id Job id
4418
+ * @param {*} [options] Override http request option.
4419
+ * @throws {RequiredError}
4420
+ */
4421
+ downloadArtifact: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
4422
+ // verify required parameter 'id' is not null or undefined
4423
+ assertParamExists('downloadArtifact', 'id', id)
4424
+ const localVarPath = `/admin/job/{id}/artifact.csv`
4425
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
4426
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4427
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4428
+ let baseOptions;
4429
+ if (configuration) {
4430
+ baseOptions = configuration.baseOptions;
4431
+ }
4432
+
4433
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
4434
+ const localVarHeaderParameter = {} as any;
4435
+ const localVarQueryParameter = {} as any;
4436
+
4437
+ // authentication DiscordAuth required
4438
+ // http bearer authentication required
4439
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4440
+
4441
+ localVarHeaderParameter['Accept'] = 'text/csv';
4442
+
4443
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4444
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4445
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4446
+
4447
+ return {
4448
+ url: toPathString(localVarUrlObj),
4449
+ options: localVarRequestOptions,
4450
+ };
4451
+ },
4452
+ /**
4453
+ * The polling target — the admin UI hits this every ~2 s while a job is running to update its progress bar.
4454
+ * @summary Get one async job
4455
+ * @param {string} id Job id
4456
+ * @param {*} [options] Override http request option.
4457
+ * @throws {RequiredError}
4458
+ */
4459
+ get: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
4460
+ // verify required parameter 'id' is not null or undefined
4461
+ assertParamExists('get', 'id', id)
4462
+ const localVarPath = `/admin/job/{id}`
4463
+ .replace(`{${"id"}}`, encodeURIComponent(String(id)));
4464
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4465
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4466
+ let baseOptions;
4467
+ if (configuration) {
4468
+ baseOptions = configuration.baseOptions;
4469
+ }
4470
+
4471
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
4472
+ const localVarHeaderParameter = {} as any;
4473
+ const localVarQueryParameter = {} as any;
4474
+
4475
+ // authentication DiscordAuth required
4476
+ // http bearer authentication required
4477
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4478
+
4479
+ localVarHeaderParameter['Accept'] = 'application/json';
4480
+
4481
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4482
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4483
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4484
+
4485
+ return {
4486
+ url: toPathString(localVarUrlObj),
4487
+ options: localVarRequestOptions,
4488
+ };
4489
+ },
4490
+ /**
4491
+ * Paginated, newest first. Filter by status to see only RUNNING jobs (the live queue) or COMPLETED / FAILED / CANCELLED history.
4492
+ * @summary List async jobs
4493
+ * @param {Pageable} pageable
4494
+ * @param {JobStatus | null} [status] Filter by status (omit for all states)
4495
+ * @param {*} [options] Override http request option.
4496
+ * @throws {RequiredError}
4497
+ */
4498
+ list: async (pageable: Pageable, status?: JobStatus | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
4499
+ // verify required parameter 'pageable' is not null or undefined
4500
+ assertParamExists('list', 'pageable', pageable)
4501
+ const localVarPath = `/admin/job`;
4502
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4503
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4504
+ let baseOptions;
4505
+ if (configuration) {
4506
+ baseOptions = configuration.baseOptions;
4507
+ }
4508
+
4509
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
4510
+ const localVarHeaderParameter = {} as any;
4511
+ const localVarQueryParameter = {} as any;
4512
+
4513
+ // authentication DiscordAuth required
4514
+ // http bearer authentication required
4515
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4516
+
4517
+ if (status !== undefined) {
4518
+ localVarQueryParameter['status'] = status;
4519
+ }
4520
+
4521
+ if (pageable !== undefined) {
4522
+ localVarQueryParameter['pageable'] = pageable;
4523
+ }
4524
+
4525
+ localVarHeaderParameter['Accept'] = 'application/json';
4526
+
4527
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4528
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4529
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4530
+
4531
+ return {
4532
+ url: toPathString(localVarUrlObj),
4533
+ options: localVarRequestOptions,
4534
+ };
4535
+ },
4536
+ }
4537
+ };
4538
+
4539
+ /**
4540
+ * AdminJobsApi - functional programming interface
4541
+ */
4542
+ export const AdminJobsApiFp = function(configuration?: Configuration) {
4543
+ const localVarAxiosParamCreator = AdminJobsApiAxiosParamCreator(configuration)
3705
4544
  return {
3706
4545
  /**
3707
4546
  * Flips cancel_requested on the row. The host instance sees this at its next progress tick and bails out, transitioning the row to CANCELLED. Already-terminal jobs (COMPLETED/FAILED/CANCELLED) return 404.
@@ -6327,10 +7166,11 @@ export const AuthenticationApiAxiosParamCreator = function (configuration?: Conf
6327
7166
  * @summary Discord - OAuth2 callback
6328
7167
  * @param {string | null} [code] Authorization code provided by Discord on successful approval
6329
7168
  * @param {string | null} [error] Error code provided by Discord if the user denied access
7169
+ * @param {string | null} [state] Opaque value echoed back by Discord — carries the client\&#39;s chosen redirect target
6330
7170
  * @param {*} [options] Override http request option.
6331
7171
  * @throws {RequiredError}
6332
7172
  */
6333
- callback: async (code?: string | null, error?: string | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
7173
+ callback: async (code?: string | null, error?: string | null, state?: string | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
6334
7174
  const localVarPath = `/auth/discord/callback`;
6335
7175
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
6336
7176
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -6355,6 +7195,10 @@ export const AuthenticationApiAxiosParamCreator = function (configuration?: Conf
6355
7195
  localVarQueryParameter['error'] = error;
6356
7196
  }
6357
7197
 
7198
+ if (state !== undefined) {
7199
+ localVarQueryParameter['state'] = state;
7200
+ }
7201
+
6358
7202
 
6359
7203
  setSearchParams(localVarUrlObj, localVarQueryParameter);
6360
7204
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -6366,12 +7210,13 @@ export const AuthenticationApiAxiosParamCreator = function (configuration?: Conf
6366
7210
  };
6367
7211
  },
6368
7212
  /**
6369
- * Redirects the browser to Discord\'s OAuth2 authorization page. Not called directly the admin frontend navigates to this URL to begin the login flow.
7213
+ * Redirects the browser (or native in-app browser session) to Discord\'s OAuth2 authorization page. The optional `redirect` parameter names the final destination the signed JWT should be sent to once auth completes — the web app URL (default) or a native deep-link scheme such as `reborn://auth/callback`. It must be allowlisted (DISCORD_ADMIN_FRONTEND_URL or one of DISCORD_ADMIN_ALLOWED_REDIRECTS); the value is carried through Discord via the OAuth `state` parameter and re-validated on the callback.
6370
7214
  * @summary Discord - Initiate login
7215
+ * @param {string | null} [redirect] Final redirect target for the JWT (web URL or native deep link). Must be allowlisted. Defaults to the web admin frontend.
6371
7216
  * @param {*} [options] Override http request option.
6372
7217
  * @throws {RequiredError}
6373
7218
  */
6374
- initiateLogin: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
7219
+ initiateLogin: async (redirect?: string | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
6375
7220
  const localVarPath = `/auth/discord`;
6376
7221
  // use dummy base URL string because the URL constructor only accepts absolute URLs.
6377
7222
  const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
@@ -6388,6 +7233,10 @@ export const AuthenticationApiAxiosParamCreator = function (configuration?: Conf
6388
7233
  // http bearer authentication required
6389
7234
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
6390
7235
 
7236
+ if (redirect !== undefined) {
7237
+ localVarQueryParameter['redirect'] = redirect;
7238
+ }
7239
+
6391
7240
 
6392
7241
  setSearchParams(localVarUrlObj, localVarQueryParameter);
6393
7242
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
@@ -6498,23 +7347,25 @@ export const AuthenticationApiFp = function(configuration?: Configuration) {
6498
7347
  * @summary Discord - OAuth2 callback
6499
7348
  * @param {string | null} [code] Authorization code provided by Discord on successful approval
6500
7349
  * @param {string | null} [error] Error code provided by Discord if the user denied access
7350
+ * @param {string | null} [state] Opaque value echoed back by Discord — carries the client\&#39;s chosen redirect target
6501
7351
  * @param {*} [options] Override http request option.
6502
7352
  * @throws {RequiredError}
6503
7353
  */
6504
- async callback(code?: string | null, error?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
6505
- const localVarAxiosArgs = await localVarAxiosParamCreator.callback(code, error, options);
7354
+ async callback(code?: string | null, error?: string | null, state?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
7355
+ const localVarAxiosArgs = await localVarAxiosParamCreator.callback(code, error, state, options);
6506
7356
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
6507
7357
  const localVarOperationServerBasePath = operationServerMap['AuthenticationApi.callback']?.[localVarOperationServerIndex]?.url;
6508
7358
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
6509
7359
  },
6510
7360
  /**
6511
- * Redirects the browser to Discord\'s OAuth2 authorization page. Not called directly the admin frontend navigates to this URL to begin the login flow.
7361
+ * Redirects the browser (or native in-app browser session) to Discord\'s OAuth2 authorization page. The optional `redirect` parameter names the final destination the signed JWT should be sent to once auth completes — the web app URL (default) or a native deep-link scheme such as `reborn://auth/callback`. It must be allowlisted (DISCORD_ADMIN_FRONTEND_URL or one of DISCORD_ADMIN_ALLOWED_REDIRECTS); the value is carried through Discord via the OAuth `state` parameter and re-validated on the callback.
6512
7362
  * @summary Discord - Initiate login
7363
+ * @param {string | null} [redirect] Final redirect target for the JWT (web URL or native deep link). Must be allowlisted. Defaults to the web admin frontend.
6513
7364
  * @param {*} [options] Override http request option.
6514
7365
  * @throws {RequiredError}
6515
7366
  */
6516
- async initiateLogin(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
6517
- const localVarAxiosArgs = await localVarAxiosParamCreator.initiateLogin(options);
7367
+ async initiateLogin(redirect?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>> {
7368
+ const localVarAxiosArgs = await localVarAxiosParamCreator.initiateLogin(redirect, options);
6518
7369
  const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
6519
7370
  const localVarOperationServerBasePath = operationServerMap['AuthenticationApi.initiateLogin']?.[localVarOperationServerIndex]?.url;
6520
7371
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
@@ -6560,20 +7411,22 @@ export const AuthenticationApiFactory = function (configuration?: Configuration,
6560
7411
  * @summary Discord - OAuth2 callback
6561
7412
  * @param {string | null} [code] Authorization code provided by Discord on successful approval
6562
7413
  * @param {string | null} [error] Error code provided by Discord if the user denied access
7414
+ * @param {string | null} [state] Opaque value echoed back by Discord — carries the client\&#39;s chosen redirect target
6563
7415
  * @param {*} [options] Override http request option.
6564
7416
  * @throws {RequiredError}
6565
7417
  */
6566
- callback(code?: string | null, error?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<void> {
6567
- return localVarFp.callback(code, error, options).then((request) => request(axios, basePath));
7418
+ callback(code?: string | null, error?: string | null, state?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<void> {
7419
+ return localVarFp.callback(code, error, state, options).then((request) => request(axios, basePath));
6568
7420
  },
6569
7421
  /**
6570
- * Redirects the browser to Discord\'s OAuth2 authorization page. Not called directly the admin frontend navigates to this URL to begin the login flow.
7422
+ * Redirects the browser (or native in-app browser session) to Discord\'s OAuth2 authorization page. The optional `redirect` parameter names the final destination the signed JWT should be sent to once auth completes — the web app URL (default) or a native deep-link scheme such as `reborn://auth/callback`. It must be allowlisted (DISCORD_ADMIN_FRONTEND_URL or one of DISCORD_ADMIN_ALLOWED_REDIRECTS); the value is carried through Discord via the OAuth `state` parameter and re-validated on the callback.
6571
7423
  * @summary Discord - Initiate login
7424
+ * @param {string | null} [redirect] Final redirect target for the JWT (web URL or native deep link). Must be allowlisted. Defaults to the web admin frontend.
6572
7425
  * @param {*} [options] Override http request option.
6573
7426
  * @throws {RequiredError}
6574
7427
  */
6575
- initiateLogin(options?: RawAxiosRequestConfig): AxiosPromise<void> {
6576
- return localVarFp.initiateLogin(options).then((request) => request(axios, basePath));
7428
+ initiateLogin(redirect?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<void> {
7429
+ return localVarFp.initiateLogin(redirect, options).then((request) => request(axios, basePath));
6577
7430
  },
6578
7431
  /**
6579
7432
  * Returns the authenticated user\'s profile from their JWT claims. The session is already validated by the security rule before this endpoint is reached.
@@ -6608,21 +7461,23 @@ export class AuthenticationApi extends BaseAPI {
6608
7461
  * @summary Discord - OAuth2 callback
6609
7462
  * @param {string | null} [code] Authorization code provided by Discord on successful approval
6610
7463
  * @param {string | null} [error] Error code provided by Discord if the user denied access
7464
+ * @param {string | null} [state] Opaque value echoed back by Discord — carries the client\&#39;s chosen redirect target
6611
7465
  * @param {*} [options] Override http request option.
6612
7466
  * @throws {RequiredError}
6613
7467
  */
6614
- public callback(code?: string | null, error?: string | null, options?: RawAxiosRequestConfig) {
6615
- return AuthenticationApiFp(this.configuration).callback(code, error, options).then((request) => request(this.axios, this.basePath));
7468
+ public callback(code?: string | null, error?: string | null, state?: string | null, options?: RawAxiosRequestConfig) {
7469
+ return AuthenticationApiFp(this.configuration).callback(code, error, state, options).then((request) => request(this.axios, this.basePath));
6616
7470
  }
6617
7471
 
6618
7472
  /**
6619
- * Redirects the browser to Discord\'s OAuth2 authorization page. Not called directly the admin frontend navigates to this URL to begin the login flow.
7473
+ * Redirects the browser (or native in-app browser session) to Discord\'s OAuth2 authorization page. The optional `redirect` parameter names the final destination the signed JWT should be sent to once auth completes — the web app URL (default) or a native deep-link scheme such as `reborn://auth/callback`. It must be allowlisted (DISCORD_ADMIN_FRONTEND_URL or one of DISCORD_ADMIN_ALLOWED_REDIRECTS); the value is carried through Discord via the OAuth `state` parameter and re-validated on the callback.
6620
7474
  * @summary Discord - Initiate login
7475
+ * @param {string | null} [redirect] Final redirect target for the JWT (web URL or native deep link). Must be allowlisted. Defaults to the web admin frontend.
6621
7476
  * @param {*} [options] Override http request option.
6622
7477
  * @throws {RequiredError}
6623
7478
  */
6624
- public initiateLogin(options?: RawAxiosRequestConfig) {
6625
- return AuthenticationApiFp(this.configuration).initiateLogin(options).then((request) => request(this.axios, this.basePath));
7479
+ public initiateLogin(redirect?: string | null, options?: RawAxiosRequestConfig) {
7480
+ return AuthenticationApiFp(this.configuration).initiateLogin(redirect, options).then((request) => request(this.axios, this.basePath));
6626
7481
  }
6627
7482
 
6628
7483
  /**