@firela/api-types 0.0.0-canary.a7bda42 → 0.0.0-canary.b3b7767b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/index.d.mts +6619 -0
  2. package/dist/index.d.ts +6619 -2
  3. package/dist/index.js +1237 -3
  4. package/dist/index.mjs +1204 -0
  5. package/package.json +27 -13
  6. package/src/generated/core/ApiError.ts +25 -0
  7. package/src/generated/core/ApiRequestOptions.ts +20 -0
  8. package/src/generated/core/ApiResult.ts +7 -0
  9. package/src/generated/core/CancelablePromise.ts +126 -0
  10. package/src/generated/core/OpenAPI.ts +56 -0
  11. package/src/generated/core/request.ts +391 -0
  12. package/{dist/generated/index.d.ts → src/generated/index.ts} +1 -1
  13. package/src/generated/schemas.gen.ts +4918 -0
  14. package/src/generated/services.gen.ts +3361 -0
  15. package/src/generated/types.gen.ts +6887 -0
  16. package/src/index.ts +12 -0
  17. package/README.md +0 -40
  18. package/dist/generated/core/ApiError.d.ts +0 -11
  19. package/dist/generated/core/ApiError.d.ts.map +0 -1
  20. package/dist/generated/core/ApiError.js +0 -11
  21. package/dist/generated/core/ApiRequestOptions.d.ts +0 -14
  22. package/dist/generated/core/ApiRequestOptions.d.ts.map +0 -1
  23. package/dist/generated/core/ApiRequestOptions.js +0 -1
  24. package/dist/generated/core/ApiResult.d.ts +0 -8
  25. package/dist/generated/core/ApiResult.d.ts.map +0 -1
  26. package/dist/generated/core/ApiResult.js +0 -1
  27. package/dist/generated/core/CancelablePromise.d.ts +0 -27
  28. package/dist/generated/core/CancelablePromise.d.ts.map +0 -1
  29. package/dist/generated/core/CancelablePromise.js +0 -88
  30. package/dist/generated/core/OpenAPI.d.ts +0 -28
  31. package/dist/generated/core/OpenAPI.d.ts.map +0 -1
  32. package/dist/generated/core/OpenAPI.js +0 -29
  33. package/dist/generated/core/request.d.ts +0 -30
  34. package/dist/generated/core/request.d.ts.map +0 -1
  35. package/dist/generated/core/request.js +0 -297
  36. package/dist/generated/index.d.ts.map +0 -1
  37. package/dist/generated/index.js +0 -7
  38. package/dist/generated/schemas.gen.d.ts +0 -771
  39. package/dist/generated/schemas.gen.d.ts.map +0 -1
  40. package/dist/generated/schemas.gen.js +0 -771
  41. package/dist/generated/services.gen.d.ts +0 -313
  42. package/dist/generated/services.gen.d.ts.map +0 -1
  43. package/dist/generated/services.gen.js +0 -705
  44. package/dist/generated/types.gen.d.ts +0 -1159
  45. package/dist/generated/types.gen.d.ts.map +0 -1
  46. package/dist/generated/types.gen.js +0 -2
  47. package/dist/index.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -1,3 +1,1237 @@
