@rebornteam/reborn-api 4.9.2 → 4.9.4

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.
@@ -6,6 +6,7 @@ api.ts
6
6
  base.ts
7
7
  common.ts
8
8
  configuration.ts
9
+ docs/AdminAdvancedBanImportRequest.md
9
10
  docs/AdminAltAccount.md
10
11
  docs/AdminAltExemption.md
11
12
  docs/AdminAltGraph.md
@@ -42,7 +43,10 @@ docs/AdminDashboardReportSummary.md
42
43
  docs/AdminDashboardServerRegion.md
43
44
  docs/AdminDashboardTrustBucket.md
44
45
  docs/AdminGetDashboardStats.md
46
+ docs/AdminImportApi.md
45
47
  docs/AdminIpSearchResult.md
48
+ docs/AdminJobConfig.md
49
+ docs/AdminJobField.md
46
50
  docs/AdminJobsApi.md
47
51
  docs/AdminPlayerDetailResponse.md
48
52
  docs/AdminPlayerNote.md
@@ -83,7 +87,9 @@ docs/CreateReportRequest.md
83
87
  docs/CreateReportResponse.md
84
88
  docs/CursoredPageAdminAuditLogEntry.md
85
89
  docs/CursoredPageable.md
90
+ docs/DiscordAuthUrlResponse.md
86
91
  docs/GameType.md
92
+ docs/JobFieldType.md
87
93
  docs/JobStatus.md
88
94
  docs/PageAdminAltAccount.md
89
95
  docs/PageAdminAltExemption.md
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ## @rebornteam/reborn-api@4.9.2
1
+ ## @rebornteam/reborn-api@4.9.4
2
2
 
