@firela/api-types 0.0.0-canary.0327ab9e
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/dist/index.d.mts +7479 -0
- package/dist/index.d.ts +7479 -0
- package/dist/index.js +1241 -0
- package/dist/index.mjs +1208 -0
- package/package.json +44 -0
- package/src/generated/core/ApiError.ts +25 -0
- package/src/generated/core/ApiRequestOptions.ts +20 -0
- package/src/generated/core/ApiResult.ts +7 -0
- package/src/generated/core/CancelablePromise.ts +126 -0
- package/src/generated/core/OpenAPI.ts +56 -0
- package/src/generated/core/request.ts +391 -0
- package/src/generated/index.ts +7 -0
- package/src/generated/schemas.gen.ts +6284 -0
- package/src/generated/services.gen.ts +3332 -0
- package/src/generated/types.gen.ts +7828 -0
- package/src/index.ts +12 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,1241 @@
|
|
|
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
|
+
400: "Validation failed",
|
|
694
|
+
401: "Authentication required"
|
|
695
|
+
}
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
/**
|
|
699
|
+
* @deprecated
|
|
700
|
+
* Batch create transactions (DEPRECATED)
|
|
701
|
+
* DEPRECATED: Use POST /:region/bean/import/provider/:name/sync instead. This endpoint skips dedup, rule matching, and review branching.
|
|
702
|
+
* @param data The data for the request.
|
|
703
|
+
* @param data.region Region code for tenant context
|
|
704
|
+
* @param data.requestBody
|
|
705
|
+
* @returns BatchTransactionResponseDto Transactions processed
|
|
706
|
+
* @throws ApiError
|
|
707
|
+
*/
|
|
708
|
+
static transactionControllerCreateBatch(data) {
|
|
709
|
+
return request(OpenAPI, {
|
|
710
|
+
method: "POST",
|
|
711
|
+
url: "/api/v1/{region}/bean/transactions/batch",
|
|
712
|
+
path: {
|
|
713
|
+
region: data.region
|
|
714
|
+
},
|
|
715
|
+
body: data.requestBody,
|
|
716
|
+
mediaType: "application/json",
|
|
717
|
+
errors: {
|
|
718
|
+
400: "Invalid input",
|
|
719
|
+
401: "Authentication required"
|
|
720
|
+
}
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
/**
|
|
724
|
+
* Suggest transaction tags
|
|
725
|
+
* Returns distinct tags from the user ACTIVE transactions, sorted by usage, for autocomplete. Optional q performs a case-insensitive prefix match.
|
|
726
|
+
* @param data The data for the request.
|
|
727
|
+
* @param data.region Region code for tenant context
|
|
728
|
+
* @param data.q Prefix match, case-insensitive (max 50 chars)
|
|
729
|
+
* @param data.sort usage (default) or name
|
|
730
|
+
* @param data.limit Max suggestions (1-100, default 10)
|
|
731
|
+
* @returns TagSuggestionsResponseDto Tag suggestions
|
|
732
|
+
* @throws ApiError
|
|
733
|
+
*/
|
|
734
|
+
static transactionControllerSuggestTags(data) {
|
|
735
|
+
return request(OpenAPI, {
|
|
736
|
+
method: "GET",
|
|
737
|
+
url: "/api/v1/{region}/bean/transactions/tags",
|
|
738
|
+
path: {
|
|
739
|
+
region: data.region
|
|
740
|
+
},
|
|
741
|
+
query: {
|
|
742
|
+
q: data.q,
|
|
743
|
+
sort: data.sort,
|
|
744
|
+
limit: data.limit
|
|
745
|
+
},
|
|
746
|
+
errors: {
|
|
747
|
+
400: "Validation failed",
|
|
748
|
+
401: "Authentication required"
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* Get transaction detail
|
|
754
|
+
* Returns transaction details including all postings
|
|
755
|
+
* @param data The data for the request.
|
|
756
|
+
* @param data.id Transaction ID
|
|
757
|
+
* @param data.region Region code for tenant context
|
|
758
|
+
* @returns TransactionDetailDto Transaction detail
|
|
759
|
+
* @throws ApiError
|
|
760
|
+
*/
|
|
761
|
+
static transactionControllerGetDetail(data) {
|
|
762
|
+
return request(OpenAPI, {
|
|
763
|
+
method: "GET",
|
|
764
|
+
url: "/api/v1/{region}/bean/transactions/{id}",
|
|
765
|
+
path: {
|
|
766
|
+
id: data.id,
|
|
767
|
+
region: data.region
|
|
768
|
+
},
|
|
769
|
+
errors: {
|
|
770
|
+
401: "Authentication required",
|
|
771
|
+
404: "Transaction not found"
|
|
772
|
+
}
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Update transaction metadata
|
|
777
|
+
* Updates transaction metadata (flag, payee, narration, tags, links, meta). Postings cannot be modified.
|
|
778
|
+
* @param data The data for the request.
|
|
779
|
+
* @param data.id Transaction ID
|
|
780
|
+
* @param data.region Region code for tenant context
|
|
781
|
+
* @param data.requestBody Fields to update (all optional)
|
|
782
|
+
* @returns TransactionDetailDto Transaction updated successfully
|
|
783
|
+
* @throws ApiError
|
|
784
|
+
*/
|
|
785
|
+
static transactionControllerUpdate(data) {
|
|
786
|
+
return request(OpenAPI, {
|
|
787
|
+
method: "PATCH",
|
|
788
|
+
url: "/api/v1/{region}/bean/transactions/{id}",
|
|
789
|
+
path: {
|
|
790
|
+
id: data.id,
|
|
791
|
+
region: data.region
|
|
792
|
+
},
|
|
793
|
+
body: data.requestBody,
|
|
794
|
+
mediaType: "application/json",
|
|
795
|
+
errors: {
|
|
796
|
+
400: "Cannot update voided transaction",
|
|
797
|
+
401: "Authentication required",
|
|
798
|
+
404: "Transaction not found"
|
|
799
|
+
}
|
|
800
|
+
});
|
|
801
|
+
}
|
|
802
|
+
/**
|
|
803
|
+
* Void transaction
|
|
804
|
+
* Soft-deletes a transaction by marking it as VOIDED
|
|
805
|
+
* @param data The data for the request.
|
|
806
|
+
* @param data.id Transaction ID
|
|
807
|
+
* @param data.region Region code for tenant context
|
|
808
|
+
* @returns void Transaction voided successfully
|
|
809
|
+
* @throws ApiError
|
|
810
|
+
*/
|
|
811
|
+
static transactionControllerDelete(data) {
|
|
812
|
+
return request(OpenAPI, {
|
|
813
|
+
method: "DELETE",
|
|
814
|
+
url: "/api/v1/{region}/bean/transactions/{id}",
|
|
815
|
+
path: {
|
|
816
|
+
id: data.id,
|
|
817
|
+
region: data.region
|
|
818
|
+
},
|
|
819
|
+
errors: {
|
|
820
|
+
400: "Transaction already voided",
|
|
821
|
+
401: "Authentication required",
|
|
822
|
+
404: "Transaction not found"
|
|
823
|
+
}
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
};
|
|
827
|
+
var BeanBalancesService = class {
|
|
828
|
+
/**
|
|
829
|
+
* Query account balance
|
|
830
|
+
* Calculate account balance at a specific date for a single currency
|
|
831
|
+
* @param data The data for the request.
|
|
832
|
+
* @param data.account Account name (e.g., "Assets:Bank:Checking")
|
|
833
|
+
* @param data.region Region code for tenant context
|
|
834
|
+
* @param data.date Date to calculate balance at (ISO 8601 format)
|
|
835
|
+
* @param data.currency Currency to query (e.g., "USD", "CNY")
|
|
836
|
+
* @returns BalanceResponseDto Balance calculated successfully
|
|
837
|
+
* @throws ApiError
|
|
838
|
+
*/
|
|
839
|
+
static balanceControllerGetBalance(data) {
|
|
840
|
+
return request(OpenAPI, {
|
|
841
|
+
method: "GET",
|
|
842
|
+
url: "/api/v1/{region}/bean/balances",
|
|
843
|
+
path: {
|
|
844
|
+
region: data.region
|
|
845
|
+
},
|
|
846
|
+
query: {
|
|
847
|
+
account: data.account,
|
|
848
|
+
date: data.date,
|
|
849
|
+
currency: data.currency
|
|
850
|
+
},
|
|
851
|
+
errors: {
|
|
852
|
+
400: "Invalid query parameters",
|
|
853
|
+
401: "User not authenticated"
|
|
854
|
+
}
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
/**
|
|
858
|
+
* Query multi-currency account balance
|
|
859
|
+
* Calculate account balances for all currencies at a specific date
|
|
860
|
+
* @param data The data for the request.
|
|
861
|
+
* @param data.region Region code for tenant context
|
|
862
|
+
* @returns MultiCurrencyBalanceResponseDto Balances calculated successfully
|
|
863
|
+
* @throws ApiError
|
|
864
|
+
*/
|
|
865
|
+
static balanceControllerGetMultiCurrencyBalance(data) {
|
|
866
|
+
return request(OpenAPI, {
|
|
867
|
+
method: "GET",
|
|
868
|
+
url: "/api/v1/{region}/bean/balances/multi-currency",
|
|
869
|
+
path: {
|
|
870
|
+
region: data.region
|
|
871
|
+
},
|
|
872
|
+
errors: {
|
|
873
|
+
400: "Invalid query parameters",
|
|
874
|
+
401: "User not authenticated"
|
|
875
|
+
}
|
|
876
|
+
});
|
|
877
|
+
}
|
|
878
|
+
};
|
|
879
|
+
var BeanCommoditiesService = class {
|
|
880
|
+
/**
|
|
881
|
+
* Create a new commodity
|
|
882
|
+
* Creates a new commodity definition for the authenticated user
|
|
883
|
+
* @param data The data for the request.
|
|
884
|
+
* @param data.region Region code for tenant context
|
|
885
|
+
* @param data.requestBody
|
|
886
|
+
* @returns CommodityResponseDto Commodity created successfully
|
|
887
|
+
* @throws ApiError
|
|
888
|
+
*/
|
|
889
|
+
static commodityControllerCreate(data) {
|
|
890
|
+
return request(OpenAPI, {
|
|
891
|
+
method: "POST",
|
|
892
|
+
url: "/api/v1/{region}/bean/commodities",
|
|
893
|
+
path: {
|
|
894
|
+
region: data.region
|
|
895
|
+
},
|
|
896
|
+
body: data.requestBody,
|
|
897
|
+
mediaType: "application/json",
|
|
898
|
+
errors: {
|
|
899
|
+
400: "Invalid input data",
|
|
900
|
+
409: "Commodity already exists"
|
|
901
|
+
}
|
|
902
|
+
});
|
|
903
|
+
}
|
|
904
|
+
/**
|
|
905
|
+
* List user commodities
|
|
906
|
+
* Returns all commodity definitions for the authenticated user with optional filtering
|
|
907
|
+
* @param data The data for the request.
|
|
908
|
+
* @param data.region Region code for tenant context
|
|
909
|
+
* @param data.search Search term for symbol or metadata fields (partial match). Searches symbol and metadata.name.
|
|
910
|
+
* @param data.symbol Filter by exact symbol match
|
|
911
|
+
* @returns CommodityListResponseDto Commodities retrieved successfully
|
|
912
|
+
* @throws ApiError
|
|
913
|
+
*/
|
|
914
|
+
static commodityControllerFindAll(data) {
|
|
915
|
+
return request(OpenAPI, {
|
|
916
|
+
method: "GET",
|
|
917
|
+
url: "/api/v1/{region}/bean/commodities",
|
|
918
|
+
path: {
|
|
919
|
+
region: data.region
|
|
920
|
+
},
|
|
921
|
+
query: {
|
|
922
|
+
search: data.search,
|
|
923
|
+
symbol: data.symbol
|
|
924
|
+
}
|
|
925
|
+
});
|
|
926
|
+
}
|
|
927
|
+
/**
|
|
928
|
+
* Get commodity by symbol
|
|
929
|
+
* Returns a specific commodity definition by its symbol
|
|
930
|
+
* @param data The data for the request.
|
|
931
|
+
* @param data.symbol Commodity symbol
|
|
932
|
+
* @param data.region Region code for tenant context
|
|
933
|
+
* @returns CommodityResponseDto Commodity retrieved successfully
|
|
934
|
+
* @throws ApiError
|
|
935
|
+
*/
|
|
936
|
+
static commodityControllerFindOne(data) {
|
|
937
|
+
return request(OpenAPI, {
|
|
938
|
+
method: "GET",
|
|
939
|
+
url: "/api/v1/{region}/bean/commodities/{symbol}",
|
|
940
|
+
path: {
|
|
941
|
+
symbol: data.symbol,
|
|
942
|
+
region: data.region
|
|
943
|
+
},
|
|
944
|
+
errors: {
|
|
945
|
+
404: "Commodity not found"
|
|
946
|
+
}
|
|
947
|
+
});
|
|
948
|
+
}
|
|
949
|
+
/**
|
|
950
|
+
* Update commodity
|
|
951
|
+
* Updates an existing commodity definition. Symbol cannot be changed.
|
|
952
|
+
* @param data The data for the request.
|
|
953
|
+
* @param data.symbol Commodity symbol
|
|
954
|
+
* @param data.region Region code for tenant context
|
|
955
|
+
* @param data.requestBody
|
|
956
|
+
* @returns CommodityResponseDto Commodity updated successfully
|
|
957
|
+
* @throws ApiError
|
|
958
|
+
*/
|
|
959
|
+
static commodityControllerUpdate(data) {
|
|
960
|
+
return request(OpenAPI, {
|
|
961
|
+
method: "PUT",
|
|
962
|
+
url: "/api/v1/{region}/bean/commodities/{symbol}",
|
|
963
|
+
path: {
|
|
964
|
+
symbol: data.symbol,
|
|
965
|
+
region: data.region
|
|
966
|
+
},
|
|
967
|
+
body: data.requestBody,
|
|
968
|
+
mediaType: "application/json",
|
|
969
|
+
errors: {
|
|
970
|
+
400: "Invalid input data",
|
|
971
|
+
404: "Commodity not found"
|
|
972
|
+
}
|
|
973
|
+
});
|
|
974
|
+
}
|
|
975
|
+
/**
|
|
976
|
+
* Delete commodity
|
|
977
|
+
* Deletes a commodity definition
|
|
978
|
+
* @param data The data for the request.
|
|
979
|
+
* @param data.symbol Commodity symbol
|
|
980
|
+
* @param data.region Region code for tenant context
|
|
981
|
+
* @returns void Commodity deleted successfully
|
|
982
|
+
* @throws ApiError
|
|
983
|
+
*/
|
|
984
|
+
static commodityControllerDelete(data) {
|
|
985
|
+
return request(OpenAPI, {
|
|
986
|
+
method: "DELETE",
|
|
987
|
+
url: "/api/v1/{region}/bean/commodities/{symbol}",
|
|
988
|
+
path: {
|
|
989
|
+
symbol: data.symbol,
|
|
990
|
+
region: data.region
|
|
991
|
+
},
|
|
992
|
+
errors: {
|
|
993
|
+
404: "Commodity not found"
|
|
994
|
+
}
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
/**
|
|
998
|
+
* Ensure commodity exists
|
|
999
|
+
* Gets existing commodity or creates it with automatic initialization from OpenBB
|
|
1000
|
+
* @param data The data for the request.
|
|
1001
|
+
* @param data.symbol Commodity symbol
|
|
1002
|
+
* @param data.region Region code for tenant context
|
|
1003
|
+
* @returns CommodityResponseDto Commodity retrieved or created
|
|
1004
|
+
* @throws ApiError
|
|
1005
|
+
*/
|
|
1006
|
+
static commodityControllerGetOrCreate(data) {
|
|
1007
|
+
return request(OpenAPI, {
|
|
1008
|
+
method: "POST",
|
|
1009
|
+
url: "/api/v1/{region}/bean/commodities/{symbol}/ensure",
|
|
1010
|
+
path: {
|
|
1011
|
+
symbol: data.symbol,
|
|
1012
|
+
region: data.region
|
|
1013
|
+
}
|
|
1014
|
+
});
|
|
1015
|
+
}
|
|
1016
|
+
/**
|
|
1017
|
+
* Bulk create commodities
|
|
1018
|
+
* Creates multiple commodities from a list of symbols, useful for initialization
|
|
1019
|
+
* @param data The data for the request.
|
|
1020
|
+
* @param data.region Region code for tenant context
|
|
1021
|
+
* @returns CommodityResponseDto Commodities created successfully
|
|
1022
|
+
* @throws ApiError
|
|
1023
|
+
*/
|
|
1024
|
+
static commodityControllerBulkCreate(data) {
|
|
1025
|
+
return request(OpenAPI, {
|
|
1026
|
+
method: "POST",
|
|
1027
|
+
url: "/api/v1/{region}/bean/commodities/bulk",
|
|
1028
|
+
path: {
|
|
1029
|
+
region: data.region
|
|
1030
|
+
}
|
|
1031
|
+
});
|
|
1032
|
+
}
|
|
1033
|
+
};
|
|
1034
|
+
var ProviderSyncService = class {
|
|
1035
|
+
/**
|
|
1036
|
+
* Sync transactions from financial data provider
|
|
1037
|
+
*
|
|
1038
|
+
* Accepts raw transactions from external financial data providers, transforms them to Beancount format, and processes them through the ingestion pipeline.
|
|
1039
|
+
*
|
|
1040
|
+
* **Supported Providers:**
|
|
1041
|
+
* - **plaid**: Plaid API (US, Canada, Europe)
|
|
1042
|
+
* - **teller**: Teller API (US)
|
|
1043
|
+
* - **truelayer**: TrueLayer Open Banking (UK, Europe)
|
|
1044
|
+
* - **gocardless**: GoCardless Bank Account Data (Europe)
|
|
1045
|
+
* - **simplefin**: SimpleFIN (Self-hosted)
|
|
1046
|
+
* - **yodlee**: Yodlee (Global)
|
|
1047
|
+
* - **beancount-direct**: Beancount format transactions
|
|
1048
|
+
* - **parsed-bill**: Client-side parsed bill transactions
|
|
1049
|
+
*
|
|
1050
|
+
* **Processing Flow:**
|
|
1051
|
+
* 1. Transform raw data via provider adapter
|
|
1052
|
+
* 2. Validate transaction format
|
|
1053
|
+
* 3. Deduplicate using originalId
|
|
1054
|
+
* 4. Classify using rule engine
|
|
1055
|
+
* 5. Route low-confidence to Review Center
|
|
1056
|
+
* 6. Persist validated transactions
|
|
1057
|
+
*
|
|
1058
|
+
* @param data The data for the request.
|
|
1059
|
+
* @param data.providerName Provider name
|
|
1060
|
+
* @param data.region Region code
|
|
1061
|
+
* @param data.requestBody
|
|
1062
|
+
* @returns ProviderSyncResponseDto Sync completed successfully
|
|
1063
|
+
* @throws ApiError
|
|
1064
|
+
*/
|
|
1065
|
+
static providerSyncControllerSync(data) {
|
|
1066
|
+
return request(OpenAPI, {
|
|
1067
|
+
method: "POST",
|
|
1068
|
+
url: "/api/v1/{region}/bean/import/provider/{providerName}/sync",
|
|
1069
|
+
path: {
|
|
1070
|
+
providerName: data.providerName,
|
|
1071
|
+
region: data.region
|
|
1072
|
+
},
|
|
1073
|
+
body: data.requestBody,
|
|
1074
|
+
mediaType: "application/json",
|
|
1075
|
+
errors: {
|
|
1076
|
+
400: "Invalid request data",
|
|
1077
|
+
401: "Missing or invalid authentication",
|
|
1078
|
+
404: "Provider not supported"
|
|
1079
|
+
}
|
|
1080
|
+
});
|
|
1081
|
+
}
|
|
1082
|
+
/**
|
|
1083
|
+
* Get supported providers
|
|
1084
|
+
* Returns a list of all providers supported by the sync endpoint.
|
|
1085
|
+
* @param data The data for the request.
|
|
1086
|
+
* @param data.region Region code for tenant context
|
|
1087
|
+
* @returns SupportedProvidersResponseDto List of supported providers
|
|
1088
|
+
* @throws ApiError
|
|
1089
|
+
*/
|
|
1090
|
+
static providerSyncControllerGetSupportedProviders(data) {
|
|
1091
|
+
return request(OpenAPI, {
|
|
1092
|
+
method: "GET",
|
|
1093
|
+
url: "/api/v1/{region}/bean/import/provider/supported",
|
|
1094
|
+
path: {
|
|
1095
|
+
region: data.region
|
|
1096
|
+
},
|
|
1097
|
+
errors: {
|
|
1098
|
+
401: "Missing or invalid authentication"
|
|
1099
|
+
}
|
|
1100
|
+
});
|
|
1101
|
+
}
|
|
1102
|
+
/**
|
|
1103
|
+
* Check if provider is supported
|
|
1104
|
+
* Returns whether a specific provider is supported.
|
|
1105
|
+
* @param data The data for the request.
|
|
1106
|
+
* @param data.providerName Provider name to check
|
|
1107
|
+
* @param data.region Region code for tenant context
|
|
1108
|
+
* @returns unknown Provider support status
|
|
1109
|
+
* @throws ApiError
|
|
1110
|
+
*/
|
|
1111
|
+
static providerSyncControllerIsProviderSupported(data) {
|
|
1112
|
+
return request(OpenAPI, {
|
|
1113
|
+
method: "GET",
|
|
1114
|
+
url: "/api/v1/{region}/bean/import/provider/{providerName}/supported",
|
|
1115
|
+
path: {
|
|
1116
|
+
providerName: data.providerName,
|
|
1117
|
+
region: data.region
|
|
1118
|
+
},
|
|
1119
|
+
errors: {
|
|
1120
|
+
401: "Missing or invalid authentication"
|
|
1121
|
+
}
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1124
|
+
};
|
|
1125
|
+
var HealthService = class {
|
|
1126
|
+
/**
|
|
1127
|
+
* Basic health check for K8s/load balancer probes
|
|
1128
|
+
* @returns unknown Service is healthy
|
|
1129
|
+
* @throws ApiError
|
|
1130
|
+
*/
|
|
1131
|
+
static healthControllerGetHealth() {
|
|
1132
|
+
return request(OpenAPI, {
|
|
1133
|
+
method: "GET",
|
|
1134
|
+
url: "/api/v1/health",
|
|
1135
|
+
errors: {
|
|
1136
|
+
503: "Service unavailable"
|
|
1137
|
+
}
|
|
1138
|
+
});
|
|
1139
|
+
}
|
|
1140
|
+
/**
|
|
1141
|
+
* Check database connection health
|
|
1142
|
+
* @returns unknown Database is healthy
|
|
1143
|
+
* @throws ApiError
|
|
1144
|
+
*/
|
|
1145
|
+
static healthControllerCheckDatabase() {
|
|
1146
|
+
return request(OpenAPI, {
|
|
1147
|
+
method: "GET",
|
|
1148
|
+
url: "/api/v1/health/database",
|
|
1149
|
+
errors: {
|
|
1150
|
+
503: "Database unavailable"
|
|
1151
|
+
}
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
/**
|
|
1155
|
+
* Check OpenBB schema status
|
|
1156
|
+
* @returns unknown OpenBB status
|
|
1157
|
+
* @throws ApiError
|
|
1158
|
+
*/
|
|
1159
|
+
static healthControllerCheckOpenBb() {
|
|
1160
|
+
return request(OpenAPI, {
|
|
1161
|
+
method: "GET",
|
|
1162
|
+
url: "/api/v1/health/openbb",
|
|
1163
|
+
errors: {
|
|
1164
|
+
503: "OpenBB unavailable"
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
}
|
|
1168
|
+
/**
|
|
1169
|
+
* Check Redis connection health
|
|
1170
|
+
* @returns unknown Redis is healthy
|
|
1171
|
+
* @throws ApiError
|
|
1172
|
+
*/
|
|
1173
|
+
static healthControllerCheckRedis() {
|
|
1174
|
+
return request(OpenAPI, {
|
|
1175
|
+
method: "GET",
|
|
1176
|
+
url: "/api/v1/health/redis",
|
|
1177
|
+
errors: {
|
|
1178
|
+
503: "Redis unavailable"
|
|
1179
|
+
}
|
|
1180
|
+
});
|
|
1181
|
+
}
|
|
1182
|
+
/**
|
|
1183
|
+
* Get status of all circuit breakers
|
|
1184
|
+
* @returns unknown Circuit breaker status
|
|
1185
|
+
* @throws ApiError
|
|
1186
|
+
*/
|
|
1187
|
+
static healthControllerGetCircuitBreakersHealth() {
|
|
1188
|
+
return request(OpenAPI, {
|
|
1189
|
+
method: "GET",
|
|
1190
|
+
url: "/api/v1/health/circuit-breakers",
|
|
1191
|
+
errors: {
|
|
1192
|
+
401: "Unauthorized",
|
|
1193
|
+
500: "Internal error"
|
|
1194
|
+
}
|
|
1195
|
+
});
|
|
1196
|
+
}
|
|
1197
|
+
/**
|
|
1198
|
+
* Reset a circuit breaker to CLOSED state
|
|
1199
|
+
* @param data The data for the request.
|
|
1200
|
+
* @param data.name Circuit breaker name to reset
|
|
1201
|
+
* @returns unknown Circuit breaker reset successfully
|
|
1202
|
+
* @throws ApiError
|
|
1203
|
+
*/
|
|
1204
|
+
static healthControllerResetCircuitBreaker(data) {
|
|
1205
|
+
return request(OpenAPI, {
|
|
1206
|
+
method: "POST",
|
|
1207
|
+
url: "/api/v1/health/circuit-breakers/{name}/reset",
|
|
1208
|
+
path: {
|
|
1209
|
+
name: data.name
|
|
1210
|
+
},
|
|
1211
|
+
errors: {
|
|
1212
|
+
401: "Unauthorized",
|
|
1213
|
+
404: "Circuit breaker not found"
|
|
1214
|
+
}
|
|
1215
|
+
});
|
|
1216
|
+
}
|
|
1217
|
+
/**
|
|
1218
|
+
* Get health check metrics and statistics
|
|
1219
|
+
* @returns unknown Health metrics
|
|
1220
|
+
* @throws ApiError
|
|
1221
|
+
*/
|
|
1222
|
+
static healthControllerGetMetrics() {
|
|
1223
|
+
return request(OpenAPI, {
|
|
1224
|
+
method: "GET",
|
|
1225
|
+
url: "/api/v1/health/metrics",
|
|
1226
|
+
errors: {
|
|
1227
|
+
401: "Unauthorized"
|
|
1228
|
+
}
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1231
|
+
};
|
|
1232
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1233
|
+
0 && (module.exports = {
|
|
1234
|
+
BeanAccountsService,
|
|
1235
|
+
BeanBalancesService,
|
|
1236
|
+
BeanCommoditiesService,
|
|
1237
|
+
BeanTransactionsService,
|
|
1238
|
+
HealthService,
|
|
1239
|
+
OpenAPI,
|
|
1240
|
+
ProviderSyncService
|
|
1241
|
+
});
|