@scalar/openapi-parser 0.4.0 → 0.5.0

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 (79) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/configuration.d.ts +3907 -0
  3. package/dist/index.d.ts +29 -5877
  4. package/dist/lib/Validator/Validator.d.ts +33 -0
  5. package/dist/pipeline.d.ts +445 -0
  6. package/dist/schemas/v2.0/schema.json.js +1623 -0
  7. package/dist/schemas/v3.0/schema.json.js +1673 -0
  8. package/dist/schemas/v3.1/schema.json.js +1452 -0
  9. package/dist/src/configuration.js +22 -0
  10. package/dist/src/index.js +27 -0
  11. package/dist/src/lib/Validator/Validator.js +94 -0
  12. package/dist/src/pipeline.js +131 -0
  13. package/dist/src/polyfills/path.js +83 -0
  14. package/dist/src/utils/betterAjvErrors/helpers.js +89 -0
  15. package/dist/src/utils/betterAjvErrors/index.js +15 -0
  16. package/dist/src/utils/betterAjvErrors/utils.js +17 -0
  17. package/dist/src/utils/betterAjvErrors/validation-errors/additional-prop.js +18 -0
  18. package/dist/src/utils/betterAjvErrors/validation-errors/base.js +23 -0
  19. package/dist/src/utils/betterAjvErrors/validation-errors/default.js +18 -0
  20. package/dist/src/utils/betterAjvErrors/validation-errors/enum.js +41 -0
  21. package/dist/src/utils/betterAjvErrors/validation-errors/pattern.js +18 -0
  22. package/dist/src/utils/betterAjvErrors/validation-errors/required.js +17 -0
  23. package/dist/src/utils/betterAjvErrors/validation-errors/unevaluated-prop.js +18 -0
  24. package/dist/src/utils/dereference.js +18 -0
  25. package/dist/src/utils/details.js +22 -0
  26. package/dist/src/utils/escapeJsonPointer.js +5 -0
  27. package/dist/src/utils/filter.js +12 -0
  28. package/dist/src/utils/getEntrypoint.js +5 -0
  29. package/dist/src/utils/getListOfReferences.js +17 -0
  30. package/dist/src/utils/getSegmentsFromPath.js +10 -0
  31. package/dist/src/utils/isFilesystem.js +5 -0
  32. package/dist/src/utils/isJson.js +10 -0
  33. package/dist/src/utils/isObject.js +3 -0
  34. package/dist/src/utils/isYaml.js +16 -0
  35. package/dist/src/utils/load/load.js +46 -0
  36. package/dist/src/utils/load/plugins/fetchUrlsPlugin.js +38 -0
  37. package/dist/src/utils/load/plugins/readFilesPlugin.js +50 -0
  38. package/dist/src/utils/makeFilesystem.js +22 -0
  39. package/dist/src/utils/normalize.js +18 -0
  40. package/dist/src/utils/resolveReferences.js +106 -0
  41. package/dist/src/utils/toJson.js +3 -0
  42. package/dist/src/utils/toYaml.js +5 -0
  43. package/dist/src/utils/transformErrors.js +19 -0
  44. package/dist/src/utils/traverse.js +20 -0
  45. package/dist/src/utils/unescapeJsonPointer.js +5 -0
  46. package/dist/src/utils/upgrade.js +17 -0
  47. package/dist/src/utils/upgradeFromThreeToThreeOne.js +71 -0
  48. package/dist/src/utils/upgradeFromTwoToThree.js +5 -0
  49. package/dist/src/utils/validate.js +15 -0
  50. package/dist/types/index.d.ts +42 -0
  51. package/dist/types/openapi.d.ts +747 -0
  52. package/dist/utils/dereference.d.ts +8 -0
  53. package/dist/utils/details.d.ts +12 -0
  54. package/dist/utils/escapeJsonPointer.d.ts +8 -0
  55. package/dist/utils/filter.d.ts +8 -0
  56. package/dist/utils/getEntrypoint.d.ts +8 -0
  57. package/dist/utils/getListOfReferences.d.ts +10 -0
  58. package/dist/utils/getSegmentsFromPath.d.ts +6 -0
  59. package/dist/utils/isFilesystem.d.ts +6 -0
  60. package/dist/utils/isJson.d.ts +3 -0
  61. package/dist/utils/isObject.d.ts +6 -0
  62. package/dist/utils/isYaml.d.ts +3 -0
  63. package/dist/utils/load/load.d.ts +16 -0
  64. package/dist/utils/load/plugins/fetchUrlsPlugin.d.ts +10 -0
  65. package/dist/utils/load/plugins/readFilesPlugin.d.ts +5 -0
  66. package/dist/utils/normalize.d.ts +9 -0
  67. package/dist/utils/resolveReferences.d.ts +14 -0
  68. package/dist/utils/toJson.d.ts +5 -0
  69. package/dist/utils/toYaml.d.ts +5 -0
  70. package/dist/utils/transformErrors.d.ts +8 -0
  71. package/dist/utils/traverse.d.ts +8 -0
  72. package/dist/utils/unescapeJsonPointer.d.ts +9 -0
  73. package/dist/utils/upgrade.d.ts +8 -0
  74. package/dist/utils/upgradeFromThreeToThreeOne.d.ts +10 -0
  75. package/dist/utils/upgradeFromTwoToThree.d.ts +10 -0
  76. package/dist/utils/validate.d.ts +8 -0
  77. package/dist/webpack-stats.json +1 -1
  78. package/package.json +12 -8
  79. package/dist/index.js +0 -16818