3
3
  This generator creates TypeScript/JavaScript client that utilizes [axios](https://github.com/axios/axios). The generated Node module can be used in the following environments:
4
4
 
@@ -36,7 +36,7 @@ navigate to the folder of your consuming project and run one of the following co
36
36
  _published:_
37
37
 
38
38
  ```
39
- npm install @rebornteam/reborn-api@4.9.2 --save
39
+ npm install @rebornteam/reborn-api@4.9.4 --save
40
40
  ```
41
41
 
42
42
  _unPublished (not recommended):_
@@ -77,7 +77,9 @@ Class | Method | HTTP request | Description
77
77
  *AdminDashboardApi* | [**serverRegions**](docs/AdminDashboardApi.md#serverregions) | **GET** /admin/dashboard/servers/summary | Servers & players by region
78
78
  *AdminDashboardApi* | [**topModerators**](docs/AdminDashboardApi.md#topmoderators) | **GET** /admin/dashboard/moderators/top | Top moderators by activity
79
79
  *AdminDashboardApi* | [**trustDistribution**](docs/AdminDashboardApi.md#trustdistribution) | **GET** /admin/dashboard/trust/distribution | Trust-factor distribution
80
+ *AdminImportApi* | [**importAdvancedBan**](docs/AdminImportApi.md#importadvancedban) | **POST** /admin/import/advancedban | Import punishments from an AdvancedBan MySQL database
80
81
  *AdminJobsApi* | [**cancel**](docs/AdminJobsApi.md#cancel) | **DELETE** /admin/job/{id} | Request cancellation of an async job
82
+ *AdminJobsApi* | [**config**](docs/AdminJobsApi.md#config) | **GET** /admin/job/config | List configurable jobs
81
83
  *AdminJobsApi* | [**downloadArtifact**](docs/AdminJobsApi.md#downloadartifact) | **GET** /admin/job/{id}/artifact.csv | Download a job\'s CSV artifact
82
84
  *AdminJobsApi* | [**get**](docs/AdminJobsApi.md#get) | **GET** /admin/job/{id} | Get one async job
83
85
  *AdminJobsApi* | [**list**](docs/AdminJobsApi.md#list) | **GET** /admin/job | List async jobs
@@ -111,6 +113,7 @@ Class | Method | HTTP request | Description
111
113
  *AdminPunishmentsApi* | [**searchTargets**](docs/AdminPunishmentsApi.md#searchtargets) | **GET** /admin/punishment/search | Search punishment targets
112
114
  *AdminReportsApi* | [**list1**](docs/AdminReportsApi.md#list1) | **GET** /admin/report | List reports
113
115
  *AdminReportsApi* | [**resolve**](docs/AdminReportsApi.md#resolve) | **POST** /admin/report/{id}/resolve | Resolve a report
116
+ *AuthenticationApi* | [**authorizeUrl**](docs/AuthenticationApi.md#authorizeurl) | **GET** /auth/discord/url | Discord - Authorize URL (native clients)
114
117
  *AuthenticationApi* | [**callback**](docs/AuthenticationApi.md#callback) | **GET** /auth/discord/callback | Discord - OAuth2 callback
115
118
  *AuthenticationApi* | [**initiateLogin**](docs/AuthenticationApi.md#initiatelogin) | **GET** /auth/discord | Discord - Initiate login
116
119
  *AuthenticationApi* | [**me**](docs/AuthenticationApi.md#me) | **GET** /auth/me | Get current user profile
@@ -136,6 +139,7 @@ Class | Method | HTTP request | Description
136
139
 
137
140
  ### Documentation For Models
138
141
 
142
+ - [AdminAdvancedBanImportRequest](docs/AdminAdvancedBanImportRequest.md)
139
143
  - [AdminAltAccount](docs/AdminAltAccount.md)
140
144
  - [AdminAltExemption](docs/AdminAltExemption.md)
141
145
  - [AdminAltGraph](docs/AdminAltGraph.md)
@@ -169,6 +173,8 @@ Class | Method | HTTP request | Description
169
173
  - [AdminDashboardTrustBucket](docs/AdminDashboardTrustBucket.md)
170
174
  - [AdminGetDashboardStats](docs/AdminGetDashboardStats.md)
171
175
  - [AdminIpSearchResult](docs/AdminIpSearchResult.md)
176
+ - [AdminJobConfig](docs/AdminJobConfig.md)
177
+ - [AdminJobField](docs/AdminJobField.md)
172
178
  - [AdminPlayerDetailResponse](docs/AdminPlayerDetailResponse.md)
173
179
  - [AdminPlayerNote](docs/AdminPlayerNote.md)
174
180
  - [AdminPlayerPunishmentResponse](docs/AdminPlayerPunishmentResponse.md)
@@ -202,7 +208,9 @@ Class | Method | HTTP request | Description
202
208
  - [CreateReportResponse](docs/CreateReportResponse.md)
203
209
  - [CursoredPageAdminAuditLogEntry](docs/CursoredPageAdminAuditLogEntry.md)
204
210
  - [CursoredPageable](docs/CursoredPageable.md)
211
+ - [DiscordAuthUrlResponse](docs/DiscordAuthUrlResponse.md)
205
212
  - [GameType](docs/GameType.md)
213
+ - [JobFieldType](docs/JobFieldType.md)
206
214
  - [JobStatus](docs/JobStatus.md)
207
215
  - [PageAdminAltAccount](docs/PageAdminAltAccount.md)
208
216
  - [PageAdminAltExemption](docs/PageAdminAltExemption.md)
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.2
7
+ * The version of the OpenAPI document: 4.9.4
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -23,6 +23,43 @@ import type { RequestArgs } from './base';
23
23
  // @ts-ignore
24
24
  import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError, operationServerMap } from './base';
25
25
 
26
+ /**
27
+ * Source AdvancedBan MySQL connection details for a punishment import.
28
+ */
29
+ export interface AdminAdvancedBanImportRequest {
30
+ /**
31
+ * MySQL host
32
+ */
33
+ 'host': string;
34
+ /**
35
+ * MySQL port (default 3306)
36
+ */
37
+ 'port'?: number | null;
38
+ /**
39
+ * Database / schema name
40
+ */
41
+ 'database': string;
42
+ /**
43
+ * MySQL username
44
+ */
45
+ 'username': string;
46
+ /**
47
+ * MySQL password
48
+ */
49
+ 'password'?: string | null;
50
+ /**
51
+ * Active punishments table (default \'Punishments\')
52
+ */
53
+ 'activeTable'?: string | null;
54
+ /**
55
+ * History table (default \'PunishmentHistory\')
56
+ */
57
+ 'historyTable'?: string | null;
58
+ /**
59
+ * Use TLS for the MySQL connection (default false)
60
+ */
61
+ 'useSsl'?: boolean | null;
62
+ }
26
63
  /**
27
64
  * Another player who has been seen on at least one of this player\'s historical connections — i.e. an alt account candidate.
28
65
  */
@@ -742,6 +779,70 @@ export interface AdminIpSearchResult {
742
779
  */
743
780
  'players': Array<AdminPlayerSearchResult>;
744
781
  }
782
+ /**
783
+ * Configuration metadata for a runnable job (fields + submit path).
784
+ */
785
+ export interface AdminJobConfig {
786
+ /**
787
+ * JobType name
788
+ */
789
+ 'jobType'?: string;
790
+ /**
791
+ * Display title
792
+ */
793
+ 'title'?: string;
794
+ /**
795
+ * Display description
796
+ */
797
+ 'description'?: string;
798
+ /**
799
+ * Path the filled-in {key:value} body is POSTed to
800
+ */
801
+ 'submitPath'?: string;
802
+ /**
803
+ * Whether running this job requires Administrator rank
804
+ */
805
+ 'requiresAdmin'?: boolean;
806
+ /**
807
+ * Fields to render, in order
808
+ */
809
+ 'fields'?: Array<AdminJobField>;
810
+ }
811
+ /**
812
+ * One configurable field of a runnable job.
813
+ */
814
+ export interface AdminJobField {
815
+ /**
816
+ * Field key; also the JSON property name submitted to the job\'s endpoint
817
+ */
818
+ 'key'?: string;
819
+ /**
820
+ * Human label for the input
821
+ */
822
+ 'label'?: string;
823
+ /**
824
+ * Input type
825
+ */
826
+ 'type'?: JobFieldType;
827
+ /**
828
+ * Whether the field must be provided
829
+ */
830
+ 'required'?: boolean;
831
+ /**
832
+ * Default value, string form (booleans use \"true\"/\"false\")
833
+ */
834
+ 'defaultValue'?: string | null;
835
+ /**
836
+ * Placeholder text
837
+ */
838
+ 'placeholder'?: string | null;
839
+ /**
840
+ * Optional helper text shown under the input
841
+ */
842
+ 'helpText'?: string | null;
843
+ }
844
+
845
+
745
846
  /**
746
847
  * Full player detail including punishment history and all known usernames
747
848
  */
@@ -1519,6 +1620,15 @@ export interface CursoredPageable {
1519
1620
  }
1520
1621
 
1521
1622
 
1623
+ /**
1624
+ * 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.
1625
+ */
1626
+ export interface DiscordAuthUrlResponse {
1627
+ /**
1628
+ * Discord OAuth2 authorize URL to open on the client.
1629
+ */
1630
+ 'authorizeUrl': string;
1631
+ }
1522
1632
 
1523
1633
  export const GameType = {
1524
1634
  Rotj: 'ROTJ',
@@ -1529,6 +1639,20 @@ export const GameType = {
1529
1639
  export type GameType = typeof GameType[keyof typeof GameType];
1530
1640
 
1531
1641
 
1642
+ /**
1643
+ * Input type
1644
+ */
1645
+
1646
+ export const JobFieldType = {
1647
+ Text: 'TEXT',
1648
+ Number: 'NUMBER',
1649
+ Password: 'PASSWORD',
1650
+ Boolean: 'BOOLEAN'
1651
+ } as const;
1652
+
1653
+ export type JobFieldType = typeof JobFieldType[keyof typeof JobFieldType];
1654
+
1655
+
1532
1656
  /**
1533
1657
  * Current lifecycle state.
1534
1658
  */
@@ -4369,6 +4493,112 @@ export class AdminDashboardApi extends BaseAPI {
4369
4493
 
4370
4494
 
4371
4495
 
4496
+ /**
4497
+ * AdminImportApi - axios parameter creator
4498
+ */
4499
+ export const AdminImportApiAxiosParamCreator = function (configuration?: Configuration) {
4500
+ return {
4501
+ /**
4502
+ * Connects to the supplied AdvancedBan MySQL database, reads its active and history punishment tables, and imports each as a Reborn punishment. Idempotent: rows already imported (matched on import_source + the AdvancedBan row id) are skipped, so existing punishments are never overridden. Runs as an async job — poll /admin/job/{id} for progress and the result payload.
4503
+ * @summary Import punishments from an AdvancedBan MySQL database
4504
+ * @param {AdminAdvancedBanImportRequest} adminAdvancedBanImportRequest
4505
+ * @param {*} [options] Override http request option.
4506
+ * @throws {RequiredError}
4507
+ */
4508
+ importAdvancedBan: async (adminAdvancedBanImportRequest: AdminAdvancedBanImportRequest, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
4509
+ // verify required parameter 'adminAdvancedBanImportRequest' is not null or undefined
4510
+ assertParamExists('importAdvancedBan', 'adminAdvancedBanImportRequest', adminAdvancedBanImportRequest)
4511
+ const localVarPath = `/admin/import/advancedban`;
4512
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4513
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4514
+ let baseOptions;
4515
+ if (configuration) {
4516
+ baseOptions = configuration.baseOptions;
4517
+ }
4518
+
4519
+ const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
4520
+ const localVarHeaderParameter = {} as any;
4521
+ const localVarQueryParameter = {} as any;
4522
+
4523
+ // authentication DiscordAuth required
4524
+ // http bearer authentication required
4525
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4526
+
4527
+ localVarHeaderParameter['Content-Type'] = 'application/json';
4528
+ localVarHeaderParameter['Accept'] = 'application/json';
4529
+
4530
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4531
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4532
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4533
+ localVarRequestOptions.data = serializeDataIfNeeded(adminAdvancedBanImportRequest, localVarRequestOptions, configuration)
4534
+
4535
+ return {
4536
+ url: toPathString(localVarUrlObj),
4537
+ options: localVarRequestOptions,
4538
+ };
4539
+ },
4540
+ }
4541
+ };
4542
+
4543
+ /**
4544
+ * AdminImportApi - functional programming interface
4545
+ */
4546
+ export const AdminImportApiFp = function(configuration?: Configuration) {
4547
+ const localVarAxiosParamCreator = AdminImportApiAxiosParamCreator(configuration)
4548
+ return {
4549
+ /**
4550
+ * Connects to the supplied AdvancedBan MySQL database, reads its active and history punishment tables, and imports each as a Reborn punishment. Idempotent: rows already imported (matched on import_source + the AdvancedBan row id) are skipped, so existing punishments are never overridden. Runs as an async job — poll /admin/job/{id} for progress and the result payload.
4551
+ * @summary Import punishments from an AdvancedBan MySQL database
4552
+ * @param {AdminAdvancedBanImportRequest} adminAdvancedBanImportRequest
4553
+ * @param {*} [options] Override http request option.
4554
+ * @throws {RequiredError}
4555
+ */
4556
+ async importAdvancedBan(adminAdvancedBanImportRequest: AdminAdvancedBanImportRequest, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdminAsyncJobStartResponse>> {
4557
+ const localVarAxiosArgs = await localVarAxiosParamCreator.importAdvancedBan(adminAdvancedBanImportRequest, options);
4558
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4559
+ const localVarOperationServerBasePath = operationServerMap['AdminImportApi.importAdvancedBan']?.[localVarOperationServerIndex]?.url;
4560
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4561
+ },
4562
+ }
4563
+ };
4564
+
4565
+ /**
4566
+ * AdminImportApi - factory interface
4567
+ */
4568
+ export const AdminImportApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
4569
+ const localVarFp = AdminImportApiFp(configuration)
4570
+ return {
4571
+ /**
4572
+ * Connects to the supplied AdvancedBan MySQL database, reads its active and history punishment tables, and imports each as a Reborn punishment. Idempotent: rows already imported (matched on import_source + the AdvancedBan row id) are skipped, so existing punishments are never overridden. Runs as an async job — poll /admin/job/{id} for progress and the result payload.
4573
+ * @summary Import punishments from an AdvancedBan MySQL database
4574
+ * @param {AdminAdvancedBanImportRequest} adminAdvancedBanImportRequest
4575
+ * @param {*} [options] Override http request option.
4576
+ * @throws {RequiredError}
4577
+ */
4578
+ importAdvancedBan(adminAdvancedBanImportRequest: AdminAdvancedBanImportRequest, options?: RawAxiosRequestConfig): AxiosPromise<AdminAsyncJobStartResponse> {
4579
+ return localVarFp.importAdvancedBan(adminAdvancedBanImportRequest, options).then((request) => request(axios, basePath));
4580
+ },
4581
+ };
4582
+ };
4583
+
4584
+ /**
4585
+ * AdminImportApi - object-oriented interface
4586
+ */
4587
+ export class AdminImportApi extends BaseAPI {
4588
+ /**
4589
+ * Connects to the supplied AdvancedBan MySQL database, reads its active and history punishment tables, and imports each as a Reborn punishment. Idempotent: rows already imported (matched on import_source + the AdvancedBan row id) are skipped, so existing punishments are never overridden. Runs as an async job — poll /admin/job/{id} for progress and the result payload.
4590
+ * @summary Import punishments from an AdvancedBan MySQL database
4591
+ * @param {AdminAdvancedBanImportRequest} adminAdvancedBanImportRequest
4592
+ * @param {*} [options] Override http request option.
4593
+ * @throws {RequiredError}
4594
+ */
4595
+ public importAdvancedBan(adminAdvancedBanImportRequest: AdminAdvancedBanImportRequest, options?: RawAxiosRequestConfig) {
4596
+ return AdminImportApiFp(this.configuration).importAdvancedBan(adminAdvancedBanImportRequest, options).then((request) => request(this.axios, this.basePath));
4597
+ }
4598
+ }
4599
+
4600
+
4601
+
4372
4602
  /**
4373
4603
  * AdminJobsApi - axios parameter creator
4374
4604
  */
@@ -4402,6 +4632,40 @@ export const AdminJobsApiAxiosParamCreator = function (configuration?: Configura
4402
4632
  await setBearerAuthToObject(localVarHeaderParameter, configuration)
4403
4633
 
4404
4634
 
4635
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
4636
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4637
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
4638
+
4639
+ return {
4640
+ url: toPathString(localVarUrlObj),
4641
+ options: localVarRequestOptions,
4642
+ };
4643
+ },
4644
+ /**
4645
+ * Metadata for jobs that take configuration: the fields the configure dialog should render and the path to POST the filled values to. Field keys match the target endpoint\'s request body. Paramless jobs are not listed here.
4646
+ * @summary List configurable jobs
4647
+ * @param {*} [options] Override http request option.
4648
+ * @throws {RequiredError}
4649
+ */
4650
+ config: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
4651
+ const localVarPath = `/admin/job/config`;
4652
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
4653
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
4654
+ let baseOptions;
4655
+ if (configuration) {
4656
+ baseOptions = configuration.baseOptions;
4657
+ }
4658
+
4659
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
4660
+ const localVarHeaderParameter = {} as any;
4661
+ const localVarQueryParameter = {} as any;
4662
+
4663
+ // authentication DiscordAuth required
4664
+ // http bearer authentication required
4665
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
4666
+
4667
+ localVarHeaderParameter['Accept'] = 'application/json';
4668
+
4405
4669
  setSearchParams(localVarUrlObj, localVarQueryParameter);
4406
4670
  let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
4407
4671
  localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
@@ -4555,6 +4819,18 @@ export const AdminJobsApiFp = function(configuration?: Configuration) {
4555
4819
  const localVarOperationServerBasePath = operationServerMap['AdminJobsApi.cancel']?.[localVarOperationServerIndex]?.url;
4556
4820
  return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4557
4821
  },
4822
+ /**
4823
+ * Metadata for jobs that take configuration: the fields the configure dialog should render and the path to POST the filled values to. Field keys match the target endpoint\'s request body. Paramless jobs are not listed here.
4824
+ * @summary List configurable jobs
4825
+ * @param {*} [options] Override http request option.
4826
+ * @throws {RequiredError}
4827
+ */
4828
+ async config(options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<AdminJobConfig>>> {
4829
+ const localVarAxiosArgs = await localVarAxiosParamCreator.config(options);
4830
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
4831
+ const localVarOperationServerBasePath = operationServerMap['AdminJobsApi.config']?.[localVarOperationServerIndex]?.url;
4832
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
4833
+ },
4558
4834
  /**
4559
4835
  * 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).
4560
4836
  * @summary Download a job\'s CSV artifact
@@ -4614,6 +4890,15 @@ export const AdminJobsApiFactory = function (configuration?: Configuration, base
4614
4890
  cancel(id: string, options?: RawAxiosRequestConfig): AxiosPromise<void> {
4615
4891
  return localVarFp.cancel(id, options).then((request) => request(axios, basePath));
4616
4892
  },
4893
+ /**
4894
+ * Metadata for jobs that take configuration: the fields the configure dialog should render and the path to POST the filled values to. Field keys match the target endpoint\'s request body. Paramless jobs are not listed here.
4895
+ * @summary List configurable jobs
4896
+ * @param {*} [options] Override http request option.
4897
+ * @throws {RequiredError}
4898
+ */
4899
+ config(options?: RawAxiosRequestConfig): AxiosPromise<Array<AdminJobConfig>> {
4900
+ return localVarFp.config(options).then((request) => request(axios, basePath));
4901
+ },
4617
4902
  /**
4618
4903
  * 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).
4619
4904
  * @summary Download a job\'s CSV artifact
@@ -4663,6 +4948,16 @@ export class AdminJobsApi extends BaseAPI {
4663
4948
  return AdminJobsApiFp(this.configuration).cancel(id, options).then((request) => request(this.axios, this.basePath));
4664
4949
  }
4665
4950
 
4951
+ /**
4952
+ * Metadata for jobs that take configuration: the fields the configure dialog should render and the path to POST the filled values to. Field keys match the target endpoint\'s request body. Paramless jobs are not listed here.
4953
+ * @summary List configurable jobs
4954
+ * @param {*} [options] Override http request option.
4955
+ * @throws {RequiredError}
4956
+ */
4957
+ public config(options?: RawAxiosRequestConfig) {
4958
+ return AdminJobsApiFp(this.configuration).config(options).then((request) => request(this.axios, this.basePath));
4959
+ }
4960
+
4666
4961
  /**
4667
4962
  * 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).
4668
4963
  * @summary Download a job\'s CSV artifact
@@ -7161,6 +7456,45 @@ export class AdminReportsApi extends BaseAPI {
7161
7456
  */
7162
7457
  export const AuthenticationApiAxiosParamCreator = function (configuration?: Configuration) {
7163
7458
  return {
7459
+ /**
7460
+ * 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.
7461
+ * @summary Discord - Authorize URL (native clients)
7462
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7463
+ * @param {*} [options] Override http request option.
7464
+ * @throws {RequiredError}
7465
+ */
7466
+ authorizeUrl: async (redirect?: string | null, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {
7467
+ const localVarPath = `/auth/discord/url`;
7468
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
7469
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
7470
+ let baseOptions;
7471
+ if (configuration) {
7472
+ baseOptions = configuration.baseOptions;
7473
+ }
7474
+
7475
+ const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
7476
+ const localVarHeaderParameter = {} as any;
7477
+ const localVarQueryParameter = {} as any;
7478
+
7479
+ // authentication DiscordAuth required
7480
+ // http bearer authentication required
7481
+ await setBearerAuthToObject(localVarHeaderParameter, configuration)
7482
+
7483
+ if (redirect !== undefined) {
7484
+ localVarQueryParameter['redirect'] = redirect;
7485
+ }
7486
+
7487
+ localVarHeaderParameter['Accept'] = 'application/json';
7488
+
7489
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
7490
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
7491
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
7492
+
7493
+ return {
7494
+ url: toPathString(localVarUrlObj),
7495
+ options: localVarRequestOptions,
7496
+ };
7497
+ },
7164
7498
  /**
7165
7499
  * 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.
7166
7500
  * @summary Discord - OAuth2 callback
@@ -7342,6 +7676,19 @@ export const AuthenticationApiAxiosParamCreator = function (configuration?: Conf
7342
7676
  export const AuthenticationApiFp = function(configuration?: Configuration) {
7343
7677
  const localVarAxiosParamCreator = AuthenticationApiAxiosParamCreator(configuration)
7344
7678
  return {
7679
+ /**
7680
+ * 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.
7681
+ * @summary Discord - Authorize URL (native clients)
7682
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7683
+ * @param {*} [options] Override http request option.
7684
+ * @throws {RequiredError}
7685
+ */
7686
+ async authorizeUrl(redirect?: string | null, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DiscordAuthUrlResponse>> {
7687
+ const localVarAxiosArgs = await localVarAxiosParamCreator.authorizeUrl(redirect, options);
7688
+ const localVarOperationServerIndex = configuration?.serverIndex ?? 0;
7689
+ const localVarOperationServerBasePath = operationServerMap['AuthenticationApi.authorizeUrl']?.[localVarOperationServerIndex]?.url;
7690
+ return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, localVarOperationServerBasePath || basePath);
7691
+ },
7345
7692
  /**
7346
7693
  * 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.
7347
7694
  * @summary Discord - OAuth2 callback
@@ -7406,6 +7753,16 @@ export const AuthenticationApiFp = function(configuration?: Configuration) {
7406
7753
  export const AuthenticationApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
7407
7754
  const localVarFp = AuthenticationApiFp(configuration)
7408
7755
  return {
7756
+ /**
7757
+ * 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.
7758
+ * @summary Discord - Authorize URL (native clients)
7759
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7760
+ * @param {*} [options] Override http request option.
7761
+ * @throws {RequiredError}
7762
+ */
7763
+ authorizeUrl(redirect?: string | null, options?: RawAxiosRequestConfig): AxiosPromise<DiscordAuthUrlResponse> {
7764
+ return localVarFp.authorizeUrl(redirect, options).then((request) => request(axios, basePath));
7765
+ },
7409
7766
  /**
7410
7767
  * 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.
7411
7768
  * @summary Discord - OAuth2 callback
@@ -7456,6 +7813,17 @@ export const AuthenticationApiFactory = function (configuration?: Configuration,
7456
7813
  * AuthenticationApi - object-oriented interface
7457
7814
  */
7458
7815
  export class AuthenticationApi extends BaseAPI {
7816
+ /**
7817
+ * 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.
7818
+ * @summary Discord - Authorize URL (native clients)
7819
+ * @param {string | null} [redirect] Final redirect target for the JWT (native deep link). Must be allowlisted.
7820
+ * @param {*} [options] Override http request option.
7821
+ * @throws {RequiredError}
7822
+ */
7823
+ public authorizeUrl(redirect?: string | null, options?: RawAxiosRequestConfig) {
7824
+ return AuthenticationApiFp(this.configuration).authorizeUrl(redirect, options).then((request) => request(this.axios, this.basePath));
7825
+ }
7826
+
7459
7827
  /**
7460
7828
  * 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.
7461
7829
  * @summary Discord - OAuth2 callback
package/base.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.2
7
+ * The version of the OpenAPI document: 4.9.4
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/common.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.2
7
+ * The version of the OpenAPI document: 4.9.4
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/configuration.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Reborn API
4
4
  * 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
5
5
  *
6
- * The version of the OpenAPI document: 4.9.2
6
+ * The version of the OpenAPI document: 4.9.4
7
7
  *
8
8
  *
9
9
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).