@twin.org/auditable-item-graph-service 0.0.3-next.2 → 0.0.3-next.21
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/README.md +3 -1
- package/dist/es/auditableItemGraphRoutes.js +609 -44
- package/dist/es/auditableItemGraphRoutes.js.map +1 -1
- package/dist/es/auditableItemGraphService.js +714 -159
- package/dist/es/auditableItemGraphService.js.map +1 -1
- package/dist/es/entities/auditableItemGraphAlias.js +8 -0
- package/dist/es/entities/auditableItemGraphAlias.js.map +1 -1
- package/dist/es/entities/auditableItemGraphChangeset.js +8 -0
- package/dist/es/entities/auditableItemGraphChangeset.js.map +1 -1
- package/dist/es/entities/auditableItemGraphVertex.js +8 -0
- package/dist/es/entities/auditableItemGraphVertex.js.map +1 -1
- package/dist/es/models/IAuditableItemGraphServiceConstructorOptions.js.map +1 -1
- package/dist/types/auditableItemGraphRoutes.d.ts +42 -2
- package/dist/types/auditableItemGraphService.d.ts +81 -55
- package/dist/types/entities/auditableItemGraphAlias.d.ts +4 -0
- package/dist/types/entities/auditableItemGraphChangeset.d.ts +4 -0
- package/dist/types/entities/auditableItemGraphVertex.d.ts +4 -0
- package/dist/types/models/IAuditableItemGraphServiceConstructorOptions.d.ts +4 -0
- package/docs/changelog.md +370 -71
- package/docs/examples.md +241 -1
- package/docs/open-api/spec.json +1218 -220
- package/docs/reference/classes/AuditableItemGraphAlias.md +18 -10
- package/docs/reference/classes/AuditableItemGraphChangeset.md +16 -8
- package/docs/reference/classes/AuditableItemGraphEdge.md +10 -10
- package/docs/reference/classes/AuditableItemGraphPatch.md +6 -6
- package/docs/reference/classes/AuditableItemGraphResource.md +9 -9
- package/docs/reference/classes/AuditableItemGraphService.md +221 -59
- package/docs/reference/classes/AuditableItemGraphVertex.md +26 -18
- package/docs/reference/functions/auditableItemGraphChangesetGet.md +31 -0
- package/docs/reference/functions/auditableItemGraphChangesetList.md +31 -0
- package/docs/reference/functions/auditableItemGraphUpdate.md +1 -1
- package/docs/reference/functions/auditableItemGraphUpdatePartial.md +31 -0
- package/docs/reference/functions/auditableItemGraphVersionGet.md +31 -0
- package/docs/reference/functions/auditableItemGraphVersionList.md +31 -0
- package/docs/reference/index.md +5 -0
- package/docs/reference/interfaces/IAuditableItemGraphServiceConstructorOptions.md +18 -10
- package/locales/en.json +7 -2
- package/package.json +6 -6
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0.
|
|
3
3
|
import { HttpParameterHelper } from "@twin.org/api-models";
|
|
4
4
|
import { AuditableItemGraphContexts, AuditableItemGraphTypes } from "@twin.org/auditable-item-graph-models";
|
|
5
|
-
import { Coerce, ComponentFactory, Guards } from "@twin.org/core";
|
|
5
|
+
import { Coerce, ComponentFactory, Guards, Is } from "@twin.org/core";
|
|
6
6
|
import { SchemaOrgContexts, SchemaOrgTypes } from "@twin.org/standards-schema-org";
|
|
7
|
-
import { HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
|
|
7
|
+
import { HeaderHelper, HeaderTypes, HttpStatusCode, MimeTypes } from "@twin.org/web";
|
|
8
8
|
/**
|
|
9
9
|
* The source used when communicating about these routes.
|
|
10
10
|
*/
|
|
@@ -39,6 +39,11 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
39
39
|
id: "auditableItemGraphCreateRequestExample",
|
|
40
40
|
request: {
|
|
41
41
|
body: {
|
|
42
|
+
"@context": [
|
|
43
|
+
AuditableItemGraphContexts.Context,
|
|
44
|
+
AuditableItemGraphContexts.ContextCommon
|
|
45
|
+
],
|
|
46
|
+
type: AuditableItemGraphTypes.Vertex,
|
|
42
47
|
annotationObject: {
|
|
43
48
|
"@context": "https://schema.org",
|
|
44
49
|
"@type": "Note",
|
|
@@ -46,6 +51,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
46
51
|
},
|
|
47
52
|
aliases: [
|
|
48
53
|
{
|
|
54
|
+
type: AuditableItemGraphTypes.Alias,
|
|
49
55
|
id: "bar456",
|
|
50
56
|
annotationObject: {
|
|
51
57
|
"@context": "https://schema.org",
|
|
@@ -54,6 +60,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
54
60
|
}
|
|
55
61
|
},
|
|
56
62
|
{
|
|
63
|
+
type: AuditableItemGraphTypes.Alias,
|
|
57
64
|
id: "foo321",
|
|
58
65
|
annotationObject: {
|
|
59
66
|
"@context": "https://schema.org",
|
|
@@ -64,6 +71,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
64
71
|
],
|
|
65
72
|
resources: [
|
|
66
73
|
{
|
|
74
|
+
type: AuditableItemGraphTypes.Resource,
|
|
67
75
|
id: "resource1",
|
|
68
76
|
resourceObject: {
|
|
69
77
|
"@context": "https://schema.org",
|
|
@@ -72,6 +80,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
72
80
|
}
|
|
73
81
|
},
|
|
74
82
|
{
|
|
83
|
+
type: AuditableItemGraphTypes.Resource,
|
|
75
84
|
id: "resource2",
|
|
76
85
|
resourceObject: {
|
|
77
86
|
"@context": "https://schema.org",
|
|
@@ -82,6 +91,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
82
91
|
],
|
|
83
92
|
edges: [
|
|
84
93
|
{
|
|
94
|
+
type: AuditableItemGraphTypes.Edge,
|
|
85
95
|
targetId: "aig:1234567890",
|
|
86
96
|
edgeRelationships: ["frenemy"],
|
|
87
97
|
annotationObject: {
|
|
@@ -91,6 +101,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
91
101
|
}
|
|
92
102
|
},
|
|
93
103
|
{
|
|
104
|
+
type: AuditableItemGraphTypes.Edge,
|
|
94
105
|
targetId: "aig:45678901234",
|
|
95
106
|
edgeRelationships: ["end"],
|
|
96
107
|
annotationObject: {
|
|
@@ -115,7 +126,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
115
126
|
response: {
|
|
116
127
|
statusCode: HttpStatusCode.created,
|
|
117
128
|
headers: {
|
|
118
|
-
[HeaderTypes.Location]: "aig
|
|
129
|
+
[HeaderTypes.Location]: "aig%3A1234567890"
|
|
119
130
|
}
|
|
120
131
|
}
|
|
121
132
|
}
|
|
@@ -155,9 +166,9 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
155
166
|
response: {
|
|
156
167
|
body: {
|
|
157
168
|
"@context": [
|
|
158
|
-
AuditableItemGraphContexts.
|
|
159
|
-
AuditableItemGraphContexts.
|
|
160
|
-
SchemaOrgContexts.
|
|
169
|
+
AuditableItemGraphContexts.Context,
|
|
170
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
171
|
+
SchemaOrgContexts.Context
|
|
161
172
|
],
|
|
162
173
|
type: AuditableItemGraphTypes.Vertex,
|
|
163
174
|
id: "aig:1234567890",
|
|
@@ -171,9 +182,9 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
171
182
|
aliases: [
|
|
172
183
|
{
|
|
173
184
|
"@context": [
|
|
174
|
-
AuditableItemGraphContexts.
|
|
175
|
-
AuditableItemGraphContexts.
|
|
176
|
-
SchemaOrgContexts.
|
|
185
|
+
AuditableItemGraphContexts.Context,
|
|
186
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
187
|
+
SchemaOrgContexts.Context
|
|
177
188
|
],
|
|
178
189
|
type: AuditableItemGraphTypes.Alias,
|
|
179
190
|
id: "tst:1234567890",
|
|
@@ -197,9 +208,9 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
197
208
|
},
|
|
198
209
|
body: {
|
|
199
210
|
"@context": [
|
|
200
|
-
AuditableItemGraphContexts.
|
|
201
|
-
AuditableItemGraphContexts.
|
|
202
|
-
SchemaOrgContexts.
|
|
211
|
+
AuditableItemGraphContexts.Context,
|
|
212
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
213
|
+
SchemaOrgContexts.Context
|
|
203
214
|
],
|
|
204
215
|
type: AuditableItemGraphTypes.Vertex,
|
|
205
216
|
id: "aig:1234567890",
|
|
@@ -213,9 +224,9 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
213
224
|
aliases: [
|
|
214
225
|
{
|
|
215
226
|
"@context": [
|
|
216
|
-
AuditableItemGraphContexts.
|
|
217
|
-
AuditableItemGraphContexts.
|
|
218
|
-
SchemaOrgContexts.
|
|
227
|
+
AuditableItemGraphContexts.Context,
|
|
228
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
229
|
+
SchemaOrgContexts.Context
|
|
219
230
|
],
|
|
220
231
|
type: AuditableItemGraphTypes.Alias,
|
|
221
232
|
dateCreated: "2024-08-22T11:55:16.271Z",
|
|
@@ -229,6 +240,377 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
229
240
|
}
|
|
230
241
|
]
|
|
231
242
|
};
|
|
243
|
+
const getChangesetRoute = {
|
|
244
|
+
operationId: "auditableItemGraphChangesetGet",
|
|
245
|
+
summary: "Get a graph vertex changeset",
|
|
246
|
+
tag: tagsAuditableItemGraph[0].name,
|
|
247
|
+
method: "GET",
|
|
248
|
+
path: `${baseRouteName}/:id/changesets/:changesetId`,
|
|
249
|
+
handler: async (httpRequestContext, request) => auditableItemGraphChangesetGet(httpRequestContext, componentName, request),
|
|
250
|
+
requestType: {
|
|
251
|
+
type: "IAuditableItemGraphChangesetGetRequest",
|
|
252
|
+
examples: [
|
|
253
|
+
{
|
|
254
|
+
id: "auditableItemGraphChangesetGetRequestExample",
|
|
255
|
+
request: {
|
|
256
|
+
headers: {
|
|
257
|
+
[HeaderTypes.Accept]: MimeTypes.Json
|
|
258
|
+
},
|
|
259
|
+
pathParams: {
|
|
260
|
+
id: "aig:1234567890",
|
|
261
|
+
changesetId: "changeset:1234567890"
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
]
|
|
266
|
+
},
|
|
267
|
+
responseType: [
|
|
268
|
+
{
|
|
269
|
+
type: "IAuditableItemGraphChangesetGetResponse",
|
|
270
|
+
examples: [
|
|
271
|
+
{
|
|
272
|
+
id: "auditableItemGraphChangesetGetResponseExample",
|
|
273
|
+
response: {
|
|
274
|
+
body: {
|
|
275
|
+
"@context": [
|
|
276
|
+
AuditableItemGraphContexts.Context,
|
|
277
|
+
AuditableItemGraphContexts.ContextCommon
|
|
278
|
+
],
|
|
279
|
+
type: AuditableItemGraphTypes.Changeset,
|
|
280
|
+
id: "aig:1234567890",
|
|
281
|
+
dateCreated: "2024-08-22T11:55:16.271Z",
|
|
282
|
+
patches: [
|
|
283
|
+
{
|
|
284
|
+
type: "AuditableItemGraphPatchOperation",
|
|
285
|
+
patchOperation: "add",
|
|
286
|
+
patchPath: "/annotationObject",
|
|
287
|
+
patchValue: {
|
|
288
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
289
|
+
type: "Create",
|
|
290
|
+
actor: { type: "Person", id: "acct:person@example.org", name: "Person" },
|
|
291
|
+
object: { type: "Note", content: "This is a simple note" },
|
|
292
|
+
published: "2015-01-25T12:34:56Z"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
type: "AuditableItemGraphPatchOperation",
|
|
297
|
+
patchOperation: "add",
|
|
298
|
+
patchPath: "/aliases",
|
|
299
|
+
patchValue: [
|
|
300
|
+
{ id: "foo123", dateCreated: "2015-01-25T12:34:56Z" },
|
|
301
|
+
{ id: "bar456", dateCreated: "2015-01-25T12:34:56Z" }
|
|
302
|
+
]
|
|
303
|
+
}
|
|
304
|
+
],
|
|
305
|
+
verification: {
|
|
306
|
+
"@context": "https://schema.twindev.org/immutable-proof/",
|
|
307
|
+
type: "ImmutableProofVerification",
|
|
308
|
+
verified: true
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
]
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
type: "IAuditableItemGraphChangesetGetResponse",
|
|
317
|
+
mimeType: MimeTypes.JsonLd,
|
|
318
|
+
examples: [
|
|
319
|
+
{
|
|
320
|
+
id: "auditableItemGraphChangesetJsonLdGetResponseExample",
|
|
321
|
+
response: {
|
|
322
|
+
headers: {
|
|
323
|
+
[HeaderTypes.ContentType]: MimeTypes.JsonLd
|
|
324
|
+
},
|
|
325
|
+
body: {
|
|
326
|
+
"@context": [
|
|
327
|
+
AuditableItemGraphContexts.Context,
|
|
328
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
329
|
+
SchemaOrgContexts.Context
|
|
330
|
+
],
|
|
331
|
+
type: AuditableItemGraphTypes.Changeset,
|
|
332
|
+
id: "aig:1234567890",
|
|
333
|
+
dateCreated: "2024-08-22T11:55:16.271Z",
|
|
334
|
+
patches: [
|
|
335
|
+
{
|
|
336
|
+
type: "AuditableItemGraphPatchOperation",
|
|
337
|
+
patchOperation: "add",
|
|
338
|
+
patchPath: "/annotationObject",
|
|
339
|
+
patchValue: {
|
|
340
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
341
|
+
type: "Create",
|
|
342
|
+
actor: { type: "Person", id: "acct:person@example.org", name: "Person" },
|
|
343
|
+
object: { type: "Note", content: "This is a simple note" },
|
|
344
|
+
published: "2015-01-25T12:34:56Z"
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
type: "AuditableItemGraphPatchOperation",
|
|
349
|
+
patchOperation: "add",
|
|
350
|
+
patchPath: "/aliases",
|
|
351
|
+
patchValue: [
|
|
352
|
+
{ id: "foo123", dateCreated: "2015-01-25T12:34:56Z" },
|
|
353
|
+
{ id: "bar456", dateCreated: "2015-01-25T12:34:56Z" }
|
|
354
|
+
]
|
|
355
|
+
}
|
|
356
|
+
],
|
|
357
|
+
verification: {
|
|
358
|
+
"@context": "https://schema.twindev.org/immutable-proof/",
|
|
359
|
+
type: "ImmutableProofVerification",
|
|
360
|
+
verified: true
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
]
|
|
368
|
+
};
|
|
369
|
+
const getChangesetListRoute = {
|
|
370
|
+
operationId: "auditableItemGraphChangesetList",
|
|
371
|
+
summary: "Get a list of graph vertex changesets",
|
|
372
|
+
tag: tagsAuditableItemGraph[0].name,
|
|
373
|
+
method: "GET",
|
|
374
|
+
path: `${baseRouteName}/:id/changesets`,
|
|
375
|
+
handler: async (httpRequestContext, request) => auditableItemGraphChangesetList(httpRequestContext, componentName, request),
|
|
376
|
+
requestType: {
|
|
377
|
+
type: "IAuditableItemGraphChangesetListRequest",
|
|
378
|
+
examples: [
|
|
379
|
+
{
|
|
380
|
+
id: "auditableItemGraphChangesetListRequestExample",
|
|
381
|
+
request: {
|
|
382
|
+
headers: {
|
|
383
|
+
[HeaderTypes.Accept]: MimeTypes.Json
|
|
384
|
+
},
|
|
385
|
+
pathParams: {
|
|
386
|
+
id: "aig:1234567890"
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
]
|
|
391
|
+
},
|
|
392
|
+
responseType: [
|
|
393
|
+
{
|
|
394
|
+
type: "IAuditableItemGraphChangesetListResponse",
|
|
395
|
+
examples: [
|
|
396
|
+
{
|
|
397
|
+
id: "auditableItemGraphChangesetListResponseExample",
|
|
398
|
+
response: {
|
|
399
|
+
body: {
|
|
400
|
+
"@context": [
|
|
401
|
+
SchemaOrgContexts.Context,
|
|
402
|
+
AuditableItemGraphContexts.Context,
|
|
403
|
+
AuditableItemGraphContexts.ContextCommon
|
|
404
|
+
],
|
|
405
|
+
type: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.ChangesetList],
|
|
406
|
+
[SchemaOrgTypes.ItemListElement]: [
|
|
407
|
+
{
|
|
408
|
+
type: AuditableItemGraphTypes.Changeset,
|
|
409
|
+
id: "aig:1234567890",
|
|
410
|
+
dateCreated: "2024-08-22T11:55:16.271Z",
|
|
411
|
+
patches: [
|
|
412
|
+
{
|
|
413
|
+
type: "AuditableItemGraphPatchOperation",
|
|
414
|
+
patchOperation: "add",
|
|
415
|
+
patchPath: "/annotationObject",
|
|
416
|
+
patchValue: {
|
|
417
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
418
|
+
type: "Create",
|
|
419
|
+
actor: { type: "Person", id: "acct:person@example.org", name: "Person" },
|
|
420
|
+
object: { type: "Note", content: "This is a simple note" },
|
|
421
|
+
published: "2015-01-25T12:34:56Z"
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
type: "AuditableItemGraphPatchOperation",
|
|
426
|
+
patchOperation: "add",
|
|
427
|
+
patchPath: "/aliases",
|
|
428
|
+
patchValue: [
|
|
429
|
+
{ id: "foo123", dateCreated: "2015-01-25T12:34:56Z" },
|
|
430
|
+
{ id: "bar456", dateCreated: "2015-01-25T12:34:56Z" }
|
|
431
|
+
]
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
verification: {
|
|
435
|
+
"@context": "https://schema.twindev.org/immutable-proof/",
|
|
436
|
+
type: "ImmutableProofVerification",
|
|
437
|
+
verified: true
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
]
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
]
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
type: "IAuditableItemGraphChangesetGetResponse",
|
|
448
|
+
mimeType: MimeTypes.JsonLd,
|
|
449
|
+
examples: [
|
|
450
|
+
{
|
|
451
|
+
id: "auditableItemGraphChangesetJsonLdGetResponseExample",
|
|
452
|
+
response: {
|
|
453
|
+
headers: {
|
|
454
|
+
[HeaderTypes.ContentType]: MimeTypes.JsonLd
|
|
455
|
+
},
|
|
456
|
+
body: {
|
|
457
|
+
"@context": [
|
|
458
|
+
SchemaOrgContexts.Context,
|
|
459
|
+
AuditableItemGraphContexts.Context,
|
|
460
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
461
|
+
SchemaOrgContexts.Context
|
|
462
|
+
],
|
|
463
|
+
type: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.ChangesetList],
|
|
464
|
+
[SchemaOrgTypes.ItemListElement]: [
|
|
465
|
+
{
|
|
466
|
+
type: AuditableItemGraphTypes.Changeset,
|
|
467
|
+
id: "aig:1234567890",
|
|
468
|
+
dateCreated: "2024-08-22T11:55:16.271Z",
|
|
469
|
+
patches: [
|
|
470
|
+
{
|
|
471
|
+
type: "AuditableItemGraphPatchOperation",
|
|
472
|
+
patchOperation: "add",
|
|
473
|
+
patchPath: "/annotationObject",
|
|
474
|
+
patchValue: {
|
|
475
|
+
"@context": "https://www.w3.org/ns/activitystreams",
|
|
476
|
+
type: "Create",
|
|
477
|
+
actor: { type: "Person", id: "acct:person@example.org", name: "Person" },
|
|
478
|
+
object: { type: "Note", content: "This is a simple note" },
|
|
479
|
+
published: "2015-01-25T12:34:56Z"
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
type: "AuditableItemGraphPatchOperation",
|
|
484
|
+
patchOperation: "add",
|
|
485
|
+
patchPath: "/aliases",
|
|
486
|
+
patchValue: [
|
|
487
|
+
{ id: "foo123", dateCreated: "2015-01-25T12:34:56Z" },
|
|
488
|
+
{ id: "bar456", dateCreated: "2015-01-25T12:34:56Z" }
|
|
489
|
+
]
|
|
490
|
+
}
|
|
491
|
+
],
|
|
492
|
+
verification: {
|
|
493
|
+
"@context": "https://schema.twindev.org/immutable-proof/",
|
|
494
|
+
type: "ImmutableProofVerification",
|
|
495
|
+
verified: true
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
]
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
]
|
|
503
|
+
}
|
|
504
|
+
]
|
|
505
|
+
};
|
|
506
|
+
const getVersionRoute = {
|
|
507
|
+
operationId: "auditableItemGraphVersionGet",
|
|
508
|
+
summary: "Get a graph vertex at a specific version",
|
|
509
|
+
tag: tagsAuditableItemGraph[0].name,
|
|
510
|
+
method: "GET",
|
|
511
|
+
path: `${baseRouteName}/:id/versions/:version`,
|
|
512
|
+
handler: async (httpRequestContext, request) => auditableItemGraphVersionGet(httpRequestContext, componentName, request),
|
|
513
|
+
requestType: {
|
|
514
|
+
type: "IAuditableItemGraphVersionGetRequest",
|
|
515
|
+
examples: [
|
|
516
|
+
{
|
|
517
|
+
id: "auditableItemGraphVersionGetRequestExample",
|
|
518
|
+
request: {
|
|
519
|
+
headers: {
|
|
520
|
+
[HeaderTypes.Accept]: MimeTypes.Json
|
|
521
|
+
},
|
|
522
|
+
pathParams: {
|
|
523
|
+
id: "aig:1234567890",
|
|
524
|
+
version: "1"
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
]
|
|
529
|
+
},
|
|
530
|
+
responseType: [
|
|
531
|
+
{
|
|
532
|
+
type: "IAuditableItemGraphVersionGetResponse",
|
|
533
|
+
examples: [
|
|
534
|
+
{
|
|
535
|
+
id: "auditableItemGraphVersionGetResponseExample",
|
|
536
|
+
response: {
|
|
537
|
+
body: {
|
|
538
|
+
"@context": [
|
|
539
|
+
AuditableItemGraphContexts.Context,
|
|
540
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
541
|
+
SchemaOrgContexts.Context
|
|
542
|
+
],
|
|
543
|
+
type: AuditableItemGraphTypes.Vertex,
|
|
544
|
+
id: "aig:1234567890",
|
|
545
|
+
dateCreated: "2024-08-22T11:55:16.271Z",
|
|
546
|
+
version: 1
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
]
|
|
551
|
+
}
|
|
552
|
+
]
|
|
553
|
+
};
|
|
554
|
+
const getVersionListRoute = {
|
|
555
|
+
operationId: "auditableItemGraphVersionList",
|
|
556
|
+
summary: "Get all versions of a graph vertex",
|
|
557
|
+
tag: tagsAuditableItemGraph[0].name,
|
|
558
|
+
method: "GET",
|
|
559
|
+
path: `${baseRouteName}/:id/versions`,
|
|
560
|
+
handler: async (httpRequestContext, request) => auditableItemGraphVersionList(httpRequestContext, componentName, request),
|
|
561
|
+
requestType: {
|
|
562
|
+
type: "IAuditableItemGraphVersionListRequest",
|
|
563
|
+
examples: [
|
|
564
|
+
{
|
|
565
|
+
id: "auditableItemGraphVersionListRequestExample",
|
|
566
|
+
request: {
|
|
567
|
+
headers: {
|
|
568
|
+
[HeaderTypes.Accept]: MimeTypes.Json
|
|
569
|
+
},
|
|
570
|
+
pathParams: {
|
|
571
|
+
id: "aig:1234567890"
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
id: "auditableItemGraphVersionListAfterRequestExample",
|
|
577
|
+
request: {
|
|
578
|
+
pathParams: {
|
|
579
|
+
id: "aig:1234567890"
|
|
580
|
+
},
|
|
581
|
+
query: {
|
|
582
|
+
after: "2026-04-03T12:00:00Z"
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
]
|
|
587
|
+
},
|
|
588
|
+
responseType: [
|
|
589
|
+
{
|
|
590
|
+
type: "IAuditableItemGraphVersionListResponse",
|
|
591
|
+
examples: [
|
|
592
|
+
{
|
|
593
|
+
id: "auditableItemGraphVersionListResponseExample",
|
|
594
|
+
response: {
|
|
595
|
+
body: {
|
|
596
|
+
"@context": [
|
|
597
|
+
SchemaOrgContexts.Context,
|
|
598
|
+
AuditableItemGraphContexts.Context,
|
|
599
|
+
AuditableItemGraphContexts.ContextCommon
|
|
600
|
+
],
|
|
601
|
+
type: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.VertexVersionList],
|
|
602
|
+
[SchemaOrgTypes.ItemListElement]: [
|
|
603
|
+
{ version: 0, dateCreated: "2024-08-22T11:55:16.271Z" },
|
|
604
|
+
{ version: 1, dateCreated: "2024-08-22T11:56:00.000Z" },
|
|
605
|
+
{ version: 2, dateCreated: "2024-08-22T11:57:00.000Z" }
|
|
606
|
+
]
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
]
|
|
611
|
+
}
|
|
612
|
+
]
|
|
613
|
+
};
|
|
232
614
|
const updateRoute = {
|
|
233
615
|
operationId: "auditableItemGraphUpdate",
|
|
234
616
|
summary: "Update a graph vertex",
|
|
@@ -246,6 +628,11 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
246
628
|
id: "aig:1234567890"
|
|
247
629
|
},
|
|
248
630
|
body: {
|
|
631
|
+
"@context": [
|
|
632
|
+
AuditableItemGraphContexts.Context,
|
|
633
|
+
AuditableItemGraphContexts.ContextCommon
|
|
634
|
+
],
|
|
635
|
+
type: AuditableItemGraphTypes.Vertex,
|
|
249
636
|
annotationObject: {
|
|
250
637
|
"@context": "https://schema.org",
|
|
251
638
|
"@type": "Note",
|
|
@@ -253,6 +640,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
253
640
|
},
|
|
254
641
|
aliases: [
|
|
255
642
|
{
|
|
643
|
+
type: AuditableItemGraphTypes.Alias,
|
|
256
644
|
id: "bar456",
|
|
257
645
|
annotationObject: {
|
|
258
646
|
"@context": "https://schema.org",
|
|
@@ -261,6 +649,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
261
649
|
}
|
|
262
650
|
},
|
|
263
651
|
{
|
|
652
|
+
type: AuditableItemGraphTypes.Alias,
|
|
264
653
|
id: "foo321",
|
|
265
654
|
annotationObject: {
|
|
266
655
|
"@context": "https://schema.org",
|
|
@@ -271,6 +660,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
271
660
|
],
|
|
272
661
|
resources: [
|
|
273
662
|
{
|
|
663
|
+
type: AuditableItemGraphTypes.Resource,
|
|
274
664
|
id: "resource1",
|
|
275
665
|
resourceObject: {
|
|
276
666
|
"@context": "https://schema.org",
|
|
@@ -279,6 +669,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
279
669
|
}
|
|
280
670
|
},
|
|
281
671
|
{
|
|
672
|
+
type: AuditableItemGraphTypes.Resource,
|
|
282
673
|
id: "resource2",
|
|
283
674
|
resourceObject: {
|
|
284
675
|
"@context": "https://schema.org",
|
|
@@ -289,6 +680,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
289
680
|
],
|
|
290
681
|
edges: [
|
|
291
682
|
{
|
|
683
|
+
type: AuditableItemGraphTypes.Edge,
|
|
292
684
|
id: "edge1",
|
|
293
685
|
targetId: "aig:1234567890",
|
|
294
686
|
edgeRelationships: ["frenemy"],
|
|
@@ -299,6 +691,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
299
691
|
}
|
|
300
692
|
},
|
|
301
693
|
{
|
|
694
|
+
type: AuditableItemGraphTypes.Edge,
|
|
302
695
|
id: "edge2",
|
|
303
696
|
targetId: "aig:45678901234",
|
|
304
697
|
edgeRelationships: ["end"],
|
|
@@ -320,6 +713,47 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
320
713
|
}
|
|
321
714
|
]
|
|
322
715
|
};
|
|
716
|
+
const updatePartialRoute = {
|
|
717
|
+
operationId: "auditableItemGraphUpdatePartial",
|
|
718
|
+
summary: "Partially update a graph vertex",
|
|
719
|
+
tag: tagsAuditableItemGraph[0].name,
|
|
720
|
+
method: "PATCH",
|
|
721
|
+
path: `${baseRouteName}/:id`,
|
|
722
|
+
handler: async (httpRequestContext, request) => auditableItemGraphUpdatePartial(httpRequestContext, componentName, request),
|
|
723
|
+
requestType: {
|
|
724
|
+
type: "IAuditableItemGraphUpdatePartialRequest",
|
|
725
|
+
examples: [
|
|
726
|
+
{
|
|
727
|
+
id: "auditableItemGraphUpdatePartialRequestExample",
|
|
728
|
+
request: {
|
|
729
|
+
pathParams: {
|
|
730
|
+
id: "aig:1234567890"
|
|
731
|
+
},
|
|
732
|
+
body: {
|
|
733
|
+
"@context": [
|
|
734
|
+
AuditableItemGraphContexts.Context,
|
|
735
|
+
AuditableItemGraphContexts.ContextCommon
|
|
736
|
+
],
|
|
737
|
+
edgePatches: {
|
|
738
|
+
add: [
|
|
739
|
+
{
|
|
740
|
+
type: AuditableItemGraphTypes.Edge,
|
|
741
|
+
targetId: "aig:45678901234",
|
|
742
|
+
edgeRelationships: ["document"]
|
|
743
|
+
}
|
|
744
|
+
]
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
]
|
|
750
|
+
},
|
|
751
|
+
responseType: [
|
|
752
|
+
{
|
|
753
|
+
type: "INoContentResponse"
|
|
754
|
+
}
|
|
755
|
+
]
|
|
756
|
+
};
|
|
323
757
|
const listRoute = {
|
|
324
758
|
operationId: "auditableItemGraphList",
|
|
325
759
|
summary: "Query graph vertices by id or alias",
|
|
@@ -353,17 +787,17 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
353
787
|
response: {
|
|
354
788
|
body: {
|
|
355
789
|
"@context": [
|
|
356
|
-
SchemaOrgContexts.
|
|
357
|
-
AuditableItemGraphContexts.
|
|
358
|
-
AuditableItemGraphContexts.
|
|
790
|
+
SchemaOrgContexts.Context,
|
|
791
|
+
AuditableItemGraphContexts.Context,
|
|
792
|
+
AuditableItemGraphContexts.ContextCommon
|
|
359
793
|
],
|
|
360
794
|
type: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.VertexList],
|
|
361
795
|
[SchemaOrgTypes.ItemListElement]: [
|
|
362
796
|
{
|
|
363
797
|
"@context": [
|
|
364
|
-
AuditableItemGraphContexts.
|
|
365
|
-
AuditableItemGraphContexts.
|
|
366
|
-
SchemaOrgContexts.
|
|
798
|
+
AuditableItemGraphContexts.Context,
|
|
799
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
800
|
+
SchemaOrgContexts.Context
|
|
367
801
|
],
|
|
368
802
|
type: AuditableItemGraphTypes.Vertex,
|
|
369
803
|
id: "0101010101010101010101010101010101010101010101010101010101010101",
|
|
@@ -371,9 +805,9 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
371
805
|
aliases: [
|
|
372
806
|
{
|
|
373
807
|
"@context": [
|
|
374
|
-
AuditableItemGraphContexts.
|
|
375
|
-
AuditableItemGraphContexts.
|
|
376
|
-
SchemaOrgContexts.
|
|
808
|
+
AuditableItemGraphContexts.Context,
|
|
809
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
810
|
+
SchemaOrgContexts.Context
|
|
377
811
|
],
|
|
378
812
|
type: AuditableItemGraphTypes.Alias,
|
|
379
813
|
id: "foo4",
|
|
@@ -381,8 +815,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
381
815
|
}
|
|
382
816
|
]
|
|
383
817
|
}
|
|
384
|
-
]
|
|
385
|
-
[SchemaOrgTypes.NextItem]: "1"
|
|
818
|
+
]
|
|
386
819
|
}
|
|
387
820
|
}
|
|
388
821
|
}
|
|
@@ -400,17 +833,17 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
400
833
|
},
|
|
401
834
|
body: {
|
|
402
835
|
"@context": [
|
|
403
|
-
SchemaOrgContexts.
|
|
404
|
-
AuditableItemGraphContexts.
|
|
405
|
-
AuditableItemGraphContexts.
|
|
836
|
+
SchemaOrgContexts.Context,
|
|
837
|
+
AuditableItemGraphContexts.Context,
|
|
838
|
+
AuditableItemGraphContexts.ContextCommon
|
|
406
839
|
],
|
|
407
840
|
type: [SchemaOrgTypes.ItemList, AuditableItemGraphTypes.VertexList],
|
|
408
841
|
[SchemaOrgTypes.ItemListElement]: [
|
|
409
842
|
{
|
|
410
843
|
"@context": [
|
|
411
|
-
AuditableItemGraphContexts.
|
|
412
|
-
AuditableItemGraphContexts.
|
|
413
|
-
SchemaOrgContexts.
|
|
844
|
+
AuditableItemGraphContexts.Context,
|
|
845
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
846
|
+
SchemaOrgContexts.Context
|
|
414
847
|
],
|
|
415
848
|
type: AuditableItemGraphTypes.Vertex,
|
|
416
849
|
id: "0101010101010101010101010101010101010101010101010101010101010101",
|
|
@@ -418,9 +851,9 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
418
851
|
aliases: [
|
|
419
852
|
{
|
|
420
853
|
"@context": [
|
|
421
|
-
AuditableItemGraphContexts.
|
|
422
|
-
AuditableItemGraphContexts.
|
|
423
|
-
SchemaOrgContexts.
|
|
854
|
+
AuditableItemGraphContexts.Context,
|
|
855
|
+
AuditableItemGraphContexts.ContextCommon,
|
|
856
|
+
SchemaOrgContexts.Context
|
|
424
857
|
],
|
|
425
858
|
type: AuditableItemGraphTypes.Alias,
|
|
426
859
|
id: "foo4",
|
|
@@ -428,8 +861,7 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
428
861
|
}
|
|
429
862
|
]
|
|
430
863
|
}
|
|
431
|
-
]
|
|
432
|
-
[SchemaOrgTypes.NextItem]: "1"
|
|
864
|
+
]
|
|
433
865
|
}
|
|
434
866
|
}
|
|
435
867
|
}
|
|
@@ -437,7 +869,17 @@ export function generateRestRoutesAuditableItemGraph(baseRouteName, componentNam
|
|
|
437
869
|
}
|
|
438
870
|
]
|
|
439
871
|
};
|
|
440
|
-
return [
|
|
872
|
+
return [
|
|
873
|
+
createRoute,
|
|
874
|
+
getRoute,
|
|
875
|
+
getVersionRoute,
|
|
876
|
+
getVersionListRoute,
|
|
877
|
+
getChangesetRoute,
|
|
878
|
+
getChangesetListRoute,
|
|
879
|
+
updateRoute,
|
|
880
|
+
updatePartialRoute,
|
|
881
|
+
listRoute
|
|
882
|
+
];
|
|
441
883
|
}
|
|
442
884
|
/**
|
|
443
885
|
* Create the graph vertex.
|
|
@@ -469,22 +911,74 @@ export async function auditableItemGraphGet(httpRequestContext, componentName, r
|
|
|
469
911
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
470
912
|
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
471
913
|
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
|
|
472
|
-
const mimeType = request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? "jsonld" : "json";
|
|
473
914
|
const component = ComponentFactory.get(componentName);
|
|
474
915
|
const result = await component.get(request.pathParams.id, {
|
|
475
916
|
includeDeleted: Coerce.boolean(request.query?.includeDeleted),
|
|
476
|
-
includeChangesets: Coerce.boolean(request.query?.includeChangesets),
|
|
477
917
|
verifySignatureDepth: request.query?.verifySignatureDepth
|
|
478
918
|
});
|
|
479
919
|
return {
|
|
480
920
|
headers: {
|
|
481
|
-
[HeaderTypes.ContentType]:
|
|
921
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
922
|
+
? MimeTypes.JsonLd
|
|
923
|
+
: MimeTypes.Json
|
|
924
|
+
},
|
|
925
|
+
body: result
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
/**
|
|
929
|
+
* Get the graph vertex changeset list.
|
|
930
|
+
* @param httpRequestContext The request context for the API.
|
|
931
|
+
* @param componentName The name of the component to use in the routes.
|
|
932
|
+
* @param request The request.
|
|
933
|
+
* @returns The response object with additional http response properties.
|
|
934
|
+
*/
|
|
935
|
+
export async function auditableItemGraphChangesetList(httpRequestContext, componentName, request) {
|
|
936
|
+
Guards.object(ROUTES_SOURCE, "request", request);
|
|
937
|
+
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
938
|
+
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
|
|
939
|
+
const component = ComponentFactory.get(componentName);
|
|
940
|
+
const result = await component.getChangesets(request.pathParams.id, request.query?.cursor, Coerce.integer(request.query?.limit), {
|
|
941
|
+
verifySignatureDepth: request.query?.verifySignatureDepth
|
|
942
|
+
});
|
|
943
|
+
const headers = {
|
|
944
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
|
|
945
|
+
};
|
|
946
|
+
const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
|
|
947
|
+
if (Is.stringValue(result.cursor)) {
|
|
948
|
+
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
|
|
949
|
+
}
|
|
950
|
+
return {
|
|
951
|
+
headers,
|
|
952
|
+
body: result.changesets
|
|
953
|
+
};
|
|
954
|
+
}
|
|
955
|
+
/**
|
|
956
|
+
* Get the graph vertex changeset.
|
|
957
|
+
* @param httpRequestContext The request context for the API.
|
|
958
|
+
* @param componentName The name of the component to use in the routes.
|
|
959
|
+
* @param request The request.
|
|
960
|
+
* @returns The response object with additional http response properties.
|
|
961
|
+
*/
|
|
962
|
+
export async function auditableItemGraphChangesetGet(httpRequestContext, componentName, request) {
|
|
963
|
+
Guards.object(ROUTES_SOURCE, "request", request);
|
|
964
|
+
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
965
|
+
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
|
|
966
|
+
const component = ComponentFactory.get(componentName);
|
|
967
|
+
const changesetUrn = `${request.pathParams.id}:changeset:${request.pathParams.changesetId}`;
|
|
968
|
+
const result = await component.getChangeset(changesetUrn, {
|
|
969
|
+
verifySignatureDepth: request.query?.verifySignatureDepth
|
|
970
|
+
});
|
|
971
|
+
return {
|
|
972
|
+
headers: {
|
|
973
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
974
|
+
? MimeTypes.JsonLd
|
|
975
|
+
: MimeTypes.Json
|
|
482
976
|
},
|
|
483
977
|
body: result
|
|
484
978
|
};
|
|
485
979
|
}
|
|
486
980
|
/**
|
|
487
|
-
* Update the graph vertex.
|
|
981
|
+
* Update the graph vertex (PUT — full replacement of vertex state).
|
|
488
982
|
* @param httpRequestContext The request context for the API.
|
|
489
983
|
* @param componentName The name of the component to use in the routes.
|
|
490
984
|
* @param request The request.
|
|
@@ -501,6 +995,24 @@ export async function auditableItemGraphUpdate(httpRequestContext, componentName
|
|
|
501
995
|
statusCode: HttpStatusCode.noContent
|
|
502
996
|
};
|
|
503
997
|
}
|
|
998
|
+
/**
|
|
999
|
+
* Partially update the graph vertex (PATCH — optional scalars; list fields use `{ add, remove }`).
|
|
1000
|
+
* @param httpRequestContext The request context for the API.
|
|
1001
|
+
* @param componentName The name of the component to use in the routes.
|
|
1002
|
+
* @param request The request.
|
|
1003
|
+
* @returns The response object with additional http response properties.
|
|
1004
|
+
*/
|
|
1005
|
+
export async function auditableItemGraphUpdatePartial(httpRequestContext, componentName, request) {
|
|
1006
|
+
Guards.object(ROUTES_SOURCE, "request", request);
|
|
1007
|
+
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
1008
|
+
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
|
|
1009
|
+
Guards.object(ROUTES_SOURCE, "request.body", request.body);
|
|
1010
|
+
const component = ComponentFactory.get(componentName);
|
|
1011
|
+
await component.updatePartial({ ...request.body, id: request.pathParams.id });
|
|
1012
|
+
return {
|
|
1013
|
+
statusCode: HttpStatusCode.noContent
|
|
1014
|
+
};
|
|
1015
|
+
}
|
|
504
1016
|
/**
|
|
505
1017
|
* Query the graph vertices.
|
|
506
1018
|
* @param httpRequestContext The request context for the API.
|
|
@@ -511,7 +1023,7 @@ export async function auditableItemGraphUpdate(httpRequestContext, componentName
|
|
|
511
1023
|
export async function auditableItemGraphList(httpRequestContext, componentName, request) {
|
|
512
1024
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
513
1025
|
Guards.object(ROUTES_SOURCE, "request.query", request.query);
|
|
514
|
-
const
|
|
1026
|
+
const hostingComponent = ComponentFactory.get(httpRequestContext.hostingComponentType ?? "hosting");
|
|
515
1027
|
const component = ComponentFactory.get(componentName);
|
|
516
1028
|
const result = await component.query({
|
|
517
1029
|
id: request.query?.id,
|
|
@@ -519,9 +1031,62 @@ export async function auditableItemGraphList(httpRequestContext, componentName,
|
|
|
519
1031
|
idExact: Coerce.boolean(request.query?.idExact),
|
|
520
1032
|
resourceTypes: HttpParameterHelper.arrayFromString(request.query?.resourceTypes)
|
|
521
1033
|
}, HttpParameterHelper.objectFromString(request.query?.conditions), request.query?.orderBy, request.query?.orderByDirection, HttpParameterHelper.arrayFromString(request.query?.properties), request.query?.cursor, Coerce.integer(request.query?.limit));
|
|
1034
|
+
const headers = {
|
|
1035
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd ? MimeTypes.JsonLd : MimeTypes.Json
|
|
1036
|
+
};
|
|
1037
|
+
if (Is.stringValue(result.cursor)) {
|
|
1038
|
+
headers[HeaderTypes.Link] = HeaderHelper.createLinkHeader(await hostingComponent.buildPublicUrl(httpRequestContext.serverRequest.url), { cursor: result.cursor }, "next");
|
|
1039
|
+
}
|
|
1040
|
+
return {
|
|
1041
|
+
headers,
|
|
1042
|
+
body: result.entries
|
|
1043
|
+
};
|
|
1044
|
+
}
|
|
1045
|
+
/**
|
|
1046
|
+
* Get the graph vertex at a specific version.
|
|
1047
|
+
* @param httpRequestContext The request context for the API.
|
|
1048
|
+
* @param componentName The name of the component to use in the routes.
|
|
1049
|
+
* @param request The request.
|
|
1050
|
+
* @returns The response object with additional http response properties.
|
|
1051
|
+
*/
|
|
1052
|
+
export async function auditableItemGraphVersionGet(httpRequestContext, componentName, request) {
|
|
1053
|
+
Guards.object(ROUTES_SOURCE, "request", request);
|
|
1054
|
+
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
1055
|
+
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
|
|
1056
|
+
const version = Coerce.integer(request.pathParams.version);
|
|
1057
|
+
Guards.integer(ROUTES_SOURCE, "request.pathParams.version", version);
|
|
1058
|
+
const component = ComponentFactory.get(componentName);
|
|
1059
|
+
const result = await component.getVersion(request.pathParams.id, version);
|
|
1060
|
+
return {
|
|
1061
|
+
headers: {
|
|
1062
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
1063
|
+
? MimeTypes.JsonLd
|
|
1064
|
+
: MimeTypes.Json
|
|
1065
|
+
},
|
|
1066
|
+
body: result
|
|
1067
|
+
};
|
|
1068
|
+
}
|
|
1069
|
+
/**
|
|
1070
|
+
* Get all versions of a graph vertex.
|
|
1071
|
+
* @param httpRequestContext The request context for the API.
|
|
1072
|
+
* @param componentName The name of the component to use in the routes.
|
|
1073
|
+
* @param request The request.
|
|
1074
|
+
* @returns The response object with additional http response properties.
|
|
1075
|
+
*/
|
|
1076
|
+
export async function auditableItemGraphVersionList(httpRequestContext, componentName, request) {
|
|
1077
|
+
Guards.object(ROUTES_SOURCE, "request", request);
|
|
1078
|
+
Guards.object(ROUTES_SOURCE, "request.pathParams", request.pathParams);
|
|
1079
|
+
Guards.stringValue(ROUTES_SOURCE, "request.pathParams.id", request.pathParams.id);
|
|
1080
|
+
const component = ComponentFactory.get(componentName);
|
|
1081
|
+
const result = await component.getVersions(request.pathParams.id, {
|
|
1082
|
+
after: request.query?.after,
|
|
1083
|
+
before: request.query?.before
|
|
1084
|
+
});
|
|
522
1085
|
return {
|
|
523
1086
|
headers: {
|
|
524
|
-
[HeaderTypes.ContentType]:
|
|
1087
|
+
[HeaderTypes.ContentType]: request.headers?.[HeaderTypes.Accept] === MimeTypes.JsonLd
|
|
1088
|
+
? MimeTypes.JsonLd
|
|
1089
|
+
: MimeTypes.Json
|
|
525
1090
|
},
|
|
526
1091
|
body: result
|
|
527
1092
|
};
|