@xen-orchestra/rest-api 0.19.0 → 0.20.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.
- package/dist/middlewares/authentication.middleware.mjs +3 -0
- package/dist/open-api/oa-examples/gui-routes.oa-example.mjs +4 -0
- package/dist/open-api/oa-examples/ping.oa-example.mjs +4 -0
- package/dist/open-api/routes/routes.js +61 -1
- package/dist/xoa/xoa.controller.mjs +23 -2
- package/dist/xoa/xoa.service.mjs +17 -0
- package/open-api/spec/swagger.json +107 -1
- package/package.json +3 -3
|
@@ -8,6 +8,9 @@ const log = createLogger('xo:rest-api:authentication');
|
|
|
8
8
|
// for now only support "xoa-admin"
|
|
9
9
|
// TSOA spec require this function to be async
|
|
10
10
|
export async function expressAuthentication(req, securityName) {
|
|
11
|
+
if (securityName === 'none') {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
11
14
|
const restApi = iocContainer.get(RestApi);
|
|
12
15
|
const user = restApi.getCurrentUser();
|
|
13
16
|
const authType = req.res.locals.authType;
|
|
@@ -96,6 +96,16 @@ const models = {
|
|
|
96
96
|
"type": { "dataType": "nestedObjectLiteral", "nestedProperties": { "poolsStatus": { "dataType": "nestedObjectLiteral", "nestedProperties": { "unknown": { "dataType": "double", "required": true }, "unreachable": { "dataType": "double", "required": true }, "connected": { "dataType": "double", "required": true } }, "required": true }, "resourcesOverview": { "dataType": "nestedObjectLiteral", "nestedProperties": { "srSize": { "dataType": "double", "required": true }, "memorySize": { "dataType": "double", "required": true }, "nCpus": { "dataType": "double", "required": true } }, "required": true }, "backups": { "dataType": "union", "subSchemas": [{ "ref": "DashboardBackupsInfo" }, { "ref": "PromiseWriteInStreamError" }] }, "storageRepositories": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "size": { "dataType": "nestedObjectLiteral", "nestedProperties": { "used": { "dataType": "double", "required": true }, "total": { "dataType": "double", "required": true }, "replicated": { "dataType": "double", "required": true }, "other": { "dataType": "double", "required": true }, "available": { "dataType": "double", "required": true } }, "required": true } } }, { "ref": "PromiseWriteInStreamError" }], "required": true }, "backupRepositories": { "dataType": "union", "subSchemas": [{ "ref": "DashboardBackupRepositoriesSizeInfo" }, { "ref": "PromiseWriteInStreamError" }] }, "missingPatches": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "hasAuthorization": { "dataType": "enum", "enums": [false], "required": true } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "nHostsFailed": { "dataType": "double", "required": true }, "nPoolsWithMissingPatches": { "dataType": "double", "required": true }, "nHostsWithMissingPatches": { "dataType": "double", "required": true }, "hasAuthorization": { "dataType": "enum", "enums": [true], "required": true } } }], "required": true }, "vmsStatus": { "dataType": "nestedObjectLiteral", "nestedProperties": { "total": { "dataType": "double", "required": true }, "unknown": { "dataType": "double", "required": true }, "inactive": { "dataType": "double", "required": true }, "active": { "dataType": "double", "required": true } }, "required": true }, "hostsStatus": { "dataType": "nestedObjectLiteral", "nestedProperties": { "total": { "dataType": "double", "required": true }, "unknown": { "dataType": "double", "required": true }, "halted": { "dataType": "double", "required": true }, "running": { "dataType": "double", "required": true } }, "required": true }, "nHostsEol": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "ref": "PromiseWriteInStreamError" }] }, "nHosts": { "dataType": "double", "required": true }, "nPools": { "dataType": "double", "required": true } }, "validators": {} },
|
|
97
97
|
},
|
|
98
98
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
99
|
+
"PingResponse": {
|
|
100
|
+
"dataType": "refAlias",
|
|
101
|
+
"type": { "dataType": "nestedObjectLiteral", "nestedProperties": { "timestamp": { "dataType": "double", "required": true }, "result": { "dataType": "enum", "enums": ["pong"], "required": true } }, "validators": {} },
|
|
102
|
+
},
|
|
103
|
+
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
104
|
+
"XoGuiRoutes": {
|
|
105
|
+
"dataType": "refAlias",
|
|
106
|
+
"type": { "dataType": "nestedObjectLiteral", "nestedProperties": { "xo6": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }], "required": true }, "xo5": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }], "required": true } }, "validators": {} },
|
|
107
|
+
},
|
|
108
|
+
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
99
109
|
"Record_string.string_": {
|
|
100
110
|
"dataType": "refAlias",
|
|
101
111
|
"type": { "dataType": "nestedObjectLiteral", "nestedProperties": {}, "validators": {} },
|
|
@@ -695,7 +705,7 @@ const models = {
|
|
|
695
705
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
696
706
|
"Unbrand_CreateVmBody_": {
|
|
697
707
|
"dataType": "refAlias",
|
|
698
|
-
"type": { "dataType": "nestedObjectLiteral", "nestedProperties": { "memory": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "dataType": "undefined" }] }, "name_description": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "name_label": { "dataType": "string", "required": true }, "clone": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "gpuGroup": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "vgpuType": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "autoPoweron": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "vifs": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "network": { "dataType": "string", "required": true }, "mtu": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "dataType": "undefined" }] }, "mac": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "ipv6_allowed": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "string" } }, { "dataType": "undefined" }] }, "ipv4_allowed": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "string" } }, { "dataType": "undefined" }] }, "device": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "device": { "dataType": "string", "required": true }, "destroy": { "dataType": "enum", "enums": [true], "required": true } } }] } }, { "dataType": "undefined" }] }, "copyHostBiosStrings": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "template": { "dataType": "string", "required": true }, "affinity": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "vdis": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "name_description": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "sr": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "size": { "dataType": "double", "required": true }, "name_label": { "dataType": "string", "required": true } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "name_description": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "sr": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "size": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "dataType": "undefined" }] }, "name_label": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "userdevice": { "dataType": "string", "required": true } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "userdervice": { "dataType": "string", "required": true }, "destroy": { "dataType": "enum", "enums": [true], "required": true } } }] } }, { "dataType": "undefined" }] }, "install": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "repository": { "dataType": "string", "required": true }, "method": { "dataType": "union", "subSchemas": [{ "dataType": "enum", "enums": ["network"] }, { "dataType": "enum", "enums": ["cdrom"] }], "required": true } } }, { "dataType": "undefined" }] }, "cloud_config": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "network_config": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "boot": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "destroy_cloud_config_vdi": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] } }, "validators": {} },
|
|
708
|
+
"type": { "dataType": "nestedObjectLiteral", "nestedProperties": { "memory": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "dataType": "undefined" }] }, "name_description": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "name_label": { "dataType": "string", "required": true }, "clone": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "gpuGroup": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "vgpuType": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "autoPoweron": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "vifs": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "network": { "dataType": "string", "required": true }, "mtu": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "dataType": "undefined" }] }, "mac": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "ipv6_allowed": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "string" } }, { "dataType": "undefined" }] }, "ipv4_allowed": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "string" } }, { "dataType": "undefined" }] }, "device": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "device": { "dataType": "string", "required": true }, "destroy": { "dataType": "enum", "enums": [true], "required": true } } }] } }, { "dataType": "undefined" }] }, "copyHostBiosStrings": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "hvmBootFirmware": { "dataType": "union", "subSchemas": [{ "dataType": "enum", "enums": ["uefi"] }, { "dataType": "enum", "enums": ["bios"] }, { "dataType": "undefined" }] }, "template": { "dataType": "string", "required": true }, "affinity": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "vdis": { "dataType": "union", "subSchemas": [{ "dataType": "array", "array": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "name_description": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "sr": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "size": { "dataType": "double", "required": true }, "name_label": { "dataType": "string", "required": true } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "name_description": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "sr": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "size": { "dataType": "union", "subSchemas": [{ "dataType": "double" }, { "dataType": "undefined" }] }, "name_label": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "userdevice": { "dataType": "string", "required": true } } }, { "dataType": "nestedObjectLiteral", "nestedProperties": { "userdervice": { "dataType": "string", "required": true }, "destroy": { "dataType": "enum", "enums": [true], "required": true } } }] } }, { "dataType": "undefined" }] }, "install": { "dataType": "union", "subSchemas": [{ "dataType": "nestedObjectLiteral", "nestedProperties": { "repository": { "dataType": "string", "required": true }, "method": { "dataType": "union", "subSchemas": [{ "dataType": "enum", "enums": ["network"] }, { "dataType": "enum", "enums": ["cdrom"] }], "required": true } } }, { "dataType": "undefined" }] }, "cloud_config": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "network_config": { "dataType": "union", "subSchemas": [{ "dataType": "string" }, { "dataType": "undefined" }] }, "boot": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] }, "destroy_cloud_config_vdi": { "dataType": "union", "subSchemas": [{ "dataType": "boolean" }, { "dataType": "undefined" }] } }, "validators": {} },
|
|
699
709
|
},
|
|
700
710
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
701
711
|
"XapiHostStatsRaw": {
|
|
@@ -1167,6 +1177,56 @@ export function RegisterRoutes(app) {
|
|
|
1167
1177
|
}
|
|
1168
1178
|
});
|
|
1169
1179
|
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
1180
|
+
const argsXoaController_ping = {};
|
|
1181
|
+
app.get('/rest/v0/ping', authenticateMiddleware([{ "none": [] }]), ...(fetchMiddlewares(XoaController)), ...(fetchMiddlewares(XoaController.prototype.ping)), async function XoaController_ping(request, response, next) {
|
|
1182
|
+
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
1183
|
+
let validatedArgs = [];
|
|
1184
|
+
try {
|
|
1185
|
+
validatedArgs = templateService.getValidatedArgs({ args: argsXoaController_ping, request, response });
|
|
1186
|
+
const container = typeof iocContainer === 'function' ? iocContainer(request) : iocContainer;
|
|
1187
|
+
const controller = await container.get(XoaController);
|
|
1188
|
+
if (typeof controller['setStatus'] === 'function') {
|
|
1189
|
+
controller.setStatus(undefined);
|
|
1190
|
+
}
|
|
1191
|
+
await templateService.apiHandler({
|
|
1192
|
+
methodName: 'ping',
|
|
1193
|
+
controller,
|
|
1194
|
+
response,
|
|
1195
|
+
next,
|
|
1196
|
+
validatedArgs,
|
|
1197
|
+
successStatus: undefined,
|
|
1198
|
+
});
|
|
1199
|
+
}
|
|
1200
|
+
catch (err) {
|
|
1201
|
+
return next(err);
|
|
1202
|
+
}
|
|
1203
|
+
});
|
|
1204
|
+
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
1205
|
+
const argsXoaController_getGuiRoutes = {};
|
|
1206
|
+
app.get('/rest/v0/gui-routes', authenticateMiddleware([{ "none": [] }]), ...(fetchMiddlewares(XoaController)), ...(fetchMiddlewares(XoaController.prototype.getGuiRoutes)), async function XoaController_getGuiRoutes(request, response, next) {
|
|
1207
|
+
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
1208
|
+
let validatedArgs = [];
|
|
1209
|
+
try {
|
|
1210
|
+
validatedArgs = templateService.getValidatedArgs({ args: argsXoaController_getGuiRoutes, request, response });
|
|
1211
|
+
const container = typeof iocContainer === 'function' ? iocContainer(request) : iocContainer;
|
|
1212
|
+
const controller = await container.get(XoaController);
|
|
1213
|
+
if (typeof controller['setStatus'] === 'function') {
|
|
1214
|
+
controller.setStatus(undefined);
|
|
1215
|
+
}
|
|
1216
|
+
await templateService.apiHandler({
|
|
1217
|
+
methodName: 'getGuiRoutes',
|
|
1218
|
+
controller,
|
|
1219
|
+
response,
|
|
1220
|
+
next,
|
|
1221
|
+
validatedArgs,
|
|
1222
|
+
successStatus: undefined,
|
|
1223
|
+
});
|
|
1224
|
+
}
|
|
1225
|
+
catch (err) {
|
|
1226
|
+
return next(err);
|
|
1227
|
+
}
|
|
1228
|
+
});
|
|
1229
|
+
// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa
|
|
1170
1230
|
const argsVmController_getVms = {
|
|
1171
1231
|
req: { "in": "request", "name": "req", "required": true, "dataType": "object" },
|
|
1172
1232
|
fields: { "in": "query", "name": "fields", "dataType": "string" },
|
|
@@ -11,6 +11,8 @@ import { Controller, Example, Get, Query, Request, Response, Route, Security, Ta
|
|
|
11
11
|
import { inject } from 'inversify';
|
|
12
12
|
import { PassThrough } from 'node:stream';
|
|
13
13
|
import { provide } from 'inversify-binding-decorators';
|
|
14
|
+
import { guiRoutes } from '../open-api/oa-examples/gui-routes.oa-example.mjs';
|
|
15
|
+
import { pingResponse } from '../open-api/oa-examples/ping.oa-example.mjs';
|
|
14
16
|
import { badRequestResp, unauthorizedResp } from '../open-api/common/response.common.mjs';
|
|
15
17
|
import { xoaDashboard } from '../open-api/oa-examples/xoa.oa-example.mjs';
|
|
16
18
|
import { XoaService } from './xoa.service.mjs';
|
|
@@ -37,18 +39,37 @@ let XoaController = class XoaController extends Controller {
|
|
|
37
39
|
return dashboard;
|
|
38
40
|
}
|
|
39
41
|
}
|
|
42
|
+
ping() {
|
|
43
|
+
return {
|
|
44
|
+
result: 'pong',
|
|
45
|
+
timestamp: Date.now(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
getGuiRoutes() {
|
|
49
|
+
return this.#xoaService.getGuiRoutes();
|
|
50
|
+
}
|
|
40
51
|
};
|
|
41
52
|
__decorate([
|
|
42
53
|
Example(xoaDashboard),
|
|
43
54
|
Get('dashboard'),
|
|
55
|
+
Response(badRequestResp.status, badRequestResp.description),
|
|
56
|
+
Response(unauthorizedResp.status, unauthorizedResp.description),
|
|
44
57
|
__param(0, Request()),
|
|
45
58
|
__param(1, Query())
|
|
46
59
|
], XoaController.prototype, "getDashboard", null);
|
|
60
|
+
__decorate([
|
|
61
|
+
Security('none'),
|
|
62
|
+
Example(pingResponse),
|
|
63
|
+
Get('ping')
|
|
64
|
+
], XoaController.prototype, "ping", null);
|
|
65
|
+
__decorate([
|
|
66
|
+
Security('none'),
|
|
67
|
+
Example(guiRoutes),
|
|
68
|
+
Get('gui-routes')
|
|
69
|
+
], XoaController.prototype, "getGuiRoutes", null);
|
|
47
70
|
XoaController = __decorate([
|
|
48
71
|
Route(''),
|
|
49
72
|
Security('*'),
|
|
50
|
-
Response(badRequestResp.status, badRequestResp.description),
|
|
51
|
-
Response(unauthorizedResp.status, unauthorizedResp.description),
|
|
52
73
|
Tags('xoa'),
|
|
53
74
|
provide(XoaController),
|
|
54
75
|
__param(0, inject(XoaService))
|
package/dist/xoa/xoa.service.mjs
CHANGED
|
@@ -481,4 +481,21 @@ export class XoaService {
|
|
|
481
481
|
vmsStatus,
|
|
482
482
|
};
|
|
483
483
|
}
|
|
484
|
+
getGuiRoutes() {
|
|
485
|
+
const mounts = this.#restApi.xoApp.config.getOptional('http.mounts') ?? {};
|
|
486
|
+
let xo5Mount;
|
|
487
|
+
let xo6Mount;
|
|
488
|
+
for (const [key, value] of Object.entries(mounts)) {
|
|
489
|
+
if (value.includes('xo-web/dist')) {
|
|
490
|
+
xo5Mount = key;
|
|
491
|
+
}
|
|
492
|
+
else if (value.includes('@xen-orchestra/web/dist')) {
|
|
493
|
+
xo6Mount = key;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
return {
|
|
497
|
+
xo5: xo5Mount,
|
|
498
|
+
xo6: xo6Mount,
|
|
499
|
+
};
|
|
500
|
+
}
|
|
484
501
|
}
|
|
@@ -437,6 +437,37 @@
|
|
|
437
437
|
],
|
|
438
438
|
"type": "object"
|
|
439
439
|
},
|
|
440
|
+
"PingResponse": {
|
|
441
|
+
"properties": {
|
|
442
|
+
"timestamp": {
|
|
443
|
+
"type": "number",
|
|
444
|
+
"format": "double"
|
|
445
|
+
},
|
|
446
|
+
"result": {
|
|
447
|
+
"type": "string",
|
|
448
|
+
"enum": [
|
|
449
|
+
"pong"
|
|
450
|
+
],
|
|
451
|
+
"nullable": false
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
"required": [
|
|
455
|
+
"timestamp",
|
|
456
|
+
"result"
|
|
457
|
+
],
|
|
458
|
+
"type": "object"
|
|
459
|
+
},
|
|
460
|
+
"XoGuiRoutes": {
|
|
461
|
+
"properties": {
|
|
462
|
+
"xo6": {
|
|
463
|
+
"type": "string"
|
|
464
|
+
},
|
|
465
|
+
"xo5": {
|
|
466
|
+
"type": "string"
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
"type": "object"
|
|
470
|
+
},
|
|
440
471
|
"Record_string.string_": {
|
|
441
472
|
"properties": {},
|
|
442
473
|
"type": "object",
|
|
@@ -7308,6 +7339,13 @@
|
|
|
7308
7339
|
"copyHostBiosStrings": {
|
|
7309
7340
|
"type": "boolean"
|
|
7310
7341
|
},
|
|
7342
|
+
"hvmBootFirmware": {
|
|
7343
|
+
"type": "string",
|
|
7344
|
+
"enum": [
|
|
7345
|
+
"uefi",
|
|
7346
|
+
"bios"
|
|
7347
|
+
]
|
|
7348
|
+
},
|
|
7311
7349
|
"template": {
|
|
7312
7350
|
"type": "string",
|
|
7313
7351
|
"description": "template UUID"
|
|
@@ -11443,7 +11481,7 @@
|
|
|
11443
11481
|
},
|
|
11444
11482
|
"info": {
|
|
11445
11483
|
"title": "@xen-orchestra/rest-api",
|
|
11446
|
-
"version": "0.
|
|
11484
|
+
"version": "0.20.0",
|
|
11447
11485
|
"description": "REST API to manage your XOA",
|
|
11448
11486
|
"license": {
|
|
11449
11487
|
"name": "AGPL-3.0-or-later"
|
|
@@ -11565,6 +11603,74 @@
|
|
|
11565
11603
|
]
|
|
11566
11604
|
}
|
|
11567
11605
|
},
|
|
11606
|
+
"/ping": {
|
|
11607
|
+
"get": {
|
|
11608
|
+
"operationId": "Ping",
|
|
11609
|
+
"responses": {
|
|
11610
|
+
"200": {
|
|
11611
|
+
"description": "Ok",
|
|
11612
|
+
"content": {
|
|
11613
|
+
"application/json": {
|
|
11614
|
+
"schema": {
|
|
11615
|
+
"$ref": "#/components/schemas/PingResponse"
|
|
11616
|
+
},
|
|
11617
|
+
"examples": {
|
|
11618
|
+
"Example 1": {
|
|
11619
|
+
"value": {
|
|
11620
|
+
"result": "pong",
|
|
11621
|
+
"timestamp": 1760955186850
|
|
11622
|
+
}
|
|
11623
|
+
}
|
|
11624
|
+
}
|
|
11625
|
+
}
|
|
11626
|
+
}
|
|
11627
|
+
}
|
|
11628
|
+
},
|
|
11629
|
+
"tags": [
|
|
11630
|
+
"xoa"
|
|
11631
|
+
],
|
|
11632
|
+
"security": [
|
|
11633
|
+
{
|
|
11634
|
+
"none": []
|
|
11635
|
+
}
|
|
11636
|
+
],
|
|
11637
|
+
"parameters": []
|
|
11638
|
+
}
|
|
11639
|
+
},
|
|
11640
|
+
"/gui-routes": {
|
|
11641
|
+
"get": {
|
|
11642
|
+
"operationId": "GetGuiRoutes",
|
|
11643
|
+
"responses": {
|
|
11644
|
+
"200": {
|
|
11645
|
+
"description": "Ok",
|
|
11646
|
+
"content": {
|
|
11647
|
+
"application/json": {
|
|
11648
|
+
"schema": {
|
|
11649
|
+
"$ref": "#/components/schemas/XoGuiRoutes"
|
|
11650
|
+
},
|
|
11651
|
+
"examples": {
|
|
11652
|
+
"Example 1": {
|
|
11653
|
+
"value": {
|
|
11654
|
+
"xo5": "/",
|
|
11655
|
+
"xo6": "/v6"
|
|
11656
|
+
}
|
|
11657
|
+
}
|
|
11658
|
+
}
|
|
11659
|
+
}
|
|
11660
|
+
}
|
|
11661
|
+
}
|
|
11662
|
+
},
|
|
11663
|
+
"tags": [
|
|
11664
|
+
"xoa"
|
|
11665
|
+
],
|
|
11666
|
+
"security": [
|
|
11667
|
+
{
|
|
11668
|
+
"none": []
|
|
11669
|
+
}
|
|
11670
|
+
],
|
|
11671
|
+
"parameters": []
|
|
11672
|
+
}
|
|
11673
|
+
},
|
|
11568
11674
|
"/vms": {
|
|
11569
11675
|
"get": {
|
|
11570
11676
|
"operationId": "GetVms",
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"main": "./dist/index.mjs",
|
|
7
7
|
"name": "@xen-orchestra/rest-api",
|
|
8
8
|
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/rest-api",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.20.0",
|
|
10
10
|
"description": "REST API to manage your XOA",
|
|
11
11
|
"license": "AGPL-3.0-or-later",
|
|
12
12
|
"private": false,
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@vates/async-each": "^1.0.1",
|
|
37
37
|
"@vates/task": "^0.6.1",
|
|
38
|
-
"@vates/types": "^1.
|
|
39
|
-
"@xen-orchestra/backups": "^0.
|
|
38
|
+
"@vates/types": "^1.14.0",
|
|
39
|
+
"@xen-orchestra/backups": "^0.66.0",
|
|
40
40
|
"@xen-orchestra/log": "^0.7.1",
|
|
41
41
|
"complex-matcher": "^1.0.0",
|
|
42
42
|
"golike-defer": "^0.5.1",
|