@@ -0,0 +1,33 @@
1
+ import Ajv04 from 'ajv-draft-04';
2
+ import Ajv2020 from 'ajv/dist/2020';
3
+ import { OpenApiVersion } from '../../configuration.js';
4
+ import { AnyObject, Filesystem, ValidateResult } from '../../types/index.js';
5
+
6
+ /**
7
+ * Configure available JSON Schema versions
8
+ */
9
+ declare const jsonSchemaVersions: {
10
+ 'http://json-schema.org/draft-04/schema#': typeof Ajv04;
11
+ 'https://json-schema.org/draft/2020-12/schema': typeof Ajv2020;
12
+ };
13
+ declare class Validator {
14
+ version: string;
15
+ static supportedVersions: ("2.0" | "3.0" | "3.1")[];
16
+ protected ajvValidators: Record<string, ((specification: AnyObject) => boolean) & {
17
+ errors: string;
18
+ }>;
19
+ protected errors: string;
20
+ protected specificationVersion: string;
21
+ protected specificationType: string;
22
+ specification: AnyObject;
23
+ /**
24
+ * Checks whether a specification is valid and all references can be resolved.
25
+ */
26
+ validate(filesystem: Filesystem): Promise<ValidateResult>;
27
+ /**
28
+ * Ajv JSON schema validator
29
+ */
30
+ getAjvValidator(version: OpenApiVersion): Promise<any>;
31
+ }
32
+
33
+ export { Validator, jsonSchemaVersions };
@@ -0,0 +1,445 @@
1
+ import { AnyObject, Filesystem, ErrorObject } from './types/index.js';
2
+ import { filter } from './utils/filter.js';
3
+ import { load, LoadPlugin } from './utils/load/load.js';
4
+ import { upgrade } from './utils/upgrade.js';
5
+ import { OpenAPI } from './types/openapi.js';
6
+
7
+ /**
8
+ * A queuable action for the pipeline
9
+ */
10
+ type Action = {
11
+ action: typeof load | typeof upgrade | typeof filter;
12
+ options?: AnyObject;
13
+ };
14
+ /**
15
+ * A queue of tasks to run on an OpenAPI specification
16
+ */
17
+ type Queue = {
18
+ specification: AnyApiDefinitionFormat;
19
+ tasks: Action[];
20
+ };
21
+ /**
22
+ * JSON, YAML or object representation of an OpenAPI API definition
23
+ */
24
+ type AnyApiDefinitionFormat = string | AnyObject;
25
+ /**
26
+ * Creates a new pipeline
27
+ */
28
+ declare function openapi(): {
29
+ load: typeof loadAction;
30
+ };
31
+ /**
32
+ * Load an OpenAPI specification.
33
+ *
34
+ * Example: await openapi().load({ openapi: '3.0.0' })
35
+ */
36
+ declare function loadAction(specification: AnyApiDefinitionFormat, options?: {
37
+ plugins: LoadPlugin[];
38
+ }): {
39
+ get: () => Promise<AnyObject>;
40
+ files: () => Promise<Filesystem>;
41
+ details: () => Promise<{
42
+ version: "2.0" | "3.0" | "3.1";
43
+ specificationType: string;
44
+ specificationVersion: string;
45
+ }>;
46
+ filter: (callback: (Specification: AnyObject) => boolean) => {
47
+ get: () => Promise<AnyObject>;
48
+ files: () => Promise<Filesystem>;
49
+ details: () => Promise<{
50
+ version: "2.0" | "3.0" | "3.1";
51
+ specificationType: string;
52
+ specificationVersion: string;
53
+ }>;
54
+ filter: () => any;
55
+ upgrade: () => {
56
+ get: () => Promise<AnyObject>;
57
+ files: () => Promise<Filesystem>;
58
+ details: () => Promise<{
59
+ version: "2.0" | "3.0" | "3.1";
60
+ specificationType: string;
61
+ specificationVersion: string;
62
+ }>;
63
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
64
+ validate: () => Promise<{
65
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
66
+ get: () => Promise<AnyObject>;
67
+ files: () => Promise<Filesystem>;
68
+ details: () => Promise<{
69
+ version: "2.0" | "3.0" | "3.1";
70
+ specificationType: string;
71
+ specificationVersion: string;
72
+ }>;
73
+ dereference: () => {
74
+ get: () => Promise<AnyObject>;
75
+ files: () => Promise<Filesystem>;
76
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
77
+ toJson: () => Promise<string>;
78
+ toYaml: () => Promise<string>;
79
+ };
80
+ toJson: () => Promise<string>;
81
+ toYaml: () => Promise<string>;
82
+ valid: boolean;
83
+ specification?: OpenAPI.Document<{}>;
84
+ version?: string;
85
+ errors?: ErrorObject[];
86
+ schema?: OpenAPI.Document<{}>;
87
+ }>;
88
+ dereference: () => {
89
+ get: () => Promise<AnyObject>;
90
+ files: () => Promise<Filesystem>;
91
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
92
+ toJson: () => Promise<string>;
93
+ toYaml: () => Promise<string>;
94
+ };
95
+ toJson: () => Promise<string>;
96
+ toYaml: () => Promise<string>;
97
+ };
98
+ validate: () => Promise<{
99
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
100
+ get: () => Promise<AnyObject>;
101
+ files: () => Promise<Filesystem>;
102
+ details: () => Promise<{
103
+ version: "2.0" | "3.0" | "3.1";
104
+ specificationType: string;
105
+ specificationVersion: string;
106
+ }>;
107
+ dereference: () => {
108
+ get: () => Promise<AnyObject>;
109
+ files: () => Promise<Filesystem>;
110
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
111
+ toJson: () => Promise<string>;
112
+ toYaml: () => Promise<string>;
113
+ };
114
+ toJson: () => Promise<string>;
115
+ toYaml: () => Promise<string>;
116
+ valid: boolean;
117
+ specification?: OpenAPI.Document<{}>;
118
+ version?: string;
119
+ errors?: ErrorObject[];
120
+ schema?: OpenAPI.Document<{}>;
121
+ }>;
122
+ dereference: () => {
123
+ get: () => Promise<AnyObject>;
124
+ files: () => Promise<Filesystem>;
125
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
126
+ toJson: () => Promise<string>;
127
+ toYaml: () => Promise<string>;
128
+ };
129
+ toJson: () => Promise<string>;
130
+ toYaml: () => Promise<string>;
131
+ };
132
+ upgrade: () => {
133
+ get: () => Promise<AnyObject>;
134
+ files: () => Promise<Filesystem>;
135
+ details: () => Promise<{
136
+ version: "2.0" | "3.0" | "3.1";
137
+ specificationType: string;
138
+ specificationVersion: string;
139
+ }>;
140
+ filter: (callback: (Specification: AnyObject) => boolean) => {
141
+ get: () => Promise<AnyObject>;
142
+ files: () => Promise<Filesystem>;
143
+ details: () => Promise<{
144
+ version: "2.0" | "3.0" | "3.1";
145
+ specificationType: string;
146
+ specificationVersion: string;
147
+ }>;
148
+ filter: () => any;
149
+ upgrade: () => any;
150
+ validate: () => Promise<{
151
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
152
+ get: () => Promise<AnyObject>;
153
+ files: () => Promise<Filesystem>;
154
+ details: () => Promise<{
155
+ version: "2.0" | "3.0" | "3.1";
156
+ specificationType: string;
157
+ specificationVersion: string;
158
+ }>;
159
+ dereference: () => {
160
+ get: () => Promise<AnyObject>;
161
+ files: () => Promise<Filesystem>;
162
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
163
+ toJson: () => Promise<string>;
164
+ toYaml: () => Promise<string>;
165
+ };
166
+ toJson: () => Promise<string>;
167
+ toYaml: () => Promise<string>;
168
+ valid: boolean;
169
+ specification?: OpenAPI.Document<{}>;
170
+ version?: string;
171
+ errors?: ErrorObject[];
172
+ schema?: OpenAPI.Document<{}>;
173
+ }>;
174
+ dereference: () => {
175
+ get: () => Promise<AnyObject>;
176
+ files: () => Promise<Filesystem>;
177
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
178
+ toJson: () => Promise<string>;
179
+ toYaml: () => Promise<string>;
180
+ };
181
+ toJson: () => Promise<string>;
182
+ toYaml: () => Promise<string>;
183
+ };
184
+ validate: () => Promise<{
185
+ filter: (callback: (Specification: AnyObject) => boolean) => {
186
+ get: () => Promise<AnyObject>;
187
+ files: () => Promise<Filesystem>;
188
+ details: () => Promise<{
189
+ version: "2.0" | "3.0" | "3.1";
190
+ specificationType: string;
191
+ specificationVersion: string;
192
+ }>;
193
+ filter: () => any;
194
+ upgrade: () => any;
195
+ validate: () => Promise<any>;
196
+ dereference: () => {
197
+ get: () => Promise<AnyObject>;
198
+ files: () => Promise<Filesystem>;
199
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
200
+ toJson: () => Promise<string>;
201
+ toYaml: () => Promise<string>;
202
+ };
203
+ toJson: () => Promise<string>;
204
+ toYaml: () => Promise<string>;
205
+ };
206
+ get: () => Promise<AnyObject>;
207
+ files: () => Promise<Filesystem>;
208
+ details: () => Promise<{
209
+ version: "2.0" | "3.0" | "3.1";
210
+ specificationType: string;
211
+ specificationVersion: string;
212
+ }>;
213
+ dereference: () => {
214
+ get: () => Promise<AnyObject>;
215
+ files: () => Promise<Filesystem>;
216
+ filter: (callback: (Specification: AnyObject) => boolean) => {
217
+ get: () => Promise<AnyObject>;
218
+ files: () => Promise<Filesystem>;
219
+ details: () => Promise<{
220
+ version: "2.0" | "3.0" | "3.1";
221
+ specificationType: string;
222
+ specificationVersion: string;
223
+ }>;
224
+ filter: () => any;
225
+ upgrade: () => any;
226
+ validate: () => Promise<any>;
227
+ dereference: () => any;
228
+ toJson: () => Promise<string>;
229
+ toYaml: () => Promise<string>;
230
+ };
231
+ toJson: () => Promise<string>;
232
+ toYaml: () => Promise<string>;
233
+ };
234
+ toJson: () => Promise<string>;
235
+ toYaml: () => Promise<string>;
236
+ valid: boolean;
237
+ specification?: OpenAPI.Document<{}>;
238
+ version?: string;
239
+ errors?: ErrorObject[];
240
+ schema?: OpenAPI.Document<{}>;
241
+ }>;
242
+ dereference: () => {
243
+ get: () => Promise<AnyObject>;
244
+ files: () => Promise<Filesystem>;
245
+ filter: (callback: (Specification: AnyObject) => boolean) => {
246
+ get: () => Promise<AnyObject>;
247
+ files: () => Promise<Filesystem>;
248
+ details: () => Promise<{
249
+ version: "2.0" | "3.0" | "3.1";
250
+ specificationType: string;
251
+ specificationVersion: string;
252
+ }>;
253
+ filter: () => any;
254
+ upgrade: () => any;
255
+ validate: () => Promise<{
256
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
257
+ get: () => Promise<AnyObject>;
258
+ files: () => Promise<Filesystem>;
259
+ details: () => Promise<{
260
+ version: "2.0" | "3.0" | "3.1";
261
+ specificationType: string;
262
+ specificationVersion: string;
263
+ }>;
264
+ dereference: () => any;
265
+ toJson: () => Promise<string>;
266
+ toYaml: () => Promise<string>;
267
+ valid: boolean;
268
+ specification?: OpenAPI.Document<{}>;
269
+ version?: string;
270
+ errors?: ErrorObject[];
271
+ schema?: OpenAPI.Document<{}>;
272
+ }>;
273
+ dereference: () => any;
274
+ toJson: () => Promise<string>;
275
+ toYaml: () => Promise<string>;
276
+ };
277
+ toJson: () => Promise<string>;
278
+ toYaml: () => Promise<string>;
279
+ };
280
+ toJson: () => Promise<string>;
281
+ toYaml: () => Promise<string>;
282
+ };
283
+ validate: () => Promise<{
284
+ filter: (callback: (Specification: AnyObject) => boolean) => {
285
+ get: () => Promise<AnyObject>;
286
+ files: () => Promise<Filesystem>;
287
+ details: () => Promise<{
288
+ version: "2.0" | "3.0" | "3.1";
289
+ specificationType: string;
290
+ specificationVersion: string;
291
+ }>;
292
+ filter: () => any;
293
+ upgrade: () => {
294
+ get: () => Promise<AnyObject>;
295
+ files: () => Promise<Filesystem>;
296
+ details: () => Promise<{
297
+ version: "2.0" | "3.0" | "3.1";
298
+ specificationType: string;
299
+ specificationVersion: string;
300
+ }>;
301
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
302
+ validate: () => Promise<any>;
303
+ dereference: () => {
304
+ get: () => Promise<AnyObject>;
305
+ files: () => Promise<Filesystem>;
306
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
307
+ toJson: () => Promise<string>;
308
+ toYaml: () => Promise<string>;
309
+ };
310
+ toJson: () => Promise<string>;
311
+ toYaml: () => Promise<string>;
312
+ };
313
+ validate: () => Promise<any>;
314
+ dereference: () => {
315
+ get: () => Promise<AnyObject>;
316
+ files: () => Promise<Filesystem>;
317
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
318
+ toJson: () => Promise<string>;
319
+ toYaml: () => Promise<string>;
320
+ };
321
+ toJson: () => Promise<string>;
322
+ toYaml: () => Promise<string>;
323
+ };
324
+ get: () => Promise<AnyObject>;
325
+ files: () => Promise<Filesystem>;
326
+ details: () => Promise<{
327
+ version: "2.0" | "3.0" | "3.1";
328
+ specificationType: string;
329
+ specificationVersion: string;
330
+ }>;
331
+ dereference: () => {
332
+ get: () => Promise<AnyObject>;
333
+ files: () => Promise<Filesystem>;
334
+ filter: (callback: (Specification: AnyObject) => boolean) => {
335
+ get: () => Promise<AnyObject>;
336
+ files: () => Promise<Filesystem>;
337
+ details: () => Promise<{
338
+ version: "2.0" | "3.0" | "3.1";
339
+ specificationType: string;
340
+ specificationVersion: string;
341
+ }>;
342
+ filter: () => any;
343
+ upgrade: () => {
344
+ get: () => Promise<AnyObject>;
345
+ files: () => Promise<Filesystem>;
346
+ details: () => Promise<{
347
+ version: "2.0" | "3.0" | "3.1";
348
+ specificationType: string;
349
+ specificationVersion: string;
350
+ }>;
351
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
352
+ validate: () => Promise<any>;
353
+ dereference: () => any;
354
+ toJson: () => Promise<string>;
355
+ toYaml: () => Promise<string>;
356
+ };
357
+ validate: () => Promise<any>;
358
+ dereference: () => any;
359
+ toJson: () => Promise<string>;
360
+ toYaml: () => Promise<string>;
361
+ };
362
+ toJson: () => Promise<string>;
363
+ toYaml: () => Promise<string>;
364
+ };
365
+ toJson: () => Promise<string>;
366
+ toYaml: () => Promise<string>;
367
+ valid: boolean;
368
+ specification?: OpenAPI.Document<{}>;
369
+ version?: string;
370
+ errors?: ErrorObject[];
371
+ schema?: OpenAPI.Document<{}>;
372
+ }>;
373
+ dereference: () => {
374
+ get: () => Promise<AnyObject>;
375
+ files: () => Promise<Filesystem>;
376
+ filter: (callback: (Specification: AnyObject) => boolean) => {
377
+ get: () => Promise<AnyObject>;
378
+ files: () => Promise<Filesystem>;
379
+ details: () => Promise<{
380
+ version: "2.0" | "3.0" | "3.1";
381
+ specificationType: string;
382
+ specificationVersion: string;
383
+ }>;
384
+ filter: () => any;
385
+ upgrade: () => {
386
+ get: () => Promise<AnyObject>;
387
+ files: () => Promise<Filesystem>;
388
+ details: () => Promise<{
389
+ version: "2.0" | "3.0" | "3.1";
390
+ specificationType: string;
391
+ specificationVersion: string;
392
+ }>;
393
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
394
+ validate: () => Promise<{
395
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
396
+ get: () => Promise<AnyObject>;
397
+ files: () => Promise<Filesystem>;
398
+ details: () => Promise<{
399
+ version: "2.0" | "3.0" | "3.1";
400
+ specificationType: string;
401
+ specificationVersion: string;
402
+ }>;
403
+ dereference: () => any;
404
+ toJson: () => Promise<string>;
405
+ toYaml: () => Promise<string>;
406
+ valid: boolean;
407
+ specification?: OpenAPI.Document<{}>;
408
+ version?: string;
409
+ errors?: ErrorObject[];
410
+ schema?: OpenAPI.Document<{}>;
411
+ }>;
412
+ dereference: () => any;
413
+ toJson: () => Promise<string>;
414
+ toYaml: () => Promise<string>;
415
+ };
416
+ validate: () => Promise<{
417
+ filter: (callback: (Specification: AnyObject) => boolean) => any;
418
+ get: () => Promise<AnyObject>;
419
+ files: () => Promise<Filesystem>;
420
+ details: () => Promise<{
421
+ version: "2.0" | "3.0" | "3.1";
422
+ specificationType: string;
423
+ specificationVersion: string;
424
+ }>;
425
+ dereference: () => any;
426
+ toJson: () => Promise<string>;
427
+ toYaml: () => Promise<string>;
428
+ valid: boolean;
429
+ specification?: OpenAPI.Document<{}>;
430
+ version?: string;
431
+ errors?: ErrorObject[];
432
+ schema?: OpenAPI.Document<{}>;
433
+ }>;
434
+ dereference: () => any;
435
+ toJson: () => Promise<string>;
436
+ toYaml: () => Promise<string>;
437
+ };
438
+ toJson: () => Promise<string>;
439
+ toYaml: () => Promise<string>;
440
+ };
441
+ toJson: () => Promise<string>;
442
+ toYaml: () => Promise<string>;
443
+ };
444
+
445
+ export { type Action, type AnyApiDefinitionFormat, type Queue, openapi };