@golemio/fypr 1.1.1-dev.2368450356 → 1.1.1-dev.2387575538
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/db/example/01_display_cases.sql +4 -4
- package/db/example/02_information_panels.sql +4 -4
- package/db/example/03_obelisks.sql +4 -4
- package/db/example/05_totems.sql +1 -1
- package/db/migrations/postgresql/20260312000000-schema-updates.js +53 -0
- package/db/migrations/postgresql/20260316093713-add-source-created-at-index.js +53 -0
- package/db/migrations/postgresql/sqls/20260312000000-schema-updates-down.sql +14 -0
- package/db/migrations/postgresql/sqls/20260312000000-schema-updates-up.sql +14 -0
- package/db/migrations/postgresql/sqls/20260316093713-add-source-created-at-index-down.sql +6 -0
- package/db/migrations/postgresql/sqls/20260316093713-add-source-created-at-index-up.sql +17 -0
- package/dist/integration-engine/transformations/AbstractElementTransformation.js +1 -0
- package/dist/integration-engine/transformations/AbstractElementTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/InformationPanelsTransformation.js +7 -0
- package/dist/integration-engine/transformations/InformationPanelsTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/TotemsTransformation.js +2 -1
- package/dist/integration-engine/transformations/TotemsTransformation.js.map +1 -1
- package/dist/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.d.ts +13 -0
- package/dist/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.js +67 -0
- package/dist/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.js.map +1 -0
- package/dist/output-gateway/fypr/data-access/FyprElementRepository.d.ts +18 -0
- package/dist/output-gateway/fypr/data-access/FyprElementRepository.js +46 -0
- package/dist/output-gateway/fypr/data-access/FyprElementRepository.js.map +1 -0
- package/dist/output-gateway/fypr/routers/index.d.ts +1 -0
- package/dist/output-gateway/fypr/routers/index.js +6 -0
- package/dist/output-gateway/fypr/routers/index.js.map +1 -0
- package/dist/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.d.ts +10 -0
- package/dist/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.js +44 -0
- package/dist/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.js.map +1 -0
- package/dist/output-gateway/index.js +2 -3
- package/dist/output-gateway/index.js.map +1 -1
- package/dist/output-gateway/ioc/Di.d.ts +2 -0
- package/dist/output-gateway/ioc/Di.js +26 -0
- package/dist/output-gateway/ioc/Di.js.map +1 -0
- package/dist/output-gateway/ioc/FYPROGContainerTokens.d.ts +4 -0
- package/dist/output-gateway/ioc/FYPROGContainerTokens.js +12 -0
- package/dist/output-gateway/ioc/FYPROGContainerTokens.js.map +1 -0
- package/dist/output-gateway/shared/constants/element-kinds.d.ts +1 -0
- package/dist/output-gateway/shared/constants/element-kinds.js +6 -0
- package/dist/output-gateway/shared/constants/element-kinds.js.map +1 -0
- package/dist/output-gateway/shared/constants/index.d.ts +1 -0
- package/dist/output-gateway/shared/constants/index.js +18 -0
- package/dist/output-gateway/shared/constants/index.js.map +1 -0
- package/dist/schema-definitions/FyprElementTypes.d.ts +6 -0
- package/dist/schema-definitions/FyprElementTypes.js +3 -0
- package/dist/schema-definitions/FyprElementTypes.js.map +1 -0
- package/dist/schema-definitions/const.d.ts +44 -0
- package/dist/schema-definitions/const.js +17 -1
- package/dist/schema-definitions/const.js.map +1 -1
- package/dist/schema-definitions/data-sources/DBFYPRDisplayCasesJSONSchema.js +22 -71
- package/dist/schema-definitions/data-sources/DBFYPRDisplayCasesJSONSchema.js.map +1 -1
- package/dist/schema-definitions/data-sources/DBFYPRElementsJSONSchema.js +15 -45
- package/dist/schema-definitions/data-sources/DBFYPRElementsJSONSchema.js.map +1 -1
- package/dist/schema-definitions/data-sources/DBFYPRInformationPanelsJSONSchema.js +85 -281
- package/dist/schema-definitions/data-sources/DBFYPRInformationPanelsJSONSchema.js.map +1 -1
- package/dist/schema-definitions/data-sources/DBFYPRObelisksJSONSchema.js +17 -53
- package/dist/schema-definitions/data-sources/DBFYPRObelisksJSONSchema.js.map +1 -1
- package/dist/schema-definitions/data-sources/DBFYPRSignpostsJSONSchema.js +19 -59
- package/dist/schema-definitions/data-sources/DBFYPRSignpostsJSONSchema.js.map +1 -1
- package/dist/schema-definitions/data-sources/DBFYPRTotemsJSONSchema.js +59 -203
- package/dist/schema-definitions/data-sources/DBFYPRTotemsJSONSchema.js.map +1 -1
- package/dist/schema-definitions/data-sources/interfaces/IDBFYPRInformationPanel.d.ts +7 -0
- package/dist/schema-definitions/data-sources/interfaces/IDBFYPRTotem.d.ts +3 -1
- package/dist/schema-definitions/index.d.ts +34 -2
- package/dist/schema-definitions/index.js +34 -1
- package/dist/schema-definitions/index.js.map +1 -1
- package/dist/schema-definitions/models/AbstractElementModel.d.ts +9 -0
- package/dist/schema-definitions/models/AbstractElementModel.js +15 -35
- package/dist/schema-definitions/models/AbstractElementModel.js.map +1 -1
- package/dist/schema-definitions/models/DisplayCaseModel.js +20 -60
- package/dist/schema-definitions/models/DisplayCaseModel.js.map +1 -1
- package/dist/schema-definitions/models/InformationPanelModel.d.ts +7 -0
- package/dist/schema-definitions/models/InformationPanelModel.js +90 -261
- package/dist/schema-definitions/models/InformationPanelModel.js.map +1 -1
- package/dist/schema-definitions/models/ObeliskModel.js +15 -42
- package/dist/schema-definitions/models/ObeliskModel.js.map +1 -1
- package/dist/schema-definitions/models/SignpostModel.js +17 -48
- package/dist/schema-definitions/models/SignpostModel.js.map +1 -1
- package/dist/schema-definitions/models/TotemModel.d.ts +1 -1
- package/dist/schema-definitions/models/TotemModel.js +53 -177
- package/dist/schema-definitions/models/TotemModel.js.map +1 -1
- package/dist/schema-definitions/models/interfaces/IElement.d.ts +1 -0
- package/dist/schema-definitions/models/interfaces/IInformationPanel.d.ts +7 -0
- package/dist/schema-definitions/models/interfaces/ITotem.d.ts +1 -1
- package/docs/asyncapi.yaml +26 -0
- package/docs/implementation_documentation.md +67 -16
- package/docs/openapi-output.yaml +437 -249
- package/docs/translations.md +9 -1
- package/package.json +13 -4
package/docs/openapi-output.yaml
CHANGED
|
@@ -24,19 +24,58 @@ tags:
|
|
|
24
24
|
description: Data about physical (on-site) information elements of the Legible Prague system.
|
|
25
25
|
|
|
26
26
|
paths:
|
|
27
|
-
/v1/fypr/
|
|
27
|
+
/v1/fypr/elements:
|
|
28
28
|
get:
|
|
29
29
|
tags:
|
|
30
30
|
- FYPR (v1)
|
|
31
|
-
summary: GET
|
|
31
|
+
summary: GET FYPR links to elements kinds
|
|
32
|
+
operationId: listFyprElementsKinds
|
|
33
|
+
responses:
|
|
34
|
+
"200":
|
|
35
|
+
description: OK
|
|
36
|
+
content:
|
|
37
|
+
application/json:
|
|
38
|
+
schema:
|
|
39
|
+
type: object
|
|
40
|
+
required:
|
|
41
|
+
- links
|
|
42
|
+
properties:
|
|
43
|
+
links:
|
|
44
|
+
type: array
|
|
45
|
+
items:
|
|
46
|
+
type: object
|
|
47
|
+
required:
|
|
48
|
+
- rel
|
|
49
|
+
- href
|
|
50
|
+
properties:
|
|
51
|
+
rel:
|
|
52
|
+
type: string
|
|
53
|
+
example: display-cases
|
|
54
|
+
description: >-
|
|
55
|
+
Relation name identifying the element kind.
|
|
56
|
+
href:
|
|
57
|
+
type: string
|
|
58
|
+
example: /v1/fypr/elements/display-cases
|
|
59
|
+
description: >-
|
|
60
|
+
Absolute path to the list endpoint for this element kind.
|
|
61
|
+
|
|
62
|
+
/v1/fypr/elements/display-cases:
|
|
63
|
+
get:
|
|
64
|
+
tags:
|
|
65
|
+
- FYPR (v1)
|
|
66
|
+
summary: GET Display Cases
|
|
32
67
|
operationId: listDisplayCases
|
|
33
68
|
parameters:
|
|
34
|
-
- $ref: "#/components/parameters/
|
|
35
|
-
- $ref: "#/components/parameters/
|
|
69
|
+
- $ref: "#/components/parameters/Limit"
|
|
70
|
+
- $ref: "#/components/parameters/Offset"
|
|
36
71
|
responses:
|
|
37
72
|
"200":
|
|
38
73
|
description: OK
|
|
39
|
-
|
|
74
|
+
headers:
|
|
75
|
+
Last-Modified:
|
|
76
|
+
$ref: "#/components/headers/LastModified"
|
|
77
|
+
Cache-Control:
|
|
78
|
+
$ref: "#/components/headers/CacheControlNoCache"
|
|
40
79
|
content:
|
|
41
80
|
application/json:
|
|
42
81
|
schema:
|
|
@@ -45,22 +84,26 @@ paths:
|
|
|
45
84
|
$ref: "#/components/schemas/DisplayCase"
|
|
46
85
|
"400":
|
|
47
86
|
$ref: "#/components/responses/BadRequestError"
|
|
48
|
-
"
|
|
49
|
-
$ref: "#/components/responses/
|
|
87
|
+
"413":
|
|
88
|
+
$ref: "#/components/responses/ContentTooLargeError"
|
|
50
89
|
|
|
51
|
-
/v1/fypr/information-panels:
|
|
90
|
+
/v1/fypr/elements/information-panels:
|
|
52
91
|
get:
|
|
53
92
|
tags:
|
|
54
93
|
- FYPR (v1)
|
|
55
|
-
summary: GET
|
|
94
|
+
summary: GET Information Panels
|
|
56
95
|
operationId: listInformationPanels
|
|
57
96
|
parameters:
|
|
58
|
-
- $ref: "#/components/parameters/
|
|
59
|
-
- $ref: "#/components/parameters/
|
|
97
|
+
- $ref: "#/components/parameters/Limit"
|
|
98
|
+
- $ref: "#/components/parameters/Offset"
|
|
60
99
|
responses:
|
|
61
100
|
"200":
|
|
62
101
|
description: OK
|
|
63
|
-
|
|
102
|
+
headers:
|
|
103
|
+
Last-Modified:
|
|
104
|
+
$ref: "#/components/headers/LastModified"
|
|
105
|
+
Cache-Control:
|
|
106
|
+
$ref: "#/components/headers/CacheControlNoCache"
|
|
64
107
|
content:
|
|
65
108
|
application/json:
|
|
66
109
|
schema:
|
|
@@ -69,22 +112,26 @@ paths:
|
|
|
69
112
|
$ref: "#/components/schemas/InformationPanel"
|
|
70
113
|
"400":
|
|
71
114
|
$ref: "#/components/responses/BadRequestError"
|
|
72
|
-
"
|
|
73
|
-
$ref: "#/components/responses/
|
|
115
|
+
"413":
|
|
116
|
+
$ref: "#/components/responses/ContentTooLargeError"
|
|
74
117
|
|
|
75
|
-
/v1/fypr/obelisks:
|
|
118
|
+
/v1/fypr/elements/obelisks:
|
|
76
119
|
get:
|
|
77
120
|
tags:
|
|
78
121
|
- FYPR (v1)
|
|
79
|
-
summary: GET
|
|
122
|
+
summary: GET Obelisks
|
|
80
123
|
operationId: listObelisks
|
|
81
124
|
parameters:
|
|
82
|
-
- $ref: "#/components/parameters/
|
|
83
|
-
- $ref: "#/components/parameters/
|
|
125
|
+
- $ref: "#/components/parameters/Limit"
|
|
126
|
+
- $ref: "#/components/parameters/Offset"
|
|
84
127
|
responses:
|
|
85
128
|
"200":
|
|
86
129
|
description: OK
|
|
87
|
-
|
|
130
|
+
headers:
|
|
131
|
+
Last-Modified:
|
|
132
|
+
$ref: "#/components/headers/LastModified"
|
|
133
|
+
Cache-Control:
|
|
134
|
+
$ref: "#/components/headers/CacheControlNoCache"
|
|
88
135
|
content:
|
|
89
136
|
application/json:
|
|
90
137
|
schema:
|
|
@@ -93,22 +140,26 @@ paths:
|
|
|
93
140
|
$ref: "#/components/schemas/Obelisk"
|
|
94
141
|
"400":
|
|
95
142
|
$ref: "#/components/responses/BadRequestError"
|
|
96
|
-
"
|
|
97
|
-
$ref: "#/components/responses/
|
|
143
|
+
"413":
|
|
144
|
+
$ref: "#/components/responses/ContentTooLargeError"
|
|
98
145
|
|
|
99
|
-
/v1/fypr/signposts:
|
|
146
|
+
/v1/fypr/elements/signposts:
|
|
100
147
|
get:
|
|
101
148
|
tags:
|
|
102
149
|
- FYPR (v1)
|
|
103
|
-
summary: GET
|
|
150
|
+
summary: GET Signposts
|
|
104
151
|
operationId: listSignposts
|
|
105
152
|
parameters:
|
|
106
|
-
- $ref: "#/components/parameters/
|
|
107
|
-
- $ref: "#/components/parameters/
|
|
153
|
+
- $ref: "#/components/parameters/Limit"
|
|
154
|
+
- $ref: "#/components/parameters/Offset"
|
|
108
155
|
responses:
|
|
109
156
|
"200":
|
|
110
157
|
description: OK
|
|
111
|
-
|
|
158
|
+
headers:
|
|
159
|
+
Last-Modified:
|
|
160
|
+
$ref: "#/components/headers/LastModified"
|
|
161
|
+
Cache-Control:
|
|
162
|
+
$ref: "#/components/headers/CacheControlNoCache"
|
|
112
163
|
content:
|
|
113
164
|
application/json:
|
|
114
165
|
schema:
|
|
@@ -117,22 +168,26 @@ paths:
|
|
|
117
168
|
$ref: "#/components/schemas/Signpost"
|
|
118
169
|
"400":
|
|
119
170
|
$ref: "#/components/responses/BadRequestError"
|
|
120
|
-
"
|
|
121
|
-
$ref: "#/components/responses/
|
|
171
|
+
"413":
|
|
172
|
+
$ref: "#/components/responses/ContentTooLargeError"
|
|
122
173
|
|
|
123
|
-
/v1/fypr/totems:
|
|
174
|
+
/v1/fypr/elements/totems:
|
|
124
175
|
get:
|
|
125
176
|
tags:
|
|
126
177
|
- FYPR (v1)
|
|
127
|
-
summary: GET
|
|
178
|
+
summary: GET Totems
|
|
128
179
|
operationId: listTotems
|
|
129
180
|
parameters:
|
|
130
|
-
- $ref: "#/components/parameters/
|
|
131
|
-
- $ref: "#/components/parameters/
|
|
181
|
+
- $ref: "#/components/parameters/Limit"
|
|
182
|
+
- $ref: "#/components/parameters/Offset"
|
|
132
183
|
responses:
|
|
133
184
|
"200":
|
|
134
185
|
description: OK
|
|
135
|
-
|
|
186
|
+
headers:
|
|
187
|
+
Last-Modified:
|
|
188
|
+
$ref: "#/components/headers/LastModified"
|
|
189
|
+
Cache-Control:
|
|
190
|
+
$ref: "#/components/headers/CacheControlNoCache"
|
|
136
191
|
content:
|
|
137
192
|
application/json:
|
|
138
193
|
schema:
|
|
@@ -141,31 +196,337 @@ paths:
|
|
|
141
196
|
$ref: "#/components/schemas/Totem"
|
|
142
197
|
"400":
|
|
143
198
|
$ref: "#/components/responses/BadRequestError"
|
|
144
|
-
"
|
|
145
|
-
$ref: "#/components/responses/
|
|
199
|
+
"413":
|
|
200
|
+
$ref: "#/components/responses/ContentTooLargeError"
|
|
201
|
+
|
|
202
|
+
/v1/fypr/elements/{kind}/{id}:
|
|
203
|
+
get:
|
|
204
|
+
tags:
|
|
205
|
+
- FYPR (v1)
|
|
206
|
+
summary: GET FYPR element by kind and id
|
|
207
|
+
operationId: getFyprElementDetail
|
|
208
|
+
parameters:
|
|
209
|
+
- $ref: "#/components/parameters/Kind"
|
|
210
|
+
- name: id
|
|
211
|
+
in: path
|
|
212
|
+
required: true
|
|
213
|
+
schema:
|
|
214
|
+
$ref: "#/components/schemas/ElementId"
|
|
215
|
+
description: >-
|
|
216
|
+
UUID of the element to retrieve.
|
|
217
|
+
responses:
|
|
218
|
+
"200":
|
|
219
|
+
description: OK
|
|
220
|
+
headers:
|
|
221
|
+
Last-Modified:
|
|
222
|
+
$ref: "#/components/headers/LastModified"
|
|
223
|
+
Cache-Control:
|
|
224
|
+
$ref: "#/components/headers/CacheControlNoCache"
|
|
225
|
+
content:
|
|
226
|
+
application/json:
|
|
227
|
+
schema:
|
|
228
|
+
oneOf:
|
|
229
|
+
- $ref: "#/components/schemas/DisplayCase"
|
|
230
|
+
- $ref: "#/components/schemas/InformationPanel"
|
|
231
|
+
- $ref: "#/components/schemas/Obelisk"
|
|
232
|
+
- $ref: "#/components/schemas/Signpost"
|
|
233
|
+
- $ref: "#/components/schemas/Totem"
|
|
234
|
+
"400":
|
|
235
|
+
$ref: "#/components/responses/BadRequestError"
|
|
236
|
+
"404":
|
|
237
|
+
$ref: "#/components/responses/NotFoundError"
|
|
146
238
|
|
|
147
239
|
components:
|
|
148
240
|
parameters:
|
|
149
|
-
|
|
241
|
+
Limit:
|
|
150
242
|
name: limit
|
|
151
243
|
in: query
|
|
152
244
|
required: false
|
|
153
|
-
example: 10
|
|
154
245
|
schema:
|
|
155
246
|
type: integer
|
|
247
|
+
minimum: 1
|
|
248
|
+
maximum: 10000
|
|
249
|
+
default: 100
|
|
156
250
|
description: >-
|
|
157
251
|
Limits number of retrieved items.
|
|
158
252
|
|
|
159
|
-
|
|
253
|
+
Offset:
|
|
160
254
|
name: offset
|
|
161
255
|
in: query
|
|
162
256
|
required: false
|
|
163
257
|
example: 0
|
|
164
258
|
schema:
|
|
165
259
|
type: integer
|
|
166
|
-
|
|
260
|
+
minimum: 0
|
|
261
|
+
default: 0
|
|
262
|
+
description: >-
|
|
263
|
+
Offset for pagination. The default value is 0.
|
|
264
|
+
|
|
265
|
+
Kind:
|
|
266
|
+
name: kind
|
|
267
|
+
in: path
|
|
268
|
+
required: true
|
|
269
|
+
schema:
|
|
270
|
+
type: string
|
|
271
|
+
enum:
|
|
272
|
+
- display-cases
|
|
273
|
+
- information-panels
|
|
274
|
+
- obelisks
|
|
275
|
+
- signposts
|
|
276
|
+
- totems
|
|
277
|
+
description: >-
|
|
278
|
+
Kind of the FYPR element.
|
|
279
|
+
|
|
280
|
+
headers:
|
|
281
|
+
LastModified:
|
|
282
|
+
description: Timestamp of the latest resource update.
|
|
283
|
+
schema:
|
|
284
|
+
type: string
|
|
285
|
+
example: "2024-08-12T12:40:30.000Z"
|
|
286
|
+
CacheControlNoCache:
|
|
287
|
+
description: Cache control directive for caching proxies
|
|
288
|
+
schema:
|
|
289
|
+
type: string
|
|
290
|
+
example: max-age=300, stale-while-revalidate=60
|
|
291
|
+
|
|
292
|
+
responses:
|
|
293
|
+
ContentTooLargeError:
|
|
294
|
+
description: Content too large - limit query parameter exceeds maximum (10000)
|
|
295
|
+
content:
|
|
296
|
+
application/json:
|
|
297
|
+
schema:
|
|
298
|
+
type: object
|
|
299
|
+
properties:
|
|
300
|
+
error_message:
|
|
301
|
+
type: string
|
|
302
|
+
example: "Pagination limit error"
|
|
303
|
+
nullable: false
|
|
304
|
+
error_status:
|
|
305
|
+
type: integer
|
|
306
|
+
example: 413
|
|
307
|
+
nullable: false
|
|
308
|
+
error_info:
|
|
309
|
+
type: string
|
|
310
|
+
example: "{...}"
|
|
311
|
+
nullable: true
|
|
312
|
+
required:
|
|
313
|
+
- error_message
|
|
314
|
+
- error_status
|
|
315
|
+
|
|
316
|
+
NotFoundError:
|
|
317
|
+
description: Not found - the requested resource does not exist
|
|
318
|
+
content:
|
|
319
|
+
application/json:
|
|
320
|
+
schema:
|
|
321
|
+
type: object
|
|
322
|
+
properties:
|
|
323
|
+
error_message:
|
|
324
|
+
type: string
|
|
325
|
+
example: "Not found"
|
|
326
|
+
nullable: false
|
|
327
|
+
error_status:
|
|
328
|
+
type: integer
|
|
329
|
+
example: 404
|
|
330
|
+
nullable: false
|
|
331
|
+
error_info:
|
|
332
|
+
type: string
|
|
333
|
+
example: "{...}"
|
|
334
|
+
nullable: true
|
|
335
|
+
required:
|
|
336
|
+
- error_message
|
|
337
|
+
- error_status
|
|
338
|
+
|
|
339
|
+
BadRequestError:
|
|
340
|
+
description: Bad request - invalid query parameters
|
|
341
|
+
content:
|
|
342
|
+
application/json:
|
|
343
|
+
schema:
|
|
344
|
+
type: object
|
|
345
|
+
properties:
|
|
346
|
+
error_message:
|
|
347
|
+
type: string
|
|
348
|
+
example: "Bad request"
|
|
349
|
+
nullable: false
|
|
350
|
+
error_status:
|
|
351
|
+
type: integer
|
|
352
|
+
example: 400
|
|
353
|
+
nullable: false
|
|
354
|
+
error_info:
|
|
355
|
+
type: string
|
|
356
|
+
example: "{...}"
|
|
357
|
+
nullable: true
|
|
358
|
+
required:
|
|
359
|
+
- error_message
|
|
360
|
+
- error_status
|
|
167
361
|
|
|
168
362
|
schemas:
|
|
363
|
+
ElementId:
|
|
364
|
+
type: string
|
|
365
|
+
format: uuid
|
|
366
|
+
example: "1b75c16b-d5a3-40ca-8560-5a7dc011655d"
|
|
367
|
+
description: >-
|
|
368
|
+
Unique identifier for an element. UUID v4, server-generated.
|
|
369
|
+
|
|
370
|
+
ElementReadOnly:
|
|
371
|
+
type: object
|
|
372
|
+
description: >-
|
|
373
|
+
Server-set fields that clients can only read. All properties carry
|
|
374
|
+
readOnly: true. Composed via allOf into each typed element schema.
|
|
375
|
+
properties:
|
|
376
|
+
id:
|
|
377
|
+
allOf:
|
|
378
|
+
- $ref: "#/components/schemas/ElementId"
|
|
379
|
+
readOnly: true
|
|
380
|
+
description: >-
|
|
381
|
+
Server-generated UUID primary key. Immutable after creation.
|
|
382
|
+
source_created_at:
|
|
383
|
+
type: string
|
|
384
|
+
format: date-time
|
|
385
|
+
readOnly: true
|
|
386
|
+
example: "2024-01-15T08:30:00.000Z"
|
|
387
|
+
description: >-
|
|
388
|
+
Timestamp when the record was first created in the upstream CMS
|
|
389
|
+
(Strapi). ISO 8601 UTC. Server-set, not writable by clients.
|
|
390
|
+
source_updated_at:
|
|
391
|
+
type: string
|
|
392
|
+
format: date-time
|
|
393
|
+
readOnly: true
|
|
394
|
+
example: "2024-08-12T12:40:30.000Z"
|
|
395
|
+
description: >-
|
|
396
|
+
Timestamp of the most recent update in the upstream CMS (Strapi).
|
|
397
|
+
ISO 8601 UTC. Server-set, not writable by clients.
|
|
398
|
+
source_published_at:
|
|
399
|
+
type: string
|
|
400
|
+
format: date-time
|
|
401
|
+
readOnly: true
|
|
402
|
+
example: "2024-08-12T13:00:00.000Z"
|
|
403
|
+
description: >-
|
|
404
|
+
Timestamp when the record was published in the upstream CMS
|
|
405
|
+
(Strapi). ISO 8601 UTC. Server-set, not writable by clients.
|
|
406
|
+
|
|
407
|
+
ElementBase:
|
|
408
|
+
type: object
|
|
409
|
+
description: >-
|
|
410
|
+
Writable base fields shared by all FYPR element types. No id or timestamps.
|
|
411
|
+
Composed via allOf by each typed element schema.
|
|
412
|
+
required:
|
|
413
|
+
- document_id
|
|
414
|
+
- kind
|
|
415
|
+
properties:
|
|
416
|
+
document_id:
|
|
417
|
+
type: string
|
|
418
|
+
nullable: false
|
|
419
|
+
example: "abc123def456"
|
|
420
|
+
description: >-
|
|
421
|
+
Unique document identifier sourced from the upstream CMS (Strapi).
|
|
422
|
+
Used as the stable external reference for deduplication.
|
|
423
|
+
uid:
|
|
424
|
+
type: string
|
|
425
|
+
format: uuid
|
|
426
|
+
nullable: true
|
|
427
|
+
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
428
|
+
description: >-
|
|
429
|
+
Optional external UUID assigned to the physical element by the
|
|
430
|
+
field operations team. May be null for elements not yet assigned.
|
|
431
|
+
kind:
|
|
432
|
+
type: string
|
|
433
|
+
nullable: false
|
|
434
|
+
enum:
|
|
435
|
+
- totem
|
|
436
|
+
- information_panel
|
|
437
|
+
- display_case
|
|
438
|
+
- obelisk
|
|
439
|
+
- signpost
|
|
440
|
+
example: "totem"
|
|
441
|
+
description: >-
|
|
442
|
+
Discriminator field identifying the element type. Determines which
|
|
443
|
+
typed schema applies (Totem, InformationPanel, DisplayCase, Obelisk,
|
|
444
|
+
Signpost).
|
|
445
|
+
name:
|
|
446
|
+
type: string
|
|
447
|
+
nullable: true
|
|
448
|
+
example: "Totem Palackeho namesti"
|
|
449
|
+
description: Human-readable name of the element. May be null.
|
|
450
|
+
state:
|
|
451
|
+
type: string
|
|
452
|
+
nullable: true
|
|
453
|
+
example: "REALIZED"
|
|
454
|
+
description: >-
|
|
455
|
+
Lifecycle state of the element (e.g. PLANNED, IN_PROGRESS,
|
|
456
|
+
REALIZED). Sourced from CMS. May be null.
|
|
457
|
+
owner:
|
|
458
|
+
type: string
|
|
459
|
+
nullable: true
|
|
460
|
+
example: "ROPID"
|
|
461
|
+
description: >-
|
|
462
|
+
Organization or entity that owns the element. May be null.
|
|
463
|
+
manager:
|
|
464
|
+
type: string
|
|
465
|
+
nullable: true
|
|
466
|
+
example: "THMP"
|
|
467
|
+
description: >-
|
|
468
|
+
Organization or entity that manages the element. May be null.
|
|
469
|
+
city_district:
|
|
470
|
+
type: string
|
|
471
|
+
nullable: true
|
|
472
|
+
example: "Praha 6"
|
|
473
|
+
description: >-
|
|
474
|
+
Prague city district where the element is physically located.
|
|
475
|
+
May be null.
|
|
476
|
+
lat:
|
|
477
|
+
type: number
|
|
478
|
+
format: double
|
|
479
|
+
nullable: true
|
|
480
|
+
example: 50.0755
|
|
481
|
+
description: >-
|
|
482
|
+
WGS-84 latitude coordinate of the element's installation site.
|
|
483
|
+
May be null if coordinates are not yet surveyed.
|
|
484
|
+
lon:
|
|
485
|
+
type: number
|
|
486
|
+
format: double
|
|
487
|
+
nullable: true
|
|
488
|
+
example: 14.4378
|
|
489
|
+
description: >-
|
|
490
|
+
WGS-84 longitude coordinate of the element's installation site.
|
|
491
|
+
May be null if coordinates are not yet surveyed.
|
|
492
|
+
map_link:
|
|
493
|
+
type: string
|
|
494
|
+
nullable: true
|
|
495
|
+
example: "https://mapy.cz/s/example"
|
|
496
|
+
description: >-
|
|
497
|
+
URL to an external map view showing the element location.
|
|
498
|
+
May be null.
|
|
499
|
+
planned_year_of_realization:
|
|
500
|
+
type: string
|
|
501
|
+
nullable: true
|
|
502
|
+
example: "2025"
|
|
503
|
+
description: >-
|
|
504
|
+
Year in which the element is planned to be realized or installed.
|
|
505
|
+
Stored as string to accommodate partial or estimated values.
|
|
506
|
+
May be null.
|
|
507
|
+
note:
|
|
508
|
+
type: string
|
|
509
|
+
nullable: true
|
|
510
|
+
example: "Installed near bus stop exit B."
|
|
511
|
+
description: >-
|
|
512
|
+
Free-text operational note attached to the element by field staff.
|
|
513
|
+
May be null.
|
|
514
|
+
handover:
|
|
515
|
+
type: boolean
|
|
516
|
+
nullable: true
|
|
517
|
+
example: true
|
|
518
|
+
description: >-
|
|
519
|
+
Indicates whether the element has been handed over to the
|
|
520
|
+
maintenance team. May be null if handover status is unknown.
|
|
521
|
+
handover_date:
|
|
522
|
+
type: string
|
|
523
|
+
format: date
|
|
524
|
+
nullable: true
|
|
525
|
+
example: "2024-08-12"
|
|
526
|
+
description: >-
|
|
527
|
+
Date on which the element was formally handed over to the
|
|
528
|
+
maintenance team. ISO 8601 date. May be null.
|
|
529
|
+
|
|
169
530
|
DisplayCase:
|
|
170
531
|
description: >-
|
|
171
532
|
Fully composed DisplayCase schema for list responses. Combines DisplayCaseBase
|
|
@@ -327,167 +688,6 @@ components:
|
|
|
327
688
|
Scheduled cleaning frequency for the display case (e.g. daily,
|
|
328
689
|
weekly, monthly). May be null if no cleaning schedule is set.
|
|
329
690
|
|
|
330
|
-
ElementBase:
|
|
331
|
-
type: object
|
|
332
|
-
description: >-
|
|
333
|
-
Writable base fields shared by all FYPR element types. No id or timestamps.
|
|
334
|
-
Composed via allOf by each typed element schema.
|
|
335
|
-
required:
|
|
336
|
-
- document_id
|
|
337
|
-
- kind
|
|
338
|
-
properties:
|
|
339
|
-
document_id:
|
|
340
|
-
type: string
|
|
341
|
-
nullable: false
|
|
342
|
-
example: "abc123def456"
|
|
343
|
-
description: >-
|
|
344
|
-
Unique document identifier sourced from the upstream CMS (Strapi).
|
|
345
|
-
Used as the stable external reference for deduplication.
|
|
346
|
-
uid:
|
|
347
|
-
type: string
|
|
348
|
-
format: uuid
|
|
349
|
-
nullable: true
|
|
350
|
-
example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
351
|
-
description: >-
|
|
352
|
-
Optional external UUID assigned to the physical element by the
|
|
353
|
-
field operations team. May be null for elements not yet assigned.
|
|
354
|
-
kind:
|
|
355
|
-
type: string
|
|
356
|
-
nullable: false
|
|
357
|
-
enum:
|
|
358
|
-
- totem
|
|
359
|
-
- information_panel
|
|
360
|
-
- display_case
|
|
361
|
-
- obelisk
|
|
362
|
-
- signpost
|
|
363
|
-
example: "totem"
|
|
364
|
-
description: >-
|
|
365
|
-
Discriminator field identifying the element type. Determines which
|
|
366
|
-
typed schema applies (Totem, InformationPanel, DisplayCase, Obelisk,
|
|
367
|
-
Signpost).
|
|
368
|
-
name:
|
|
369
|
-
type: string
|
|
370
|
-
nullable: true
|
|
371
|
-
example: "Totem Palackeho namesti"
|
|
372
|
-
description: Human-readable name of the element. May be null.
|
|
373
|
-
state:
|
|
374
|
-
type: string
|
|
375
|
-
nullable: true
|
|
376
|
-
example: "REALIZED"
|
|
377
|
-
description: >-
|
|
378
|
-
Lifecycle state of the element (e.g. PLANNED, IN_PROGRESS,
|
|
379
|
-
REALIZED). Sourced from CMS. May be null.
|
|
380
|
-
owner:
|
|
381
|
-
type: string
|
|
382
|
-
nullable: true
|
|
383
|
-
example: "ROPID"
|
|
384
|
-
description: >-
|
|
385
|
-
Organization or entity that owns the element. May be null.
|
|
386
|
-
city_district:
|
|
387
|
-
type: string
|
|
388
|
-
nullable: true
|
|
389
|
-
example: "Praha 6"
|
|
390
|
-
description: >-
|
|
391
|
-
Prague city district where the element is physically located.
|
|
392
|
-
May be null.
|
|
393
|
-
lat:
|
|
394
|
-
type: number
|
|
395
|
-
format: double
|
|
396
|
-
nullable: true
|
|
397
|
-
example: 50.0755
|
|
398
|
-
description: >-
|
|
399
|
-
WGS-84 latitude coordinate of the element's installation site.
|
|
400
|
-
May be null if coordinates are not yet surveyed.
|
|
401
|
-
lon:
|
|
402
|
-
type: number
|
|
403
|
-
format: double
|
|
404
|
-
nullable: true
|
|
405
|
-
example: 14.4378
|
|
406
|
-
description: >-
|
|
407
|
-
WGS-84 longitude coordinate of the element's installation site.
|
|
408
|
-
May be null if coordinates are not yet surveyed.
|
|
409
|
-
map_link:
|
|
410
|
-
type: string
|
|
411
|
-
nullable: true
|
|
412
|
-
example: "https://mapy.cz/s/example"
|
|
413
|
-
description: >-
|
|
414
|
-
URL to an external map view showing the element location.
|
|
415
|
-
May be null.
|
|
416
|
-
planned_year_of_realization:
|
|
417
|
-
type: string
|
|
418
|
-
nullable: true
|
|
419
|
-
example: "2025"
|
|
420
|
-
description: >-
|
|
421
|
-
Year in which the element is planned to be realized or installed.
|
|
422
|
-
Stored as string to accommodate partial or estimated values.
|
|
423
|
-
May be null.
|
|
424
|
-
note:
|
|
425
|
-
type: string
|
|
426
|
-
nullable: true
|
|
427
|
-
example: "Installed near bus stop exit B."
|
|
428
|
-
description: >-
|
|
429
|
-
Free-text operational note attached to the element by field staff.
|
|
430
|
-
May be null.
|
|
431
|
-
handover:
|
|
432
|
-
type: boolean
|
|
433
|
-
nullable: true
|
|
434
|
-
example: true
|
|
435
|
-
description: >-
|
|
436
|
-
Indicates whether the element has been handed over to the
|
|
437
|
-
maintenance team. May be null if handover status is unknown.
|
|
438
|
-
handover_date:
|
|
439
|
-
type: string
|
|
440
|
-
format: date
|
|
441
|
-
nullable: true
|
|
442
|
-
example: "2024-08-12"
|
|
443
|
-
description: >-
|
|
444
|
-
Date on which the element was formally handed over to the
|
|
445
|
-
maintenance team. ISO 8601 date. May be null.
|
|
446
|
-
|
|
447
|
-
ElementId:
|
|
448
|
-
type: string
|
|
449
|
-
format: uuid
|
|
450
|
-
example: "1b75c16b-d5a3-40ca-8560-5a7dc011655d"
|
|
451
|
-
description: >-
|
|
452
|
-
Unique identifier for an element. UUID v4, server-generated.
|
|
453
|
-
|
|
454
|
-
ElementReadOnly:
|
|
455
|
-
type: object
|
|
456
|
-
description: >-
|
|
457
|
-
Server-set fields that clients can only read. All properties carry
|
|
458
|
-
readOnly: true. Composed via allOf into each typed element schema.
|
|
459
|
-
properties:
|
|
460
|
-
id:
|
|
461
|
-
allOf:
|
|
462
|
-
- $ref: "#/components/schemas/ElementId"
|
|
463
|
-
readOnly: true
|
|
464
|
-
description: >-
|
|
465
|
-
Server-generated UUID primary key. Immutable after creation.
|
|
466
|
-
source_created_at:
|
|
467
|
-
type: string
|
|
468
|
-
format: date-time
|
|
469
|
-
readOnly: true
|
|
470
|
-
example: "2024-01-15T08:30:00.000Z"
|
|
471
|
-
description: >-
|
|
472
|
-
Timestamp when the record was first created in the upstream CMS
|
|
473
|
-
(Strapi). ISO 8601 UTC. Server-set, not writable by clients.
|
|
474
|
-
source_updated_at:
|
|
475
|
-
type: string
|
|
476
|
-
format: date-time
|
|
477
|
-
readOnly: true
|
|
478
|
-
example: "2024-08-12T12:40:30.000Z"
|
|
479
|
-
description: >-
|
|
480
|
-
Timestamp of the most recent update in the upstream CMS (Strapi).
|
|
481
|
-
ISO 8601 UTC. Server-set, not writable by clients.
|
|
482
|
-
source_published_at:
|
|
483
|
-
type: string
|
|
484
|
-
format: date-time
|
|
485
|
-
readOnly: true
|
|
486
|
-
example: "2024-08-12T13:00:00.000Z"
|
|
487
|
-
description: >-
|
|
488
|
-
Timestamp when the record was published in the upstream CMS
|
|
489
|
-
(Strapi). ISO 8601 UTC. Server-set, not writable by clients.
|
|
490
|
-
|
|
491
691
|
InformationPanel:
|
|
492
692
|
description: >-
|
|
493
693
|
Fully composed information panel schema. Combines InformationPanelBase (writable
|
|
@@ -1041,6 +1241,41 @@ components:
|
|
|
1041
1241
|
example: "SN-2024-00042"
|
|
1042
1242
|
description: >-
|
|
1043
1243
|
Manufacturer's serial number of the panel unit. May be null.
|
|
1244
|
+
producer:
|
|
1245
|
+
type: string
|
|
1246
|
+
nullable: true
|
|
1247
|
+
description: >-
|
|
1248
|
+
Name of the panel manufacturer. May be null.
|
|
1249
|
+
producer_contact_person:
|
|
1250
|
+
type: string
|
|
1251
|
+
nullable: true
|
|
1252
|
+
description: >-
|
|
1253
|
+
Contact person at the panel manufacturer. May be null.
|
|
1254
|
+
panel_technology:
|
|
1255
|
+
type: string
|
|
1256
|
+
nullable: true
|
|
1257
|
+
description: >-
|
|
1258
|
+
Display technology of the panel (e.g. LCD, e-paper). May be null.
|
|
1259
|
+
panel_model:
|
|
1260
|
+
type: string
|
|
1261
|
+
nullable: true
|
|
1262
|
+
description: >-
|
|
1263
|
+
Model designation of the panel unit. May be null.
|
|
1264
|
+
owner_contact:
|
|
1265
|
+
type: string
|
|
1266
|
+
nullable: true
|
|
1267
|
+
description: >-
|
|
1268
|
+
Contact information for the element owner. May be null.
|
|
1269
|
+
connectivity_internet:
|
|
1270
|
+
type: string
|
|
1271
|
+
nullable: true
|
|
1272
|
+
description: >-
|
|
1273
|
+
Internet connectivity type or provider for the panel. May be null.
|
|
1274
|
+
phone_number:
|
|
1275
|
+
type: string
|
|
1276
|
+
nullable: true
|
|
1277
|
+
description: >-
|
|
1278
|
+
Phone number associated with the panel's SIM or connectivity. May be null.
|
|
1044
1279
|
|
|
1045
1280
|
Obelisk:
|
|
1046
1281
|
description: >-
|
|
@@ -1696,13 +1931,13 @@ components:
|
|
|
1696
1931
|
description: >-
|
|
1697
1932
|
Construction or mounting type of the totem
|
|
1698
1933
|
(e.g. STANDALONE, POLE_MOUNTED, WALL_MOUNTED). May be null.
|
|
1699
|
-
|
|
1934
|
+
production_price_without_vat:
|
|
1700
1935
|
type: number
|
|
1701
1936
|
format: double
|
|
1702
1937
|
nullable: true
|
|
1703
1938
|
example: 320000.00
|
|
1704
1939
|
description: >-
|
|
1705
|
-
Total
|
|
1940
|
+
Total production price of this totem unit, excluding VAT
|
|
1706
1941
|
(Czech crowns). May be null.
|
|
1707
1942
|
serial_number:
|
|
1708
1943
|
type: string
|
|
@@ -1711,50 +1946,3 @@ components:
|
|
|
1711
1946
|
description: >-
|
|
1712
1947
|
Manufacturer's serial number of this totem unit.
|
|
1713
1948
|
May be null.
|
|
1714
|
-
|
|
1715
|
-
responses:
|
|
1716
|
-
BadRequestError:
|
|
1717
|
-
description: Bad request - invalid query parameters
|
|
1718
|
-
content:
|
|
1719
|
-
application/json:
|
|
1720
|
-
schema:
|
|
1721
|
-
type: object
|
|
1722
|
-
properties:
|
|
1723
|
-
error_message:
|
|
1724
|
-
type: string
|
|
1725
|
-
example: "Bad request"
|
|
1726
|
-
nullable: false
|
|
1727
|
-
error_status:
|
|
1728
|
-
type: integer
|
|
1729
|
-
example: 400
|
|
1730
|
-
nullable: false
|
|
1731
|
-
error_info:
|
|
1732
|
-
type: string
|
|
1733
|
-
example: "{...}"
|
|
1734
|
-
nullable: true
|
|
1735
|
-
required:
|
|
1736
|
-
- error_message
|
|
1737
|
-
- error_status
|
|
1738
|
-
|
|
1739
|
-
UnauthorizedError:
|
|
1740
|
-
description: API key is missing or invalid
|
|
1741
|
-
headers:
|
|
1742
|
-
WWW_Authenticate:
|
|
1743
|
-
schema:
|
|
1744
|
-
type: string
|
|
1745
|
-
content:
|
|
1746
|
-
application/json:
|
|
1747
|
-
schema:
|
|
1748
|
-
type: object
|
|
1749
|
-
properties:
|
|
1750
|
-
error_message:
|
|
1751
|
-
type: string
|
|
1752
|
-
example: "Unauthorized. Failed to authenticate user."
|
|
1753
|
-
nullable: false
|
|
1754
|
-
error_status:
|
|
1755
|
-
type: integer
|
|
1756
|
-
example: 401
|
|
1757
|
-
nullable: false
|
|
1758
|
-
required:
|
|
1759
|
-
- error_message
|
|
1760
|
-
- error_status
|