1
- // Entry point for @firela/api-types
2
- // Generated types will be exported from ./generated
3
- export * from './generated';
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ BeanAccountsService: () => BeanAccountsService,
24
+ BeanBalancesService: () => BeanBalancesService,
25
+ BeanCommoditiesService: () => BeanCommoditiesService,
26
+ BeanTransactionsService: () => BeanTransactionsService,
27
+ HealthService: () => HealthService,
28
+ OpenAPI: () => OpenAPI,
29
+ ProviderSyncService: () => ProviderSyncService
30
+ });
31
+ module.exports = __toCommonJS(index_exports);
32
+
33
+ // src/generated/core/OpenAPI.ts
34
+ var Interceptors = class {
35
+ constructor() {
36
+ this._fns = [];
37
+ }
38
+ eject(fn) {
39
+ const index = this._fns.indexOf(fn);
40
+ if (index !== -1) {
41
+ this._fns = [...this._fns.slice(0, index), ...this._fns.slice(index + 1)];
42
+ }
43
+ }
44
+ use(fn) {
45
+ this._fns = [...this._fns, fn];
46
+ }
47
+ };
48
+ var OpenAPI = {
49
+ BASE: "",
50
+ CREDENTIALS: "include",
51
+ ENCODE_PATH: void 0,
52
+ HEADERS: void 0,
53
+ PASSWORD: void 0,
54
+ TOKEN: void 0,
55
+ USERNAME: void 0,
56
+ VERSION: "dev",
57
+ WITH_CREDENTIALS: false,
58
+ interceptors: {
59
+ request: new Interceptors(),
60
+ response: new Interceptors()
61
+ }
62
+ };
63
+
64
+ // src/generated/core/ApiError.ts
65
+ var ApiError = class extends Error {
66
+ constructor(request2, response, message) {
67
+ super(message);
68
+ this.name = "ApiError";
69
+ this.url = response.url;
70
+ this.status = response.status;
71
+ this.statusText = response.statusText;
72
+ this.body = response.body;
73
+ this.request = request2;
74
+ }
75
+ };
76
+
77
+ // src/generated/core/CancelablePromise.ts
78
+ var CancelError = class extends Error {
79
+ constructor(message) {
80
+ super(message);
81
+ this.name = "CancelError";
82
+ }
83
+ get isCancelled() {
84
+ return true;
85
+ }
86
+ };
87
+ var CancelablePromise = class {
88
+ constructor(executor) {
89
+ this._isResolved = false;
90
+ this._isRejected = false;
91
+ this._isCancelled = false;
92
+ this.cancelHandlers = [];
93
+ this.promise = new Promise((resolve2, reject) => {
94
+ this._resolve = resolve2;
95
+ this._reject = reject;
96
+ const onResolve = (value) => {
97
+ if (this._isResolved || this._isRejected || this._isCancelled) {
98
+ return;
99
+ }
100
+ this._isResolved = true;
101
+ if (this._resolve) this._resolve(value);
102
+ };
103
+ const onReject = (reason) => {
104
+ if (this._isResolved || this._isRejected || this._isCancelled) {
105
+ return;
106
+ }
107
+ this._isRejected = true;
108
+ if (this._reject) this._reject(reason);
109
+ };
110
+ const onCancel = (cancelHandler) => {
111
+ if (this._isResolved || this._isRejected || this._isCancelled) {
112
+ return;
113
+ }
114
+ this.cancelHandlers.push(cancelHandler);
115
+ };
116
+ Object.defineProperty(onCancel, "isResolved", {
117
+ get: () => this._isResolved
118
+ });
119
+ Object.defineProperty(onCancel, "isRejected", {
120
+ get: () => this._isRejected
121
+ });
122
+ Object.defineProperty(onCancel, "isCancelled", {
123
+ get: () => this._isCancelled
124
+ });
125
+ return executor(onResolve, onReject, onCancel);
126
+ });
127
+ }
128
+ get [Symbol.toStringTag]() {
129
+ return "Cancellable Promise";
130
+ }
131
+ then(onFulfilled, onRejected) {
132
+ return this.promise.then(onFulfilled, onRejected);
133
+ }
134
+ catch(onRejected) {
135
+ return this.promise.catch(onRejected);
136
+ }
137
+ finally(onFinally) {
138
+ return this.promise.finally(onFinally);
139
+ }
140
+ cancel() {
141
+ if (this._isResolved || this._isRejected || this._isCancelled) {
142
+ return;
143
+ }
144
+ this._isCancelled = true;
145
+ if (this.cancelHandlers.length) {
146
+ try {
147
+ for (const cancelHandler of this.cancelHandlers) {
148
+ cancelHandler();
149
+ }
150
+ } catch (error) {
151
+ console.warn("Cancellation threw an error", error);
152
+ return;
153
+ }
154
+ }
155
+ this.cancelHandlers.length = 0;
156
+ if (this._reject) this._reject(new CancelError("Request aborted"));
157
+ }
158
+ get isCancelled() {
159
+ return this._isCancelled;
160
+ }
161
+ };
162
+
163
+ // src/generated/core/request.ts
164
+ var isString = (value) => {
165
+ return typeof value === "string";
166
+ };
167
+ var isStringWithValue = (value) => {
168
+ return isString(value) && value !== "";
169
+ };
170
+ var isBlob = (value) => {
171
+ return value instanceof Blob;
172
+ };
173
+ var isFormData = (value) => {
174
+ return value instanceof FormData;
175
+ };
176
+ var base64 = (str) => {
177
+ try {
178
+ return btoa(str);
179
+ } catch (err) {
180
+ return Buffer.from(str).toString("base64");
181
+ }
182
+ };
183
+ var getQueryString = (params) => {
184
+ const qs = [];
185
+ const append = (key, value) => {
186
+ qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
187
+ };
188
+ const encodePair = (key, value) => {
189
+ if (value === void 0 || value === null) {
190
+ return;
191
+ }
192
+ if (value instanceof Date) {
193
+ append(key, value.toISOString());
194
+ } else if (Array.isArray(value)) {
195
+ value.forEach((v) => encodePair(key, v));
196
+ } else if (typeof value === "object") {
197
+ Object.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v));
198
+ } else {
199
+ append(key, value);
200
+ }
201
+ };
202
+ Object.entries(params).forEach(([key, value]) => encodePair(key, value));
203
+ return qs.length ? `?${qs.join("&")}` : "";
204
+ };
205
+ var getUrl = (config, options) => {
206
+ const encoder = config.ENCODE_PATH || encodeURI;
207
+ const path = options.url.replace("{api-version}", config.VERSION).replace(/{(.*?)}/g, (substring, group) => {
208
+ if (options.path?.hasOwnProperty(group)) {
209
+ return encoder(String(options.path[group]));
210
+ }
211
+ return substring;
212
+ });
213
+ const url = config.BASE + path;
214
+ return options.query ? url + getQueryString(options.query) : url;
215
+ };
216
+ var getFormData = (options) => {
217
+ if (options.formData) {
218
+ const formData = new FormData();
219
+ const process = (key, value) => {
220
+ if (isString(value) || isBlob(value)) {
221
+ formData.append(key, value);
222
+ } else {
223
+ formData.append(key, JSON.stringify(value));
224
+ }
225
+ };
226
+ Object.entries(options.formData).filter(([, value]) => value !== void 0 && value !== null).forEach(([key, value]) => {
227
+ if (Array.isArray(value)) {
228
+ value.forEach((v) => process(key, v));
229
+ } else {
230
+ process(key, value);
231
+ }
232
+ });
233
+ return formData;
234
+ }
235
+ return void 0;
236
+ };
237
+ var resolve = async (options, resolver) => {
238
+ if (typeof resolver === "function") {
239
+ return resolver(options);
240
+ }
241
+ return resolver;
242
+ };
243
+ var getHeaders = async (config, options) => {
244
+ const [token, username, password, additionalHeaders] = await Promise.all([
245
+ resolve(options, config.TOKEN),
246
+ resolve(options, config.USERNAME),
247
+ resolve(options, config.PASSWORD),
248
+ resolve(options, config.HEADERS)
249
+ ]);
250
+ const headers = Object.entries({
251
+ Accept: "application/json",
252
+ ...additionalHeaders,
253
+ ...options.headers
254
+ }).filter(([, value]) => value !== void 0 && value !== null).reduce(
255
+ (headers2, [key, value]) => ({
256
+ ...headers2,
257
+ [key]: String(value)
258
+ }),
259
+ {}
260
+ );
261
+ if (isStringWithValue(token)) {
262
+ headers["Authorization"] = `Bearer ${token}`;
263
+ }
264
+ if (isStringWithValue(username) && isStringWithValue(password)) {
265
+ const credentials = base64(`${username}:${password}`);
266
+ headers["Authorization"] = `Basic ${credentials}`;
267
+ }
268
+ if (options.body !== void 0) {
269
+ if (options.mediaType) {
270
+ headers["Content-Type"] = options.mediaType;
271
+ } else if (isBlob(options.body)) {
272
+ headers["Content-Type"] = options.body.type || "application/octet-stream";
273
+ } else if (isString(options.body)) {
274
+ headers["Content-Type"] = "text/plain";
275
+ } else if (!isFormData(options.body)) {
276
+ headers["Content-Type"] = "application/json";
277
+ }
278
+ }
279
+ return new Headers(headers);
280
+ };
281
+ var getRequestBody = (options) => {
282
+ if (options.body !== void 0) {
283
+ if (options.mediaType?.includes("application/json") || options.mediaType?.includes("+json")) {
284
+ return JSON.stringify(options.body);
285
+ } else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {
286
+ return options.body;
287
+ } else {
288
+ return JSON.stringify(options.body);
289
+ }
290
+ }
291
+ return void 0;
292
+ };
293
+ var sendRequest = async (config, options, url, body, formData, headers, onCancel) => {
294
+ const controller = new AbortController();
295
+ let request2 = {
296
+ headers,
297
+ body: body ?? formData,
298
+ method: options.method,
299
+ signal: controller.signal
300
+ };
301
+ if (config.WITH_CREDENTIALS) {
302
+ request2.credentials = config.CREDENTIALS;
303
+ }
304
+ for (const fn of config.interceptors.request._fns) {
305
+ request2 = await fn(request2);
306
+ }
307
+ onCancel(() => controller.abort());
308
+ return await fetch(url, request2);
309
+ };
310
+ var getResponseHeader = (response, responseHeader) => {
311
+ if (responseHeader) {
312
+ const content = response.headers.get(responseHeader);
313
+ if (isString(content)) {
314
+ return content;
315
+ }
316
+ }
317
+ return void 0;
318
+ };
319
+ var getResponseBody = async (response) => {
320
+ if (response.status !== 204) {
321
+ try {
322
+ const contentType = response.headers.get("Content-Type");
323
+ if (contentType) {
324
+ const binaryTypes = [
325
+ "application/octet-stream",
326
+ "application/pdf",
327
+ "application/zip",
328
+ "audio/",
329
+ "image/",
330
+ "video/"
331
+ ];
332
+ if (contentType.includes("application/json") || contentType.includes("+json")) {
333
+ return await response.json();
334
+ } else if (binaryTypes.some((type) => contentType.includes(type))) {
335
+ return await response.blob();
336
+ } else if (contentType.includes("multipart/form-data")) {
337
+ return await response.formData();
338
+ } else if (contentType.includes("text/")) {
339
+ return await response.text();
340
+ }
341
+ }
342
+ } catch (error) {
343
+ console.error(error);
344
+ }
345
+ }
346
+ return void 0;
347
+ };
348
+ var catchErrorCodes = (options, result) => {
349
+ const errors = {
350
+ 400: "Bad Request",
351
+ 401: "Unauthorized",
352
+ 402: "Payment Required",
353
+ 403: "Forbidden",
354
+ 404: "Not Found",
355
+ 405: "Method Not Allowed",
356
+ 406: "Not Acceptable",
357
+ 407: "Proxy Authentication Required",
358
+ 408: "Request Timeout",
359
+ 409: "Conflict",
360
+ 410: "Gone",
361
+ 411: "Length Required",
362
+ 412: "Precondition Failed",
363
+ 413: "Payload Too Large",
364
+ 414: "URI Too Long",
365
+ 415: "Unsupported Media Type",
366
+ 416: "Range Not Satisfiable",
367
+ 417: "Expectation Failed",
368
+ 418: "Im a teapot",
369
+ 421: "Misdirected Request",
370
+ 422: "Unprocessable Content",
371
+ 423: "Locked",
372
+ 424: "Failed Dependency",
373
+ 425: "Too Early",
374
+ 426: "Upgrade Required",
375
+ 428: "Precondition Required",
376
+ 429: "Too Many Requests",
377
+ 431: "Request Header Fields Too Large",
378
+ 451: "Unavailable For Legal Reasons",
379
+ 500: "Internal Server Error",
380
+ 501: "Not Implemented",
381
+ 502: "Bad Gateway",
382
+ 503: "Service Unavailable",
383
+ 504: "Gateway Timeout",
384
+ 505: "HTTP Version Not Supported",
385
+ 506: "Variant Also Negotiates",
386
+ 507: "Insufficient Storage",
387
+ 508: "Loop Detected",
388
+ 510: "Not Extended",
389
+ 511: "Network Authentication Required",
390
+ ...options.errors
391
+ };
392
+ const error = errors[result.status];
393
+ if (error) {
394
+ throw new ApiError(options, result, error);
395
+ }
396
+ if (!result.ok) {
397
+ const errorStatus = result.status ?? "unknown";
398
+ const errorStatusText = result.statusText ?? "unknown";
399
+ const errorBody = (() => {
400
+ try {
401
+ return JSON.stringify(result.body, null, 2);
402
+ } catch (e) {
403
+ return void 0;
404
+ }
405
+ })();
406
+ throw new ApiError(
407
+ options,
408
+ result,
409
+ `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`
410
+ );
411
+ }
412
+ };
413
+ var request = (config, options) => {
414
+ return new CancelablePromise(async (resolve2, reject, onCancel) => {
415
+ try {
416
+ const url = getUrl(config, options);
417
+ const formData = getFormData(options);
418
+ const body = getRequestBody(options);
419
+ const headers = await getHeaders(config, options);
420
+ if (!onCancel.isCancelled) {
421
+ let response = await sendRequest(
422
+ config,
423
+ options,
424
+ url,
425
+ body,
426
+ formData,
427
+ headers,
428
+ onCancel
429
+ );
430
+ for (const fn of config.interceptors.response._fns) {
431
+ response = await fn(response);
432
+ }
433
+ const responseBody = await getResponseBody(response);
434
+ const responseHeader = getResponseHeader(
435
+ response,
436
+ options.responseHeader
437
+ );
438
+ const result = {
439
+ url,
440
+ ok: response.ok,
441
+ status: response.status,
442
+ statusText: response.statusText,
443
+ body: responseHeader ?? responseBody
444
+ };
445
+ catchErrorCodes(options, result);
446
+ resolve2(result.body);
447
+ }
448
+ } catch (error) {
449
+ reject(error);
450
+ }
451
+ });
452
+ };
453
+
454
+ // src/generated/services.gen.ts
455
+ var BeanAccountsService = class {
456
+ /**
457
+ * Create a new account
458
+ * Creates a new account (Beancount Open directive)
459
+ * @param data The data for the request.
460
+ * @param data.region Region code for tenant context
461
+ * @param data.requestBody
462
+ * @returns AccountResponseDto Account created successfully
463
+ * @throws ApiError
464
+ */
465
+ static accountControllerCreate(data) {
466
+ return request(OpenAPI, {
467
+ method: "POST",
468
+ url: "/api/v1/{region}/bean/accounts",
469
+ path: {
470
+ region: data.region
471
+ },
472
+ body: data.requestBody,
473
+ mediaType: "application/json",
474
+ errors: {
475
+ 409: "Account already exists"
476
+ }
477
+ });
478
+ }
479
+ /**
480
+ * List accounts
481
+ * Returns all accounts with optional filtering
482
+ * @param data The data for the request.
483
+ * @param data.region Region code for tenant context
484
+ * @param data.type Filter by account type
485
+ * @param data.status Filter by status
486
+ * @param data.isCustom Filter by custom (user-created) accounts only
487
+ * @param data.search Search term for path or i18nKey
488
+ * @param data.limit Maximum number of results
489
+ * @param data.offset Number of results to skip
490
+ * @returns AccountListResponseDto Accounts retrieved successfully
491
+ * @throws ApiError
492
+ */
493
+ static accountControllerFindAll(data) {
494
+ return request(OpenAPI, {
495
+ method: "GET",
496
+ url: "/api/v1/{region}/bean/accounts",
497
+ path: {
498
+ region: data.region
499
+ },
500
+ query: {
501
+ type: data.type,
502
+ status: data.status,
503
+ isCustom: data.isCustom,
504
+ search: data.search,
505
+ limit: data.limit,
506
+ offset: data.offset
507
+ }
508
+ });
509
+ }
510
+ /**
511
+ * Get account by ID
512
+ * Returns a specific account
513
+ * @param data The data for the request.
514
+ * @param data.id Account UUID
515
+ * @param data.region Region code for tenant context
516
+ * @returns AccountResponseDto Account retrieved successfully
517
+ * @throws ApiError
518
+ */
519
+ static accountControllerFindOne(data) {
520
+ return request(OpenAPI, {
521
+ method: "GET",
522
+ url: "/api/v1/{region}/bean/accounts/{id}",
523
+ path: {
524
+ id: data.id,
525
+ region: data.region
526
+ },
527
+ errors: {
528
+ 404: "Account not found"
529
+ }
530
+ });
531
+ }
532
+ /**
533
+ * Update account
534
+ * Updates account metadata (path cannot be changed)
535
+ * @param data The data for the request.
536
+ * @param data.id Account UUID
537
+ * @param data.region Region code for tenant context
538
+ * @param data.requestBody
539
+ * @returns AccountResponseDto Account updated successfully
540
+ * @throws ApiError
541
+ */
542
+ static accountControllerUpdate(data) {
543
+ return request(OpenAPI, {
544
+ method: "PUT",
545
+ url: "/api/v1/{region}/bean/accounts/{id}",
546
+ path: {
547
+ id: data.id,
548
+ region: data.region
549
+ },
550
+ body: data.requestBody,
551
+ mediaType: "application/json",
552
+ errors: {
553
+ 404: "Account not found"
554
+ }
555
+ });
556
+ }
557
+ /**
558
+ * Delete account
559
+ * Deletes an account (only if no transactions)
560
+ * @param data The data for the request.
561
+ * @param data.id Account UUID
562
+ * @param data.region Region code for tenant context
563
+ * @returns void Account deleted successfully
564
+ * @throws ApiError
565
+ */
566
+ static accountControllerDelete(data) {
567
+ return request(OpenAPI, {
568
+ method: "DELETE",
569
+ url: "/api/v1/{region}/bean/accounts/{id}",
570
+ path: {
571
+ id: data.id,
572
+ region: data.region
573
+ },
574
+ errors: {
575
+ 404: "Account not found",
576
+ 409: "Account has transactions and cannot be deleted"
577
+ }
578
+ });
579
+ }
580
+ /**
581
+ * Close account
582
+ * Closes an account (Beancount Close directive)
583
+ * @param data The data for the request.
584
+ * @param data.id Account UUID
585
+ * @param data.region Region code for tenant context
586
+ * @param data.requestBody
587
+ * @returns AccountResponseDto Account closed successfully
588
+ * @throws ApiError
589
+ */
590
+ static accountControllerClose(data) {
591
+ return request(OpenAPI, {
592
+ method: "POST",
593
+ url: "/api/v1/{region}/bean/accounts/{id}/close",
594
+ path: {
595
+ id: data.id,
596
+ region: data.region
597
+ },
598
+ body: data.requestBody,
599
+ mediaType: "application/json",
600
+ errors: {
601
+ 400: "Account is already closed",
602
+ 404: "Account not found"
603
+ }
604
+ });
605
+ }
606
+ /**
607
+ * Reopen account
608
+ * Reopens a previously closed account
609
+ * @param data The data for the request.
610
+ * @param data.id Account UUID
611
+ * @param data.region Region code for tenant context
612
+ * @param data.requestBody
613
+ * @returns AccountResponseDto Account reopened successfully
614
+ * @throws ApiError
615
+ */
616
+ static accountControllerReopen(data) {
617
+ return request(OpenAPI, {
618
+ method: "POST",
619
+ url: "/api/v1/{region}/bean/accounts/{id}/reopen",
620
+ path: {
621
+ id: data.id,
622
+ region: data.region
623
+ },
624
+ body: data.requestBody,
625
+ mediaType: "application/json",
626
+ errors: {
627
+ 400: "Account is not closed",
628
+ 404: "Account not found"
629
+ }
630
+ });
631
+ }
632
+ };
633
+ var BeanTransactionsService = class {
634
+ /**
635
+ * @deprecated
636
+ * Create transaction (DEPRECATED)
637
+ * DEPRECATED: Use POST /:region/bean/import/provider/:name/sync instead. This endpoint skips dedup, rule matching, and review branching.
638
+ * @param data The data for the request.
639
+ * @param data.region Region code for tenant context
640
+ * @param data.requestBody Transaction data with postings
641
+ * @returns TransactionResponseDto Transaction created successfully
642
+ * @throws ApiError
643
+ */
644
+ static transactionControllerCreate(data) {
645
+ return request(OpenAPI, {
646
+ method: "POST",
647
+ url: "/api/v1/{region}/bean/transactions",
648
+ path: {
649
+ region: data.region
650
+ },
651
+ body: data.requestBody,
652
+ mediaType: "application/json",
653
+ errors: {
654
+ 400: "Validation failed",
655
+ 401: "Authentication required",
656
+ 422: "Semantic validation failed (transaction does not balance, invalid accounts)",
657
+ 500: "Unexpected server error"
658
+ }
659
+ });
660
+ }
661
+ /**
662
+ * List transactions
663
+ * Returns a paginated list of transactions with optional filters
664
+ * @param data The data for the request.
665
+ * @param data.region Region code for tenant context
666
+ * @param data.limit Number of items per page (1-100, default: 20)
667
+ * @param data.offset Number of items to skip (default: 0)
668
+ * @param data.dateFrom Filter by start date (inclusive), format: YYYY-MM-DD
669
+ * @param data.dateTo Filter by end date (inclusive), format: YYYY-MM-DD
670
+ * @param data.status Filter by transaction status
671
+ * @param data.search Search in narration and payee fields (max 200 chars)
672
+ * @param data.accountId Filter by account ID (transactions with postings to this account)
673
+ * @returns TransactionListResponseDto Transaction list
674
+ * @throws ApiError
675
+ */
676
+ static transactionControllerList(data) {
677
+ return request(OpenAPI, {
678
+ method: "GET",
679
+ url: "/api/v1/{region}/bean/transactions",
680
+ path: {
681
+ region: data.region
682
+ },
683
+ query: {
684
+ limit: data.limit,
685
+ offset: data.offset,
686
+ dateFrom: data.dateFrom,
687
+ dateTo: data.dateTo,
688
+ status: data.status,
689
+ search: data.search,
690
+ accountId: data.accountId
691
+ },
692
+ errors: {
693
+ 401: "Authentication required"
694
+ }
695
+ });
696
+ }
697
+ /**
698
+ * @param data The data for the request.
699
+ * @param data.region Region code for tenant context
700
+ * @returns unknown
701
+ * @throws ApiError
702
+ */
703
+ static transactionController(data) {
704
+ return request(OpenAPI, {
705
+ method: "POST",
706
+ url: "/api/v1/{region}/bean/transactions/batch",
707
+ path: {
708
+ region: data.region
709
+ }
710
+ });
711
+ }
712
+ /**
713
+ * Get transaction detail
714
+ * Returns transaction details including all postings
715
+ * @param data The data for the request.
716
+ * @param data.id Transaction ID
717
+ * @param data.region Region code for tenant context
718
+ * @returns TransactionDetailDto Transaction detail
719
+ * @throws ApiError
720
+ */
721
+ static transactionControllerGetDetail(data) {
722
+ return request(OpenAPI, {
723
+ method: "GET",
724
+ url: "/api/v1/{region}/bean/transactions/{id}",
725
+ path: {
726
+ id: data.id,
727
+ region: data.region
728
+ },
729
+ errors: {
730
+ 401: "Authentication required",
731
+ 404: "Transaction not found"
732
+ }
733
+ });
734
+ }
735
+ /**
736
+ * Update transaction metadata
737
+ * Updates transaction metadata (flag, payee, narration, tags, links, meta). Postings cannot be modified.
738
+ * @param data The data for the request.
739
+ * @param data.id Transaction ID
740
+ * @param data.region Region code for tenant context
741
+ * @param data.requestBody Fields to update (all optional)
742
+ * @returns TransactionDetailDto Transaction updated successfully
743
+ * @throws ApiError
744
+ */
745
+ static transactionControllerUpdate(data) {
746
+ return request(OpenAPI, {
747
+ method: "PATCH",
748
+ url: "/api/v1/{region}/bean/transactions/{id}",
749
+ path: {
750
+ id: data.id,
751
+ region: data.region
752
+ },
753
+ body: data.requestBody,
754
+ mediaType: "application/json",
755
+ errors: {
756
+ 400: "Cannot update voided transaction",
757
+ 401: "Authentication required",
758
+ 404: "Transaction not found"
759
+ }
760
+ });
761
+ }
762
+ /**
763
+ * @param data The data for the request.
764
+ * @param data.region Region code for tenant context
765
+ * @returns void
766
+ * @throws ApiError
767
+ */
768
+ static transactionController1(data) {
769
+ return request(OpenAPI, {
770
+ method: "DELETE",
771
+ url: "/api/v1/{region}/bean/transactions/{id}",
772
+ path: {
773
+ region: data.region
774
+ }
775
+ });
776
+ }
777
+ };
778
+ var BeanBalancesService = class {
779
+ /**
780
+ * Query account balance
781
+ * Calculate account balance at a specific date for a single currency
782
+ * @param data The data for the request.
783
+ * @param data.account Account name (e.g., "Assets:Bank:Checking")
784
+ * @param data.region Region code (cn, us, de)
785
+ * @param data.date Date to calculate balance at (ISO 8601 format)
786
+ * @param data.currency Currency to query (e.g., "USD", "CNY")
787
+ * @returns BalanceResponseDto Balance calculated successfully
788
+ * @throws ApiError
789
+ */
790
+ static balanceControllerGetBalance(data) {
791
+ return request(OpenAPI, {
792
+ method: "GET",
793
+ url: "/api/v1/{region}/bean/balances",
794
+ path: {
795
+ region: data.region
796
+ },
797
+ query: {
798
+ account: data.account,
799
+ date: data.date,
800
+ currency: data.currency
801
+ },
802
+ errors: {
803
+ 400: "Invalid query parameters",
804
+ 401: "User not authenticated"
805
+ }
806
+ });
807
+ }
808
+ /**
809
+ * Query multi-currency account balance
810
+ * Calculate account balances for all currencies at a specific date
811
+ * @param data The data for the request.
812
+ * @param data.region Region code (cn, us, de)
813
+ * @returns MultiCurrencyBalanceResponseDto Balances calculated successfully
814
+ * @throws ApiError
815
+ */
816
+ static balanceControllerGetMultiCurrencyBalance(data) {
817
+ return request(OpenAPI, {
818
+ method: "GET",
819
+ url: "/api/v1/{region}/bean/balances/multi-currency",
820
+ path: {
821
+ region: data.region
822
+ },
823
+ errors: {
824
+ 400: "Invalid query parameters",
825
+ 401: "User not authenticated"
826
+ }
827
+ });
828
+ }
829
+ };
830
+ var BeanCommoditiesService = class {
831
+ /**
832
+ * @param data The data for the request.
833
+ * @param data.region Region code (cn, us, de)
834
+ * @returns unknown
835
+ * @throws ApiError
836
+ */
837
+ static commodityController(data) {
838
+ return request(OpenAPI, {
839
+ method: "POST",
840
+ url: "/api/v1/{region}/bean/commodities",
841
+ path: {
842
+ region: data.region
843
+ }
844
+ });
845
+ }
846
+ /**
847
+ * List user commodities
848
+ * Returns all commodity definitions for the authenticated user with optional filtering
849
+ * @param data The data for the request.
850
+ * @param data.region Region code (cn, us, de)
851
+ * @param data.search Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
852
+ * @param data.symbol Filter by exact symbol match
853
+ * @returns CommodityListResponseDto Commodities retrieved successfully
854
+ * @throws ApiError
855
+ */
856
+ static commodityControllerFindAll(data) {
857
+ return request(OpenAPI, {
858
+ method: "GET",
859
+ url: "/api/v1/{region}/bean/commodities",
860
+ path: {
861
+ region: data.region
862
+ },
863
+ query: {
864
+ search: data.search,
865
+ symbol: data.symbol
866
+ }
867
+ });
868
+ }
869
+ /**
870
+ * Get commodity by symbol
871
+ * Returns a specific commodity definition by its symbol
872
+ * @param data The data for the request.
873
+ * @param data.symbol Commodity symbol
874
+ * @param data.region Region code (cn, us, de)
875
+ * @returns CommodityResponseDto Commodity retrieved successfully
876
+ * @throws ApiError
877
+ */
878
+ static commodityControllerFindOne(data) {
879
+ return request(OpenAPI, {
880
+ method: "GET",
881
+ url: "/api/v1/{region}/bean/commodities/{symbol}",
882
+ path: {
883
+ symbol: data.symbol,
884
+ region: data.region
885
+ },
886
+ errors: {
887
+ 404: "Commodity not found"
888
+ }
889
+ });
890
+ }
891
+ /**
892
+ * @param data The data for the request.
893
+ * @param data.region Region code (cn, us, de)
894
+ * @returns unknown
895
+ * @throws ApiError
896
+ */
897
+ static commodityController1(data) {
898
+ return request(OpenAPI, {
899
+ method: "PUT",
900
+ url: "/api/v1/{region}/bean/commodities/{symbol}",
901
+ path: {
902
+ region: data.region
903
+ }
904
+ });
905
+ }
906
+ /**
907
+ * @param data The data for the request.
908
+ * @param data.region Region code (cn, us, de)
909
+ * @returns void
910
+ * @throws ApiError
911
+ */
912
+ static commodityController2(data) {
913
+ return request(OpenAPI, {
914
+ method: "DELETE",
915
+ url: "/api/v1/{region}/bean/commodities/{symbol}",
916
+ path: {
917
+ region: data.region
918
+ }
919
+ });
920
+ }
921
+ /**
922
+ * @param data The data for the request.
923
+ * @param data.region Region code (cn, us, de)
924
+ * @returns unknown
925
+ * @throws ApiError
926
+ */
927
+ static commodityController3(data) {
928
+ return request(OpenAPI, {
929
+ method: "POST",
930
+ url: "/api/v1/{region}/bean/commodities/{symbol}/ensure",
931
+ path: {
932
+ region: data.region
933
+ }
934
+ });
935
+ }
936
+ /**
937
+ * @param data The data for the request.
938
+ * @param data.region Region code (cn, us, de)
939
+ * @returns unknown
940
+ * @throws ApiError
941
+ */
942
+ static commodityController4(data) {
943
+ return request(OpenAPI, {
944
+ method: "POST",
945
+ url: "/api/v1/{region}/bean/commodities/bulk",
946
+ path: {
947
+ region: data.region
948
+ }
949
+ });
950
+ }
951
+ };
952
+ var ProviderSyncService = class {
953
+ /**
954
+ * Sync transactions from financial data provider
955
+ *
956
+ * Accepts raw transactions from external financial data providers, transforms them to Beancount format, and processes them through the ingestion pipeline.
957
+ *
958
+ * **Supported Providers:**
959
+ * - **plaid**: Plaid API (US, Canada, Europe)
960
+ * - **teller**: Teller API (US)
961
+ * - **truelayer**: TrueLayer Open Banking (UK, Europe)
962
+ * - **gocardless**: GoCardless Bank Account Data (Europe)
963
+ * - **simplefin**: SimpleFIN (Self-hosted)
964
+ * - **yodlee**: Yodlee (Global)
965
+ * - **beancount-direct**: Beancount format transactions
966
+ * - **parsed-bill**: Client-side parsed bill transactions
967
+ *
968
+ * **Processing Flow:**
969
+ * 1. Transform raw data via provider adapter
970
+ * 2. Validate transaction format
971
+ * 3. Deduplicate using originalId
972
+ * 4. Classify using rule engine
973
+ * 5. Route low-confidence to Review Center
974
+ * 6. Persist validated transactions
975
+ *
976
+ * @param data The data for the request.
977
+ * @param data.providerName Provider name
978
+ * @param data.region Region code
979
+ * @param data.requestBody
980
+ * @returns ProviderSyncResponseDto Sync completed successfully
981
+ * @throws ApiError
982
+ */
983
+ static providerSyncControllerSync(data) {
984
+ return request(OpenAPI, {
985
+ method: "POST",
986
+ url: "/api/v1/{region}/bean/import/provider/{providerName}/sync",
987
+ path: {
988
+ providerName: data.providerName,
989
+ region: data.region
990
+ },
991
+ body: data.requestBody,
992
+ mediaType: "application/json",
993
+ errors: {
994
+ 400: "Invalid request data",
995
+ 401: "Missing or invalid authentication",
996
+ 404: "Provider not supported"
997
+ }
998
+ });
999
+ }
1000
+ /**
1001
+ * Get supported providers
1002
+ * Returns a list of all providers supported by the sync endpoint.
1003
+ * @param data The data for the request.
1004
+ * @param data.region Region code (cn, us, de)
1005
+ * @returns SupportedProvidersResponseDto List of supported providers
1006
+ * @throws ApiError
1007
+ */
1008
+ static providerSyncControllerGetSupportedProviders(data) {
1009
+ return request(OpenAPI, {
1010
+ method: "GET",
1011
+ url: "/api/v1/{region}/bean/import/provider/supported",
1012
+ path: {
1013
+ region: data.region
1014
+ },
1015
+ errors: {
1016
+ 401: "Missing or invalid authentication"
1017
+ }
1018
+ });
1019
+ }
1020
+ /**
1021
+ * Check if provider is supported
1022
+ * Returns whether a specific provider is supported.
1023
+ * @param data The data for the request.
1024
+ * @param data.providerName Provider name to check
1025
+ * @param data.region Region code (cn, us, de)
1026
+ * @returns unknown Provider support status
1027
+ * @throws ApiError
1028
+ */
1029
+ static providerSyncControllerIsProviderSupported(data) {
1030
+ return request(OpenAPI, {
1031
+ method: "GET",
1032
+ url: "/api/v1/{region}/bean/import/provider/{providerName}/supported",
1033
+ path: {
1034
+ providerName: data.providerName,
1035
+ region: data.region
1036
+ },
1037
+ errors: {
1038
+ 401: "Missing or invalid authentication"
1039
+ }
1040
+ });
1041
+ }
1042
+ };
1043
+ var HealthService = class {
1044
+ /**
1045
+ * Basic health check for K8s/load balancer probes
1046
+ * @param data The data for the request.
1047
+ * @param data.region Region code (cn, us, de)
1048
+ * @returns unknown Service is healthy
1049
+ * @throws ApiError
1050
+ */
1051
+ static healthControllerGetHealth(data) {
1052
+ return request(OpenAPI, {
1053
+ method: "GET",
1054
+ url: "/api/v1/health",
1055
+ path: {
1056
+ region: data.region
1057
+ },
1058
+ errors: {
1059
+ 503: "Service unavailable"
1060
+ }
1061
+ });
1062
+ }
1063
+ /**
1064
+ * Check database connection health
1065
+ * @param data The data for the request.
1066
+ * @param data.region Region code (cn, us, de)
1067
+ * @returns unknown Database is healthy
1068
+ * @throws ApiError
1069
+ */
1070
+ static healthControllerCheckDatabase(data) {
1071
+ return request(OpenAPI, {
1072
+ method: "GET",
1073
+ url: "/api/v1/health/database",
1074
+ path: {
1075
+ region: data.region
1076
+ },
1077
+ errors: {
1078
+ 503: "Database unavailable"
1079
+ }
1080
+ });
1081
+ }
1082
+ /**
1083
+ * Check Redis connection health
1084
+ * @param data The data for the request.
1085
+ * @param data.region Region code (cn, us, de)
1086
+ * @returns unknown Redis is healthy
1087
+ * @throws ApiError
1088
+ */
1089
+ static healthControllerCheckRedis(data) {
1090
+ return request(OpenAPI, {
1091
+ method: "GET",
1092
+ url: "/api/v1/health/redis",
1093
+ path: {
1094
+ region: data.region
1095
+ },
1096
+ errors: {
1097
+ 503: "Redis unavailable"
1098
+ }
1099
+ });
1100
+ }
1101
+ /**
1102
+ * Get status of all circuit breakers
1103
+ * @param data The data for the request.
1104
+ * @param data.region Region code (cn, us, de)
1105
+ * @returns unknown Circuit breaker status
1106
+ * @throws ApiError
1107
+ */
1108
+ static healthControllerGetCircuitBreakersHealth(data) {
1109
+ return request(OpenAPI, {
1110
+ method: "GET",
1111
+ url: "/api/v1/health/circuit-breakers",
1112
+ path: {
1113
+ region: data.region
1114
+ },
1115
+ errors: {
1116
+ 401: "Unauthorized",
1117
+ 500: "Internal error"
1118
+ }
1119
+ });
1120
+ }
1121
+ /**
1122
+ * Reset a circuit breaker to CLOSED state
1123
+ * @param data The data for the request.
1124
+ * @param data.name Circuit breaker name to reset
1125
+ * @param data.region Region code (cn, us, de)
1126
+ * @returns unknown Circuit breaker reset successfully
1127
+ * @throws ApiError
1128
+ */
1129
+ static healthControllerResetCircuitBreaker(data) {
1130
+ return request(OpenAPI, {
1131
+ method: "POST",
1132
+ url: "/api/v1/health/circuit-breakers/{name}/reset",
1133
+ path: {
1134
+ name: data.name,
1135
+ region: data.region
1136
+ },
1137
+ errors: {
1138
+ 401: "Unauthorized",
1139
+ 404: "Circuit breaker not found"
1140
+ }
1141
+ });
1142
+ }
1143
+ /**
1144
+ * Get health check metrics and statistics
1145
+ * @param data The data for the request.
1146
+ * @param data.region Region code (cn, us, de)
1147
+ * @returns unknown Health metrics
1148
+ * @throws ApiError
1149
+ */
1150
+ static healthControllerGetMetrics(data) {
1151
+ return request(OpenAPI, {
1152
+ method: "GET",
1153
+ url: "/api/v1/health/metrics",
1154
+ path: {
1155
+ region: data.region
1156
+ },
1157
+ errors: {
1158
+ 401: "Unauthorized"
1159
+ }
1160
+ });
1161
+ }
1162
+ /**
1163
+ * Check health of a specific data enhancer
1164
+ * @param data The data for the request.
1165
+ * @param data.name Data enhancer name
1166
+ * @param data.region Region code (cn, us, de)
1167
+ * @returns unknown Data enhancer is healthy
1168
+ * @throws ApiError
1169
+ */
1170
+ static healthControllerGetHealthOfDataEnhancer(data) {
1171
+ return request(OpenAPI, {
1172
+ method: "GET",
1173
+ url: "/api/v1/health/data-enhancer/{name}",
1174
+ path: {
1175
+ name: data.name,
1176
+ region: data.region
1177
+ },
1178
+ errors: {
1179
+ 401: "Unauthorized",
1180
+ 503: "Data enhancer unavailable"
1181
+ }
1182
+ });
1183
+ }
1184
+ /**
1185
+ * Check health of all data providers
1186
+ * @param data The data for the request.
1187
+ * @param data.region Region code (cn, us, de)
1188
+ * @returns unknown Data providers health status
1189
+ * @throws ApiError
1190
+ */
1191
+ static healthControllerCheckDataProviders(data) {
1192
+ return request(OpenAPI, {
1193
+ method: "GET",
1194
+ url: "/api/v1/health/data-providers",
1195
+ path: {
1196
+ region: data.region
1197
+ },
1198
+ errors: {
1199
+ 401: "Unauthorized",
1200
+ 503: "Data providers check failed"
1201
+ }
1202
+ });
1203
+ }
1204
+ /**
1205
+ * Check health of a specific data provider
1206
+ * @param data The data for the request.
1207
+ * @param data.dataSource Data source identifier
1208
+ * @param data.region Region code (cn, us, de)
1209
+ * @returns unknown Data provider is healthy
1210
+ * @throws ApiError
1211
+ */
1212
+ static healthControllerGetHealthOfDataProvider(data) {
1213
+ return request(OpenAPI, {
1214
+ method: "GET",
1215
+ url: "/api/v1/health/data-provider/{dataSource}",
1216
+ path: {
1217
+ dataSource: data.dataSource,
1218
+ region: data.region
1219
+ },
1220
+ errors: {
1221
+ 400: "Invalid data source",
1222
+ 401: "Unauthorized",
1223
+ 503: "Data provider unavailable"
1224
+ }
1225
+ });
1226
+ }
1227
+ };
1228
+ // Annotate the CommonJS export names for ESM import in node:
1229
+ 0 && (module.exports = {
1230
+ BeanAccountsService,
1231
+ BeanBalancesService,
1232
+ BeanCommoditiesService,
1233
+ BeanTransactionsService,
1234
+ HealthService,
1235
+ OpenAPI,
1236
+ ProviderSyncService
1237
+ });