cyberia 3.2.9 → 3.2.12
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/.github/workflows/engine-cyberia.cd.yml +6 -0
- package/.github/workflows/npmpkg.ci.yml +1 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +1 -1
- package/.github/workflows/release.cd.yml +1 -0
- package/.vscode/extensions.json +9 -9
- package/.vscode/settings.json +20 -4
- package/CHANGELOG.md +213 -1
- package/CLI-HELP.md +92 -23
- package/README.md +190 -348
- package/bin/build.js +24 -8
- package/bin/build.template.js +187 -0
- package/bin/cyberia.js +229 -52
- package/bin/deploy.js +12 -2
- package/bin/index.js +229 -52
- package/bump.config.js +26 -0
- package/conf.js +130 -24
- package/deployment.yaml +4 -2
- package/hardhat/package-lock.json +113 -144
- package/hardhat/package.json +4 -3
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +1 -1
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +1 -1
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +4 -2
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/deployment/dd-test-development/deployment.yaml +4 -2
- package/manifests/kind-config-dev.yaml +8 -0
- package/manifests/lxd/lxd-admin-profile.yaml +12 -3
- package/manifests/mongodb/pv-pvc.yaml +44 -8
- package/manifests/mongodb/statefulset.yaml +55 -68
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +3 -1
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +10 -14
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/valkey/statefulset.yaml +1 -1
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/package.json +27 -15
- package/scripts/ipxe-setup.sh +52 -49
- package/scripts/k3s-node-setup.sh +81 -46
- package/scripts/lxd-vm-setup.sh +193 -8
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +38 -33
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +16 -16
- package/src/api/core/core.router.js +19 -14
- package/src/api/core/core.service.js +5 -5
- package/src/api/crypto/crypto.router.js +18 -12
- package/src/api/crypto/crypto.service.js +3 -3
- package/src/api/cyberia-action/cyberia-action.model.js +1 -1
- package/src/api/cyberia-action/cyberia-action.router.js +22 -18
- package/src/api/cyberia-action/cyberia-action.service.js +5 -5
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +74 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +99 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +98 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +25 -20
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +6 -6
- package/src/api/cyberia-entity/cyberia-entity.router.js +22 -18
- package/src/api/cyberia-entity/cyberia-entity.service.js +5 -5
- package/src/api/cyberia-instance/cyberia-fallback-world.js +79 -4
- package/src/api/cyberia-instance/cyberia-instance.router.js +57 -52
- package/src/api/cyberia-instance/cyberia-instance.service.js +10 -10
- package/src/api/cyberia-instance/cyberia-world-generator.js +3 -3
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +14 -48
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +22 -18
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +5 -5
- package/src/api/cyberia-map/cyberia-map.router.js +35 -30
- package/src/api/cyberia-map/cyberia-map.service.js +7 -7
- package/src/api/cyberia-quest/cyberia-quest.model.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.router.js +22 -18
- package/src/api/cyberia-quest/cyberia-quest.service.js +5 -5
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +22 -18
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +5 -5
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +451 -0
- package/src/api/default/default.router.js +22 -18
- package/src/api/default/default.service.js +5 -5
- package/src/api/document/document.router.js +28 -23
- package/src/api/document/document.service.js +100 -23
- package/src/api/file/file.router.js +19 -13
- package/src/api/file/file.service.js +9 -7
- package/src/api/instance/instance.router.js +29 -24
- package/src/api/instance/instance.service.js +6 -6
- package/src/api/ipfs/ipfs.router.js +21 -16
- package/src/api/ipfs/ipfs.service.js +8 -8
- package/src/api/object-layer/object-layer.router.js +512 -507
- package/src/api/object-layer/object-layer.service.js +17 -14
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +22 -18
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +5 -5
- package/src/api/test/test.router.js +17 -12
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +5 -4
- package/src/api/user/user.router.js +297 -288
- package/src/api/user/user.service.js +100 -35
- package/src/cli/baremetal.js +132 -101
- package/src/cli/cluster.js +700 -232
- package/src/cli/db.js +59 -60
- package/src/cli/deploy.js +216 -137
- package/src/cli/fs.js +13 -3
- package/src/cli/index.js +80 -15
- package/src/cli/ipfs.js +4 -6
- package/src/cli/kubectl.js +4 -1
- package/src/cli/lxd.js +1099 -223
- package/src/cli/monitor.js +9 -3
- package/src/cli/release.js +334 -140
- package/src/cli/repository.js +68 -23
- package/src/cli/run.js +193 -49
- package/src/cli/secrets.js +11 -2
- package/src/cli/test.js +9 -3
- package/src/client/Default.index.js +9 -3
- package/src/client/components/core/Auth.js +5 -0
- package/src/client/components/core/ClientEvents.js +76 -0
- package/src/client/components/core/EventBus.js +4 -0
- package/src/client/components/core/Modal.js +82 -41
- package/src/client/components/core/PanelForm.js +56 -52
- package/src/client/components/core/Worker.js +162 -363
- package/src/client/components/cyberia/MapEngineCyberia.js +1 -1
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +330 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +50 -410
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +114 -327
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +200 -222
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +203 -185
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +2 -2
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/ssr/views/CyberiaServerMetrics.js +982 -0
- package/src/client/sw/core.sw.js +174 -112
- package/src/db/DataBaseProvider.js +115 -15
- package/src/db/mariadb/MariaDB.js +2 -1
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +129 -21
- package/src/grpc/cyberia/grpc-server.js +25 -57
- package/src/index.js +1 -1
- package/src/runtime/cyberia-client/Dockerfile +24 -3
- package/src/runtime/cyberia-client/Dockerfile.dev +82 -0
- package/src/runtime/cyberia-server/Dockerfile +29 -4
- package/src/runtime/cyberia-server/Dockerfile.dev +71 -0
- package/src/runtime/express/Express.js +2 -2
- package/src/runtime/wp/Wp.js +8 -5
- package/src/server/auth.js +2 -2
- package/src/server/client-build-docs.js +1 -1
- package/src/server/client-build.js +94 -129
- package/src/server/conf.js +86 -83
- package/src/server/process.js +180 -19
- package/src/server/proxy.js +9 -2
- package/src/server/runtime.js +1 -1
- package/src/server/start.js +17 -5
- package/src/server/valkey.js +2 -0
- package/src/ws/IoInterface.js +16 -16
- package/src/ws/core/channels/core.ws.chat.js +11 -11
- package/src/ws/core/channels/core.ws.mailer.js +29 -29
- package/src/ws/core/channels/core.ws.stream.js +19 -19
- package/src/ws/core/core.ws.connection.js +8 -8
- package/src/ws/core/core.ws.server.js +6 -5
- package/src/ws/default/channels/default.ws.main.js +10 -10
- package/src/ws/default/default.ws.connection.js +4 -4
- package/src/ws/default/default.ws.server.js +4 -3
- package/bin/file.js +0 -202
- package/bin/vs.js +0 -74
- package/bin/zed.js +0 -84
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.defaults.js +0 -574
- package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +0 -467
- package/src/client/ssr/email/DefaultRecoverEmail.js +0 -21
- package/src/client/ssr/email/DefaultVerifyEmail.js +0 -17
- package/src/client/ssr/pages/CyberiaServerMetrics.js +0 -461
- /package/src/client/ssr/{offline → views}/Maintenance.js +0 -0
- /package/src/client/ssr/{offline → views}/NoNetworkConnection.js +0 -0
- /package/src/client/ssr/{pages → views}/Test.js +0 -0
|
@@ -5,22 +5,82 @@ import { adminGuard } from '../../server/auth.js';
|
|
|
5
5
|
|
|
6
6
|
const logger = loggerFactory(import.meta);
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
class ObjectLayerRouter {
|
|
9
|
+
/**
|
|
10
|
+
* @param {import('../types.js').RouterOptions} options
|
|
11
|
+
* @returns {import('express').Router}
|
|
12
|
+
*/
|
|
13
|
+
static router(options) {
|
|
14
|
+
const router = express.Router();
|
|
15
|
+
router.post(`/frame-image/:itemType/:itemId/:directionCode`, async (req, res) => {
|
|
16
|
+
/*
|
|
17
|
+
#swagger.auto = false
|
|
18
|
+
#swagger.tags = ['object-layer']
|
|
19
|
+
#swagger.summary = 'Upload frame image'
|
|
20
|
+
#swagger.description = 'This endpoint uploads a frame image for a specific object layer item by type, item ID, and direction code'
|
|
21
|
+
#swagger.path = '/object-layer/frame-image/{itemType}/{itemId}/{directionCode}'
|
|
22
|
+
#swagger.method = 'post'
|
|
23
|
+
#swagger.consumes = ['application/octet-stream']
|
|
24
|
+
|
|
25
|
+
#swagger.parameters['itemType'] = {
|
|
26
|
+
in: 'path',
|
|
27
|
+
description: 'The type of the item (e.g. skin, weapon)',
|
|
28
|
+
required: true,
|
|
29
|
+
type: 'string'
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
#swagger.parameters['itemId'] = {
|
|
33
|
+
in: 'path',
|
|
34
|
+
description: 'The item ID',
|
|
35
|
+
required: true,
|
|
36
|
+
type: 'string'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
#swagger.parameters['directionCode'] = {
|
|
40
|
+
in: 'path',
|
|
41
|
+
description: 'The direction code for the frame (e.g. up, down, left, right)',
|
|
42
|
+
required: true,
|
|
43
|
+
type: 'string'
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
#swagger.responses[200] = {
|
|
47
|
+
description: 'Frame image uploaded successfully',
|
|
48
|
+
content: {
|
|
49
|
+
'application/json': {
|
|
50
|
+
schema: {
|
|
51
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#swagger.responses[400] = {
|
|
58
|
+
description: 'Bad request. Please check the input data',
|
|
59
|
+
content: {
|
|
60
|
+
'application/json': {
|
|
61
|
+
schema: {
|
|
62
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
*/
|
|
68
|
+
return await ObjectLayerController.post(req, res, options);
|
|
69
|
+
});
|
|
70
|
+
router.post(`/metadata/:itemType/:itemId`, async (req, res) => {
|
|
71
|
+
/*
|
|
13
72
|
#swagger.auto = false
|
|
14
73
|
#swagger.tags = ['object-layer']
|
|
15
|
-
#swagger.summary = '
|
|
16
|
-
#swagger.description = 'This endpoint
|
|
17
|
-
#swagger.path = '/object-layer/
|
|
74
|
+
#swagger.summary = 'Create object layer metadata'
|
|
75
|
+
#swagger.description = 'This endpoint creates metadata for a specific object layer item by type and item ID'
|
|
76
|
+
#swagger.path = '/object-layer/metadata/{itemType}/{itemId}'
|
|
18
77
|
#swagger.method = 'post'
|
|
19
|
-
#swagger.
|
|
78
|
+
#swagger.produces = ['application/json']
|
|
79
|
+
#swagger.consumes = ['application/json']
|
|
20
80
|
|
|
21
81
|
#swagger.parameters['itemType'] = {
|
|
22
82
|
in: 'path',
|
|
23
|
-
description: 'The type of the item
|
|
83
|
+
description: 'The type of the item',
|
|
24
84
|
required: true,
|
|
25
85
|
type: 'string'
|
|
26
86
|
}
|
|
@@ -32,15 +92,54 @@ const ObjectLayerRouter = (options) => {
|
|
|
32
92
|
type: 'string'
|
|
33
93
|
}
|
|
34
94
|
|
|
35
|
-
#swagger.
|
|
95
|
+
#swagger.responses[200] = {
|
|
96
|
+
description: 'Metadata created successfully',
|
|
97
|
+
content: {
|
|
98
|
+
'application/json': {
|
|
99
|
+
schema: {
|
|
100
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#swagger.responses[400] = {
|
|
107
|
+
description: 'Bad request. Please check the input data',
|
|
108
|
+
content: {
|
|
109
|
+
'application/json': {
|
|
110
|
+
schema: {
|
|
111
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
*/
|
|
117
|
+
return await ObjectLayerController.post(req, res, options);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
router.post(`/:id`, options.authMiddleware, async (req, res) => {
|
|
121
|
+
/*
|
|
122
|
+
#swagger.auto = false
|
|
123
|
+
#swagger.tags = ['object-layer']
|
|
124
|
+
#swagger.summary = 'Create object layer by ID'
|
|
125
|
+
#swagger.description = 'This endpoint creates a new object layer entry with a specific ID'
|
|
126
|
+
#swagger.path = '/object-layer/{id}'
|
|
127
|
+
#swagger.method = 'post'
|
|
128
|
+
#swagger.produces = ['application/json']
|
|
129
|
+
#swagger.consumes = ['application/json']
|
|
130
|
+
#swagger.security = [{
|
|
131
|
+
'bearerAuth': []
|
|
132
|
+
}]
|
|
133
|
+
|
|
134
|
+
#swagger.parameters['id'] = {
|
|
36
135
|
in: 'path',
|
|
37
|
-
description: '
|
|
136
|
+
description: 'Object layer ID',
|
|
38
137
|
required: true,
|
|
39
138
|
type: 'string'
|
|
40
139
|
}
|
|
41
140
|
|
|
42
141
|
#swagger.responses[200] = {
|
|
43
|
-
description: '
|
|
142
|
+
description: 'Object layer created successfully',
|
|
44
143
|
content: {
|
|
45
144
|
'application/json': {
|
|
46
145
|
schema: {
|
|
@@ -61,179 +160,125 @@ const ObjectLayerRouter = (options) => {
|
|
|
61
160
|
}
|
|
62
161
|
}
|
|
63
162
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
#swagger.responses[200] = {
|
|
92
|
-
description: 'Metadata created successfully',
|
|
93
|
-
content: {
|
|
94
|
-
'application/json': {
|
|
95
|
-
schema: {
|
|
96
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
#swagger.responses[400] = {
|
|
103
|
-
description: 'Bad request. Please check the input data',
|
|
104
|
-
content: {
|
|
105
|
-
'application/json': {
|
|
106
|
-
schema: {
|
|
107
|
-
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
*/
|
|
113
|
-
return await ObjectLayerController.post(req, res, options);
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
router.post(`/:id`, authMiddleware, async (req, res) => {
|
|
117
|
-
/*
|
|
118
|
-
#swagger.auto = false
|
|
119
|
-
#swagger.tags = ['object-layer']
|
|
120
|
-
#swagger.summary = 'Create object layer by ID'
|
|
121
|
-
#swagger.description = 'This endpoint creates a new object layer entry with a specific ID'
|
|
122
|
-
#swagger.path = '/object-layer/{id}'
|
|
123
|
-
#swagger.method = 'post'
|
|
124
|
-
#swagger.produces = ['application/json']
|
|
125
|
-
#swagger.consumes = ['application/json']
|
|
126
|
-
#swagger.security = [{
|
|
127
|
-
'bearerAuth': []
|
|
128
|
-
}]
|
|
129
|
-
|
|
130
|
-
#swagger.parameters['id'] = {
|
|
131
|
-
in: 'path',
|
|
132
|
-
description: 'Object layer ID',
|
|
133
|
-
required: true,
|
|
134
|
-
type: 'string'
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
#swagger.responses[200] = {
|
|
138
|
-
description: 'Object layer created successfully',
|
|
139
|
-
content: {
|
|
140
|
-
'application/json': {
|
|
141
|
-
schema: {
|
|
142
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
143
|
-
}
|
|
144
|
-
}
|
|
163
|
+
return await ObjectLayerController.post(req, res, options);
|
|
164
|
+
});
|
|
165
|
+
router.post(`/`, options.authMiddleware, async (req, res) => {
|
|
166
|
+
/*
|
|
167
|
+
#swagger.auto = false
|
|
168
|
+
#swagger.tags = ['object-layer']
|
|
169
|
+
#swagger.summary = 'Create object layer'
|
|
170
|
+
#swagger.description = 'This endpoint creates a new object layer entry'
|
|
171
|
+
#swagger.path = '/object-layer'
|
|
172
|
+
#swagger.method = 'post'
|
|
173
|
+
#swagger.produces = ['application/json']
|
|
174
|
+
#swagger.consumes = ['application/json']
|
|
175
|
+
#swagger.security = [{
|
|
176
|
+
'bearerAuth': []
|
|
177
|
+
}]
|
|
178
|
+
|
|
179
|
+
#swagger.responses[200] = {
|
|
180
|
+
description: 'Object layer created successfully',
|
|
181
|
+
content: {
|
|
182
|
+
'application/json': {
|
|
183
|
+
schema: {
|
|
184
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
145
188
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
189
|
+
|
|
190
|
+
#swagger.responses[400] = {
|
|
191
|
+
description: 'Bad request. Please check the input data',
|
|
192
|
+
content: {
|
|
193
|
+
'application/json': {
|
|
194
|
+
schema: {
|
|
195
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
156
199
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
200
|
+
*/
|
|
201
|
+
return await ObjectLayerController.post(req, res, options);
|
|
202
|
+
});
|
|
203
|
+
router.get(`/generate-webp/:itemType/:itemId/:directionCode`, async (req, res) => {
|
|
204
|
+
/*
|
|
205
|
+
#swagger.auto = false
|
|
206
|
+
#swagger.tags = ['object-layer']
|
|
207
|
+
#swagger.summary = 'Generate WebP image'
|
|
208
|
+
#swagger.description = 'This endpoint generates a WebP image for a specific object layer item by type, item ID, and direction code'
|
|
209
|
+
#swagger.path = '/object-layer/generate-webp/{itemType}/{itemId}/{directionCode}'
|
|
210
|
+
#swagger.method = 'get'
|
|
211
|
+
#swagger.produces = ['image/webp']
|
|
212
|
+
|
|
213
|
+
#swagger.parameters['itemType'] = {
|
|
214
|
+
in: 'path',
|
|
215
|
+
description: 'The type of the item',
|
|
216
|
+
required: true,
|
|
217
|
+
type: 'string'
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
#swagger.parameters['itemId'] = {
|
|
221
|
+
in: 'path',
|
|
222
|
+
description: 'The item ID',
|
|
223
|
+
required: true,
|
|
224
|
+
type: 'string'
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
#swagger.parameters['directionCode'] = {
|
|
228
|
+
in: 'path',
|
|
229
|
+
description: 'The direction code for the frame',
|
|
230
|
+
required: true,
|
|
231
|
+
type: 'string'
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
#swagger.responses[200] = {
|
|
235
|
+
description: 'WebP image generated successfully',
|
|
236
|
+
content: {
|
|
237
|
+
'image/webp': {
|
|
238
|
+
schema: {
|
|
239
|
+
type: 'string',
|
|
240
|
+
format: 'binary'
|
|
241
|
+
}
|
|
181
242
|
}
|
|
182
243
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
#swagger.responses[400] = {
|
|
247
|
+
description: 'Bad request. Please check the input data',
|
|
248
|
+
content: {
|
|
249
|
+
'application/json': {
|
|
250
|
+
schema: {
|
|
251
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
252
|
+
}
|
|
192
253
|
}
|
|
193
254
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
/*
|
|
255
|
+
}
|
|
256
|
+
*/
|
|
257
|
+
return await ObjectLayerController.generateWebp(req, res, options);
|
|
258
|
+
});
|
|
259
|
+
router.get(`/render/:id`, async (req, res) => {
|
|
260
|
+
/*
|
|
201
261
|
#swagger.auto = false
|
|
202
262
|
#swagger.tags = ['object-layer']
|
|
203
|
-
#swagger.summary = '
|
|
204
|
-
#swagger.description = 'This endpoint
|
|
205
|
-
#swagger.path = '/object-layer/
|
|
263
|
+
#swagger.summary = 'Get object layer render data'
|
|
264
|
+
#swagger.description = 'This endpoint retrieves render data for a specific object layer by ID'
|
|
265
|
+
#swagger.path = '/object-layer/render/{id}'
|
|
206
266
|
#swagger.method = 'get'
|
|
207
|
-
#swagger.produces = ['
|
|
208
|
-
|
|
209
|
-
#swagger.parameters['itemType'] = {
|
|
210
|
-
in: 'path',
|
|
211
|
-
description: 'The type of the item',
|
|
212
|
-
required: true,
|
|
213
|
-
type: 'string'
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
#swagger.parameters['itemId'] = {
|
|
217
|
-
in: 'path',
|
|
218
|
-
description: 'The item ID',
|
|
219
|
-
required: true,
|
|
220
|
-
type: 'string'
|
|
221
|
-
}
|
|
267
|
+
#swagger.produces = ['application/json']
|
|
222
268
|
|
|
223
|
-
#swagger.parameters['
|
|
269
|
+
#swagger.parameters['id'] = {
|
|
224
270
|
in: 'path',
|
|
225
|
-
description: '
|
|
271
|
+
description: 'Object layer ID',
|
|
226
272
|
required: true,
|
|
227
273
|
type: 'string'
|
|
228
274
|
}
|
|
229
275
|
|
|
230
276
|
#swagger.responses[200] = {
|
|
231
|
-
description: '
|
|
277
|
+
description: 'Object layer render data retrieved successfully',
|
|
232
278
|
content: {
|
|
233
|
-
'
|
|
279
|
+
'application/json': {
|
|
234
280
|
schema: {
|
|
235
|
-
|
|
236
|
-
format: 'binary'
|
|
281
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
237
282
|
}
|
|
238
283
|
}
|
|
239
284
|
}
|
|
@@ -250,248 +295,17 @@ const ObjectLayerRouter = (options) => {
|
|
|
250
295
|
}
|
|
251
296
|
}
|
|
252
297
|
*/
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
#swagger.auto = false
|
|
258
|
-
#swagger.tags = ['object-layer']
|
|
259
|
-
#swagger.summary = 'Get object layer render data'
|
|
260
|
-
#swagger.description = 'This endpoint retrieves render data for a specific object layer by ID'
|
|
261
|
-
#swagger.path = '/object-layer/render/{id}'
|
|
262
|
-
#swagger.method = 'get'
|
|
263
|
-
#swagger.produces = ['application/json']
|
|
264
|
-
|
|
265
|
-
#swagger.parameters['id'] = {
|
|
266
|
-
in: 'path',
|
|
267
|
-
description: 'Object layer ID',
|
|
268
|
-
required: true,
|
|
269
|
-
type: 'string'
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
#swagger.responses[200] = {
|
|
273
|
-
description: 'Object layer render data retrieved successfully',
|
|
274
|
-
content: {
|
|
275
|
-
'application/json': {
|
|
276
|
-
schema: {
|
|
277
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
#swagger.responses[400] = {
|
|
284
|
-
description: 'Bad request. Please check the input data',
|
|
285
|
-
content: {
|
|
286
|
-
'application/json': {
|
|
287
|
-
schema: {
|
|
288
|
-
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
*/
|
|
294
|
-
return await ObjectLayerController.get(req, res, options);
|
|
295
|
-
});
|
|
296
|
-
router.get(`/metadata/:id`, async (req, res) => {
|
|
297
|
-
/*
|
|
298
|
-
#swagger.auto = false
|
|
299
|
-
#swagger.tags = ['object-layer']
|
|
300
|
-
#swagger.summary = 'Get object layer metadata'
|
|
301
|
-
#swagger.description = 'This endpoint retrieves metadata for a specific object layer by ID'
|
|
302
|
-
#swagger.path = '/object-layer/metadata/{id}'
|
|
303
|
-
#swagger.method = 'get'
|
|
304
|
-
#swagger.produces = ['application/json']
|
|
305
|
-
|
|
306
|
-
#swagger.parameters['id'] = {
|
|
307
|
-
in: 'path',
|
|
308
|
-
description: 'Object layer ID',
|
|
309
|
-
required: true,
|
|
310
|
-
type: 'string'
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
#swagger.responses[200] = {
|
|
314
|
-
description: 'Object layer metadata retrieved successfully',
|
|
315
|
-
content: {
|
|
316
|
-
'application/json': {
|
|
317
|
-
schema: {
|
|
318
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
#swagger.responses[400] = {
|
|
325
|
-
description: 'Bad request. Please check the input data',
|
|
326
|
-
content: {
|
|
327
|
-
'application/json': {
|
|
328
|
-
schema: {
|
|
329
|
-
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
*/
|
|
335
|
-
return await ObjectLayerController.get(req, res, options);
|
|
336
|
-
});
|
|
337
|
-
router.get(`/search-item-ids`, async (req, res) => {
|
|
338
|
-
/*
|
|
339
|
-
#swagger.auto = false
|
|
340
|
-
#swagger.tags = ['object-layer']
|
|
341
|
-
#swagger.summary = 'Search object layer item IDs'
|
|
342
|
-
#swagger.description = 'Returns partial matches of data.item.id for type-ahead autocomplete'
|
|
343
|
-
#swagger.path = '/object-layer/search-item-ids'
|
|
344
|
-
#swagger.method = 'get'
|
|
345
|
-
#swagger.produces = ['application/json']
|
|
346
|
-
|
|
347
|
-
#swagger.parameters['q'] = {
|
|
348
|
-
in: 'query',
|
|
349
|
-
description: 'Partial item ID to search for',
|
|
350
|
-
required: false,
|
|
351
|
-
type: 'string'
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
#swagger.responses[200] = {
|
|
355
|
-
description: 'Item IDs matching the query',
|
|
356
|
-
content: {
|
|
357
|
-
'application/json': {
|
|
358
|
-
schema: {
|
|
359
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
*/
|
|
365
|
-
return await ObjectLayerController.get(req, res, options);
|
|
366
|
-
});
|
|
367
|
-
router.get(`/frame-counts/:id`, async (req, res) => {
|
|
368
|
-
/*
|
|
369
|
-
#swagger.auto = false
|
|
370
|
-
#swagger.tags = ['object-layer']
|
|
371
|
-
#swagger.summary = 'Get frame counts'
|
|
372
|
-
#swagger.description = 'This endpoint retrieves frame counts for a specific object layer by ID'
|
|
373
|
-
#swagger.path = '/object-layer/frame-counts/{id}'
|
|
374
|
-
#swagger.method = 'get'
|
|
375
|
-
#swagger.produces = ['application/json']
|
|
376
|
-
|
|
377
|
-
#swagger.parameters['id'] = {
|
|
378
|
-
in: 'path',
|
|
379
|
-
description: 'Object layer ID',
|
|
380
|
-
required: true,
|
|
381
|
-
type: 'string'
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
#swagger.responses[200] = {
|
|
385
|
-
description: 'Frame counts retrieved successfully',
|
|
386
|
-
content: {
|
|
387
|
-
'application/json': {
|
|
388
|
-
schema: {
|
|
389
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
#swagger.responses[400] = {
|
|
396
|
-
description: 'Bad request. Please check the input data',
|
|
397
|
-
content: {
|
|
398
|
-
'application/json': {
|
|
399
|
-
schema: {
|
|
400
|
-
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
*/
|
|
406
|
-
return await ObjectLayerController.get(req, res, options);
|
|
407
|
-
});
|
|
408
|
-
router.get(`/:id`, async (req, res) => {
|
|
409
|
-
/*
|
|
410
|
-
#swagger.auto = false
|
|
411
|
-
#swagger.tags = ['object-layer']
|
|
412
|
-
#swagger.summary = 'Get object layer by ID'
|
|
413
|
-
#swagger.description = 'This endpoint retrieves a specific object layer by ID'
|
|
414
|
-
#swagger.path = '/object-layer/{id}'
|
|
415
|
-
#swagger.method = 'get'
|
|
416
|
-
#swagger.produces = ['application/json']
|
|
417
|
-
|
|
418
|
-
#swagger.parameters['id'] = {
|
|
419
|
-
in: 'path',
|
|
420
|
-
description: 'Object layer ID',
|
|
421
|
-
required: true,
|
|
422
|
-
type: 'string'
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
#swagger.responses[200] = {
|
|
426
|
-
description: 'Object layer retrieved successfully',
|
|
427
|
-
content: {
|
|
428
|
-
'application/json': {
|
|
429
|
-
schema: {
|
|
430
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
#swagger.responses[400] = {
|
|
437
|
-
description: 'Bad request. Please check the input data',
|
|
438
|
-
content: {
|
|
439
|
-
'application/json': {
|
|
440
|
-
schema: {
|
|
441
|
-
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
*/
|
|
447
|
-
return await ObjectLayerController.get(req, res, options);
|
|
448
|
-
});
|
|
449
|
-
router.get(`/`, async (req, res) => {
|
|
450
|
-
/*
|
|
451
|
-
#swagger.auto = false
|
|
452
|
-
#swagger.tags = ['object-layer']
|
|
453
|
-
#swagger.summary = 'Get all object layers'
|
|
454
|
-
#swagger.description = 'This endpoint retrieves all object layers'
|
|
455
|
-
#swagger.path = '/object-layer'
|
|
456
|
-
#swagger.method = 'get'
|
|
457
|
-
#swagger.produces = ['application/json']
|
|
458
|
-
|
|
459
|
-
#swagger.responses[200] = {
|
|
460
|
-
description: 'Object layers retrieved successfully',
|
|
461
|
-
content: {
|
|
462
|
-
'application/json': {
|
|
463
|
-
schema: {
|
|
464
|
-
$ref: '#/components/schemas/objectLayerResponse'
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
#swagger.responses[400] = {
|
|
471
|
-
description: 'Bad request. Please check the input data',
|
|
472
|
-
content: {
|
|
473
|
-
'application/json': {
|
|
474
|
-
schema: {
|
|
475
|
-
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
*/
|
|
481
|
-
return await ObjectLayerController.get(req, res, options);
|
|
482
|
-
});
|
|
483
|
-
router.put(`/:id/frame-image/:itemType/:itemId/:directionCode`, authMiddleware, async (req, res) => {
|
|
484
|
-
/*
|
|
298
|
+
return await ObjectLayerController.get(req, res, options);
|
|
299
|
+
});
|
|
300
|
+
router.get(`/metadata/:id`, async (req, res) => {
|
|
301
|
+
/*
|
|
485
302
|
#swagger.auto = false
|
|
486
303
|
#swagger.tags = ['object-layer']
|
|
487
|
-
#swagger.summary = '
|
|
488
|
-
#swagger.description = 'This endpoint
|
|
489
|
-
#swagger.path = '/object-layer/{id}
|
|
490
|
-
#swagger.method = '
|
|
491
|
-
#swagger.
|
|
492
|
-
#swagger.security = [{
|
|
493
|
-
'bearerAuth': []
|
|
494
|
-
}]
|
|
304
|
+
#swagger.summary = 'Get object layer metadata'
|
|
305
|
+
#swagger.description = 'This endpoint retrieves metadata for a specific object layer by ID'
|
|
306
|
+
#swagger.path = '/object-layer/metadata/{id}'
|
|
307
|
+
#swagger.method = 'get'
|
|
308
|
+
#swagger.produces = ['application/json']
|
|
495
309
|
|
|
496
310
|
#swagger.parameters['id'] = {
|
|
497
311
|
in: 'path',
|
|
@@ -500,29 +314,79 @@ const ObjectLayerRouter = (options) => {
|
|
|
500
314
|
type: 'string'
|
|
501
315
|
}
|
|
502
316
|
|
|
503
|
-
#swagger.
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
317
|
+
#swagger.responses[200] = {
|
|
318
|
+
description: 'Object layer metadata retrieved successfully',
|
|
319
|
+
content: {
|
|
320
|
+
'application/json': {
|
|
321
|
+
schema: {
|
|
322
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
508
326
|
}
|
|
509
327
|
|
|
510
|
-
#swagger.
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
328
|
+
#swagger.responses[400] = {
|
|
329
|
+
description: 'Bad request. Please check the input data',
|
|
330
|
+
content: {
|
|
331
|
+
'application/json': {
|
|
332
|
+
schema: {
|
|
333
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
*/
|
|
339
|
+
return await ObjectLayerController.get(req, res, options);
|
|
340
|
+
});
|
|
341
|
+
router.get(`/search-item-ids`, async (req, res) => {
|
|
342
|
+
/*
|
|
343
|
+
#swagger.auto = false
|
|
344
|
+
#swagger.tags = ['object-layer']
|
|
345
|
+
#swagger.summary = 'Search object layer item IDs'
|
|
346
|
+
#swagger.description = 'Returns partial matches of data.item.id for type-ahead autocomplete'
|
|
347
|
+
#swagger.path = '/object-layer/search-item-ids'
|
|
348
|
+
#swagger.method = 'get'
|
|
349
|
+
#swagger.produces = ['application/json']
|
|
350
|
+
|
|
351
|
+
#swagger.parameters['q'] = {
|
|
352
|
+
in: 'query',
|
|
353
|
+
description: 'Partial item ID to search for',
|
|
354
|
+
required: false,
|
|
514
355
|
type: 'string'
|
|
515
356
|
}
|
|
516
357
|
|
|
517
|
-
#swagger.
|
|
358
|
+
#swagger.responses[200] = {
|
|
359
|
+
description: 'Item IDs matching the query',
|
|
360
|
+
content: {
|
|
361
|
+
'application/json': {
|
|
362
|
+
schema: {
|
|
363
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
*/
|
|
369
|
+
return await ObjectLayerController.get(req, res, options);
|
|
370
|
+
});
|
|
371
|
+
router.get(`/frame-counts/:id`, async (req, res) => {
|
|
372
|
+
/*
|
|
373
|
+
#swagger.auto = false
|
|
374
|
+
#swagger.tags = ['object-layer']
|
|
375
|
+
#swagger.summary = 'Get frame counts'
|
|
376
|
+
#swagger.description = 'This endpoint retrieves frame counts for a specific object layer by ID'
|
|
377
|
+
#swagger.path = '/object-layer/frame-counts/{id}'
|
|
378
|
+
#swagger.method = 'get'
|
|
379
|
+
#swagger.produces = ['application/json']
|
|
380
|
+
|
|
381
|
+
#swagger.parameters['id'] = {
|
|
518
382
|
in: 'path',
|
|
519
|
-
description: '
|
|
383
|
+
description: 'Object layer ID',
|
|
520
384
|
required: true,
|
|
521
385
|
type: 'string'
|
|
522
386
|
}
|
|
523
387
|
|
|
524
388
|
#swagger.responses[200] = {
|
|
525
|
-
description: 'Frame
|
|
389
|
+
description: 'Frame counts retrieved successfully',
|
|
526
390
|
content: {
|
|
527
391
|
'application/json': {
|
|
528
392
|
schema: {
|
|
@@ -543,21 +407,17 @@ const ObjectLayerRouter = (options) => {
|
|
|
543
407
|
}
|
|
544
408
|
}
|
|
545
409
|
*/
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
410
|
+
return await ObjectLayerController.get(req, res, options);
|
|
411
|
+
});
|
|
412
|
+
router.get(`/:id`, async (req, res) => {
|
|
413
|
+
/*
|
|
550
414
|
#swagger.auto = false
|
|
551
415
|
#swagger.tags = ['object-layer']
|
|
552
|
-
#swagger.summary = '
|
|
553
|
-
#swagger.description = 'This endpoint
|
|
554
|
-
#swagger.path = '/object-layer/{id}
|
|
555
|
-
#swagger.method = '
|
|
416
|
+
#swagger.summary = 'Get object layer by ID'
|
|
417
|
+
#swagger.description = 'This endpoint retrieves a specific object layer by ID'
|
|
418
|
+
#swagger.path = '/object-layer/{id}'
|
|
419
|
+
#swagger.method = 'get'
|
|
556
420
|
#swagger.produces = ['application/json']
|
|
557
|
-
#swagger.consumes = ['application/json']
|
|
558
|
-
#swagger.security = [{
|
|
559
|
-
'bearerAuth': []
|
|
560
|
-
}]
|
|
561
421
|
|
|
562
422
|
#swagger.parameters['id'] = {
|
|
563
423
|
in: 'path',
|
|
@@ -566,22 +426,42 @@ const ObjectLayerRouter = (options) => {
|
|
|
566
426
|
type: 'string'
|
|
567
427
|
}
|
|
568
428
|
|
|
569
|
-
#swagger.
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
429
|
+
#swagger.responses[200] = {
|
|
430
|
+
description: 'Object layer retrieved successfully',
|
|
431
|
+
content: {
|
|
432
|
+
'application/json': {
|
|
433
|
+
schema: {
|
|
434
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
574
438
|
}
|
|
575
439
|
|
|
576
|
-
#swagger.
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
440
|
+
#swagger.responses[400] = {
|
|
441
|
+
description: 'Bad request. Please check the input data',
|
|
442
|
+
content: {
|
|
443
|
+
'application/json': {
|
|
444
|
+
schema: {
|
|
445
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
581
449
|
}
|
|
450
|
+
*/
|
|
451
|
+
return await ObjectLayerController.get(req, res, options);
|
|
452
|
+
});
|
|
453
|
+
router.get(`/`, async (req, res) => {
|
|
454
|
+
/*
|
|
455
|
+
#swagger.auto = false
|
|
456
|
+
#swagger.tags = ['object-layer']
|
|
457
|
+
#swagger.summary = 'Get all object layers'
|
|
458
|
+
#swagger.description = 'This endpoint retrieves all object layers'
|
|
459
|
+
#swagger.path = '/object-layer'
|
|
460
|
+
#swagger.method = 'get'
|
|
461
|
+
#swagger.produces = ['application/json']
|
|
582
462
|
|
|
583
463
|
#swagger.responses[200] = {
|
|
584
|
-
description: '
|
|
464
|
+
description: 'Object layers retrieved successfully',
|
|
585
465
|
content: {
|
|
586
466
|
'application/json': {
|
|
587
467
|
schema: {
|
|
@@ -602,67 +482,140 @@ const ObjectLayerRouter = (options) => {
|
|
|
602
482
|
}
|
|
603
483
|
}
|
|
604
484
|
*/
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
485
|
+
return await ObjectLayerController.get(req, res, options);
|
|
486
|
+
});
|
|
487
|
+
router.put(`/:id/frame-image/:itemType/:itemId/:directionCode`, options.authMiddleware, async (req, res) => {
|
|
488
|
+
/*
|
|
489
|
+
#swagger.auto = false
|
|
490
|
+
#swagger.tags = ['object-layer']
|
|
491
|
+
#swagger.summary = 'Update frame image'
|
|
492
|
+
#swagger.description = 'This endpoint updates a frame image for a specific object layer item by ID, type, item ID, and direction code'
|
|
493
|
+
#swagger.path = '/object-layer/{id}/frame-image/{itemType}/{itemId}/{directionCode}'
|
|
494
|
+
#swagger.method = 'put'
|
|
495
|
+
#swagger.consumes = ['application/octet-stream']
|
|
496
|
+
#swagger.security = [{
|
|
497
|
+
'bearerAuth': []
|
|
498
|
+
}]
|
|
499
|
+
|
|
500
|
+
#swagger.parameters['id'] = {
|
|
501
|
+
in: 'path',
|
|
502
|
+
description: 'Object layer ID',
|
|
503
|
+
required: true,
|
|
504
|
+
type: 'string'
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
#swagger.parameters['itemType'] = {
|
|
508
|
+
in: 'path',
|
|
509
|
+
description: 'The type of the item',
|
|
510
|
+
required: true,
|
|
511
|
+
type: 'string'
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
#swagger.parameters['itemId'] = {
|
|
515
|
+
in: 'path',
|
|
516
|
+
description: 'The item ID',
|
|
517
|
+
required: true,
|
|
518
|
+
type: 'string'
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
#swagger.parameters['directionCode'] = {
|
|
522
|
+
in: 'path',
|
|
523
|
+
description: 'The direction code for the frame',
|
|
524
|
+
required: true,
|
|
525
|
+
type: 'string'
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
#swagger.responses[200] = {
|
|
529
|
+
description: 'Frame image updated successfully',
|
|
530
|
+
content: {
|
|
531
|
+
'application/json': {
|
|
532
|
+
schema: {
|
|
533
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
534
|
+
}
|
|
634
535
|
}
|
|
635
536
|
}
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
#swagger.responses[400] = {
|
|
540
|
+
description: 'Bad request. Please check the input data',
|
|
541
|
+
content: {
|
|
542
|
+
'application/json': {
|
|
543
|
+
schema: {
|
|
544
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
545
|
+
}
|
|
645
546
|
}
|
|
646
547
|
}
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
548
|
+
}
|
|
549
|
+
*/
|
|
550
|
+
return await ObjectLayerController.put(req, res, options);
|
|
551
|
+
});
|
|
552
|
+
router.put(`/:id/metadata/:itemType/:itemId`, options.authMiddleware, async (req, res) => {
|
|
553
|
+
/*
|
|
554
|
+
#swagger.auto = false
|
|
555
|
+
#swagger.tags = ['object-layer']
|
|
556
|
+
#swagger.summary = 'Update object layer metadata'
|
|
557
|
+
#swagger.description = 'This endpoint updates metadata for a specific object layer item by ID, type, and item ID'
|
|
558
|
+
#swagger.path = '/object-layer/{id}/metadata/{itemType}/{itemId}'
|
|
559
|
+
#swagger.method = 'put'
|
|
560
|
+
#swagger.produces = ['application/json']
|
|
561
|
+
#swagger.consumes = ['application/json']
|
|
562
|
+
#swagger.security = [{
|
|
563
|
+
'bearerAuth': []
|
|
564
|
+
}]
|
|
565
|
+
|
|
566
|
+
#swagger.parameters['id'] = {
|
|
567
|
+
in: 'path',
|
|
568
|
+
description: 'Object layer ID',
|
|
569
|
+
required: true,
|
|
570
|
+
type: 'string'
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
#swagger.parameters['itemType'] = {
|
|
574
|
+
in: 'path',
|
|
575
|
+
description: 'The type of the item',
|
|
576
|
+
required: true,
|
|
577
|
+
type: 'string'
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
#swagger.parameters['itemId'] = {
|
|
581
|
+
in: 'path',
|
|
582
|
+
description: 'The item ID',
|
|
583
|
+
required: true,
|
|
584
|
+
type: 'string'
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
#swagger.responses[200] = {
|
|
588
|
+
description: 'Metadata updated successfully',
|
|
589
|
+
content: {
|
|
590
|
+
'application/json': {
|
|
591
|
+
schema: {
|
|
592
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
#swagger.responses[400] = {
|
|
599
|
+
description: 'Bad request. Please check the input data',
|
|
600
|
+
content: {
|
|
601
|
+
'application/json': {
|
|
602
|
+
schema: {
|
|
603
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
*/
|
|
609
|
+
return await ObjectLayerController.put(req, res, options);
|
|
610
|
+
});
|
|
611
|
+
router.put(`/:id`, options.authMiddleware, async (req, res) => {
|
|
612
|
+
/*
|
|
660
613
|
#swagger.auto = false
|
|
661
614
|
#swagger.tags = ['object-layer']
|
|
662
|
-
#swagger.summary = '
|
|
663
|
-
#swagger.description = 'This endpoint
|
|
615
|
+
#swagger.summary = 'Update object layer by ID'
|
|
616
|
+
#swagger.description = 'This endpoint updates an object layer entry by ID'
|
|
664
617
|
#swagger.path = '/object-layer/{id}'
|
|
665
|
-
#swagger.method = '
|
|
618
|
+
#swagger.method = 'put'
|
|
666
619
|
#swagger.produces = ['application/json']
|
|
667
620
|
#swagger.consumes = ['application/json']
|
|
668
621
|
#swagger.security = [{
|
|
@@ -677,7 +630,7 @@ const ObjectLayerRouter = (options) => {
|
|
|
677
630
|
}
|
|
678
631
|
|
|
679
632
|
#swagger.responses[200] = {
|
|
680
|
-
description: 'Object layer
|
|
633
|
+
description: 'Object layer updated successfully',
|
|
681
634
|
content: {
|
|
682
635
|
'application/json': {
|
|
683
636
|
schema: {
|
|
@@ -698,17 +651,69 @@ const ObjectLayerRouter = (options) => {
|
|
|
698
651
|
}
|
|
699
652
|
}
|
|
700
653
|
*/
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
654
|
+
return await ObjectLayerController.put(req, res, options);
|
|
655
|
+
});
|
|
656
|
+
router.put(`/`, options.authMiddleware, async (req, res) => {
|
|
657
|
+
/*
|
|
705
658
|
#swagger.ignore = true
|
|
706
659
|
*/
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
660
|
+
return await ObjectLayerController.put(req, res, options);
|
|
661
|
+
});
|
|
662
|
+
router.delete(`/:id`, options.authMiddleware, adminGuard, async (req, res) => {
|
|
663
|
+
/*
|
|
664
|
+
#swagger.auto = false
|
|
665
|
+
#swagger.tags = ['object-layer']
|
|
666
|
+
#swagger.summary = 'Delete object layer by ID'
|
|
667
|
+
#swagger.description = 'This endpoint deletes an object layer entry by ID. Requires admin privileges'
|
|
668
|
+
#swagger.path = '/object-layer/{id}'
|
|
669
|
+
#swagger.method = 'delete'
|
|
670
|
+
#swagger.produces = ['application/json']
|
|
671
|
+
#swagger.consumes = ['application/json']
|
|
672
|
+
#swagger.security = [{
|
|
673
|
+
'bearerAuth': []
|
|
674
|
+
}]
|
|
675
|
+
|
|
676
|
+
#swagger.parameters['id'] = {
|
|
677
|
+
in: 'path',
|
|
678
|
+
description: 'Object layer ID',
|
|
679
|
+
required: true,
|
|
680
|
+
type: 'string'
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
#swagger.responses[200] = {
|
|
684
|
+
description: 'Object layer deleted successfully',
|
|
685
|
+
content: {
|
|
686
|
+
'application/json': {
|
|
687
|
+
schema: {
|
|
688
|
+
$ref: '#/components/schemas/objectLayerResponse'
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
711
693
|
|
|
712
|
-
|
|
694
|
+
#swagger.responses[400] = {
|
|
695
|
+
description: 'Bad request. Please check the input data',
|
|
696
|
+
content: {
|
|
697
|
+
'application/json': {
|
|
698
|
+
schema: {
|
|
699
|
+
$ref: '#/components/schemas/objectLayerBadRequestResponse'
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
*/
|
|
705
|
+
return await ObjectLayerController.delete(req, res, options);
|
|
706
|
+
});
|
|
707
|
+
router.delete(`/`, options.authMiddleware, adminGuard, async (req, res) => {
|
|
708
|
+
/*
|
|
709
|
+
#swagger.ignore = true
|
|
710
|
+
*/
|
|
711
|
+
return await ObjectLayerController.delete(req, res, options);
|
|
712
|
+
});
|
|
713
|
+
return router;
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
const ApiRouter = (options) => ObjectLayerRouter.router(options);
|
|
713
718
|
|
|
714
719
|
export { ApiRouter, ObjectLayerRouter };
|